Linux-LVM
参考文献
- 如何扩大ubuntu的ubuntu–vg-ubuntu–lv空间
- 解决 Linux /dev/mapper/ubuntu–vg-ubuntu–lv 磁盘空间不足的问题
- LVM——让Linux磁盘空间的弹性管理
LVM
LVM(Logical Volume Manager)
逻辑卷管理是在Linux2.4
内核以上实现的磁盘管理技术
相关名词解释
Physical Volume(PV)
- 物理卷,将实际的磁盘分区(
partition
)系统识别码(system ID)修改为8e后,在通过pvcreate指令转化为LVM最底层的物理卷,作为后续空间管理的基础.
Volume Group(VG)
- 卷组,将数个PV进行整合,即形成了VG,在32位的操作系统中,LV的大小与PE的大小有关;在64位的操作系统中,LV几乎没有容量限制.
Physical Extent(PE)
- 物理区块,他是LVM中的最小存储单元.PE类似于文件系统中的block.
Logical Volume(LV)
- 逻辑卷,由VG划分而来,LV的大小与PE的大小及PE的数量有关,
Size(LV)= Count(PE)* Size(PE)
工作原理
- 它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用.在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作.比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式.
建立PV
和PV
的查询
pvcreate
: 将实体partition
建立成为 PVpvscan
: 搜寻目前系统里面任何具有 PV 的磁盘pvdisplay
: 显示出目前系统上面的 PV 状态pvremove
: 将 PV 属性移除,让该partition
不具有 PV 属性partprobe
: 这个指令可以让核心立刻读入最新的partition
table 而不必 reboot
建立VG
vgcreate
: 就是主要建立VG
的指令啦vgscan
: 搜寻系统上面是否有VG
存在vgdisplay
: 显示目前系统上面的VG
状态vgextend
: 在VG
内增加额外的 PVvgreduce
: 在VG
内移除 PVvgchange
: 设定VG
是否启动 (active)vgremove
: 删除一个 VG
建立LV
lvcreate
: 建立 LVlvscan
: 查询系统上面的 LVlvdisplay
: 显示系统上面的 LV 状态lvextend
: 在 LV 里面增加容量lvreduce
: 在 LV 里面减少容量lvremove
: 删除一个 LVlvresize
: 对 LV 进行容量大小的调整
总结
任务 | PV | VG | LV |
---|---|---|---|
搜索(scan ) |
pvscan |
vgscan |
lvscan |
创建(create ) |
pvcreate |
vgcreate |
lvcreate |
列举(display ) |
pvdisplay |
vgdisplay |
lvdisplay |
增加(extend ) |
vgextend |
lvextend |
|
减少(reduce ) |
vgreduce |
lvreduce |
|
删除(remove ) |
pvremove |
vgremove |
lvremove |
改变容量(resize ) |
lvresize |
||
修改名称(rename ) |
lvrename |
1 | lvrename /dev/<卷组名>/<旧逻辑卷名> <新逻辑卷名> |
遇到的问题
Linux /dev/mapper/ubuntu–vg-ubuntu–lv
磁盘满了怎么解决
1 | # df -h |
- 使用
vgdisplay
显示存在的卷组
1 | # sudo vgdisplay |
-
使用
lvextend
扩容,使用resize2fs
执行调整-
使用说明
1
2
3
4
5
6
7lvextend -L 120G /dev/mapper/ubuntu--vg-ubuntu--lv //增大至120G
lvextend -L +20G /dev/mapper/ubuntu--vg-ubuntu--lv //增加20G
lvreduce -L 50G /dev/mapper/ubuntu--vg-ubuntu--lv //减小至50G
lvreduce -L -8G /dev/mapper/ubuntu--vg-ubuntu--lv //减小8G
lvresize -L 30G /dev/mapper/ubuntu--vg-ubuntu--lv //调整为30G
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv //执行调整1
2# sudo lvresize -L +249G /dev/mapper/ubuntu--vg-ubuntu--lv
# sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
-
-
调整后
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# df -h
Filesystem Size Used Avail Use% Mounted on
udev 47G 0 47G 0% /dev
tmpfs 9.5G 2.0M 9.5G 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 433G 191G 223G 47% /
tmpfs 48G 0 48G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 48G 0 48G 0% /sys/fs/cgroup
/dev/sda2 974M 288M 620M 32% /boot
/dev/sdb 7.3T 724G 6.2T 11% /home
/dev/sda1 511M 6.7M 505M 2% /boot/efi
tmpfs 9.5G 0 9.5G 0% /run/user/0
overlay 7.3T 724G 6.2T 11% /home/docker/overlay2/ed0ac3d52e7e6964d6657099d1da21cf39ec53568efbdf1c8ab3b75a52828789/merged
overlay 7.3T 724G 6.2T 11% /home/docker/overlay2/9087fcddfdcd16c1550773f161407bd74523e8405f78ad274b6023ff9764faf2/merged
shm 64M 0 64M 0% /home/docker/containers/d4fc833dc4b02c4ef7d74d602c3e956b9068dc87f2b616ee70be76f770811459/mounts/shm
overlay 7.3T 724G 6.2T 11% /home/docker/overlay2/ca42d051d3f7b74f5270725f10339c869655a11c32a713d84434243e18659889/merged
tmpfs 9.5G 0 9.5G 0% /run/user/1002
tmpfs 9.5G 0 9.5G 0% /run/user/10011
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# sudo vgdisplay
--- Volume group ---
VGName ubuntu-vg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 8
VGAccess read/write
VGStatus resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VGSize 445.12 GiB
PE Size 4.00 MiB
Total PE 113951
Alloc PE / Size 112640 / 440.00 GiB
Free PE / Size 1311 / 5.12 GiB
VGUUID 8M0qEi-Qk87-09w9-7NOa-n3bt-pmfI-rjogej
实例
使用LVM
1 | apt install lvm2 |
-
查看硬盘情况
1
2fdisk -l
lsblk -l
使用parted
硬盘格式化
-
执行
parted 硬盘路径
如parted /dev/sdb
-
根据提示输入
mklabel gpt
,将MBR
分区转换为GPT
分区 -
运行
mkpart primary ext4
-
划分一个采用
ext4
文件系统的主分区,并设置分区的开始位置和结束位置.1
2
3(parted) mkpart primary ext4
Start? 0%
End? 100% -
如果一个数据盘只有一个分区,则运行
mkpart primary ext4 0 -1
(负一) -
执行后会有如下提示,输入
i
忽略1
2warning: The resulting partition is not properly aligned for best performance.
Ignore/Cancel
-
-
使用
print
命令打印磁盘信息 -
使用
toggle
更改磁盘类型,使用toggle 1 lvm
,然后运行quit
命令退出parted
操作
使用partprobe
,使系统重读分区表
使用LVM
- 使用
pvcreate /dev/sdb1
- 使用
pvdisplay
查看pv
情况 - 创建卷组
VG
- 使用
vgscan
查看vg
情况 - 使用
vgcreate data-lvm /dev/sdb1
来创建名为data-lvm
的vg
并将/dev/sdb1
加入
- 使用
- 创建
lv
(lv
是真正用来写数据)lvcreate -l 100%free -n bigdata data-lvm
- 查看
lv
,lvdisplay
,ls -l /dev/data-lvm/bigdata
1 | pvcreate /dev/sdX |
制作文件系统并挂载到系统上
1 | # apt install xfsprogs |
验证检查
1 | df -h |
扩容
-
新增磁盘
/dev/sdc
1
2
3
4
5
6
7parted /dev/sdc
mklabel gpt
mkpart primary ext4 0% 100%
toggle 1 lvm
print
quit
partprobe -
将普通磁盘转换为
pv
1
pvcreate /dev/sdc1
-
将新的磁盘加入
vg
1
vgextend data-lvm /dev/sdc1
-
扩容
lv
1
lvextend -l +100%free /dev/data-lvm/bigdata
-
使用
resize2fs
来更新1
2
3resize2fs /dev/data-lvm/bigdata
xfs_growfs /dev/data-lvm/bigdata
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HoleLin's Blog!