LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制。LVM通过在硬盘和文件系统之间添加一个逻辑层,来为文件系统屏蔽下层硬盘分区布局,提高硬盘分区管理的灵活性,
LVM简介
LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制。LVM通过在硬盘和文件系统之间添加一个逻辑层,来为文件系统屏蔽下层硬盘分区布局,提高硬盘分区管理的灵活性.
使用LVM管理硬盘的基本过程如下:
- 将硬盘创建为物理卷
- 将多个物理卷组合成卷组
- 在卷组中创建逻辑卷
- 在逻辑卷之上创建文件系统
- 通过LVM管理硬盘之后,文件系统不再受限于硬盘的大小,可以分布在多个硬盘上,也可以动态扩容。
LVM基本概念
- 物理存储介质(The physical media):指系统的物理存储设备,如硬盘,系统中为/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。
- 物理卷(Physical Volume,PV):指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块。物理卷包括一个特殊的标签,该标签默认存放在第二个 512 字节扇区,但也可以将标签放在最开始的四个扇区之一。该标签包含物理卷的随机唯一识别符(UUID),记录块设备的大小和LVM元数据在设备中的存储位置。
- 卷组(Volume Group,VG):由物理卷组成,屏蔽了底层物理卷细节。可在卷组上创建一个或多个逻辑卷且不用考虑具体的物理卷信息。
- 逻辑卷(Logical Volume,LV):卷组不能直接用,需要划分成逻辑卷才能使用。逻辑卷可以格式化成不同的文件系统,挂载后直接使用。
- 物理块(Physical Extent,PE):物理卷以大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。
- 逻辑块(Logical Extent,LE):逻辑卷以“块”为单位存储,在一卷组中的所有逻辑卷的块大小是相同的。
安装
1
2
|
sudo apt update
sudo apt install lvm2
|
管理物理卷 PV
创建物理卷
1
2
3
4
|
pvcreate [option] devname ...
示例:将/dev/sdb、/dev/sdc创建为物理卷。
# pvcreate /dev/sdb /dev/sdc
|
查看物理卷
1
2
3
4
|
pvdisplay [option] devname
示例:显示物理卷/dev/sdb的基本信息。
# pvdisplay /dev/sdb
|
删除物理卷
1
2
3
4
|
pvremove [option] pvname ...
示例:删除物理卷/dev/sdb。如果物理卷已经加入卷组,需要先删除卷组或者从卷组中移除,再删除物理卷。
# pvremove /dev/sdb
|
管理卷组 VG
创建卷组
1
2
3
4
|
vgcreate [option] vgname pvname ...
示例:创建卷组 vg1,并且将物理卷/dev/sdb和/dev/sdc添加到卷组中。
# vgcreate vg1 /dev/sdb /dev/sdc
|
查看卷组
1
2
3
4
|
vgdisplay [option] [vgname]
示例:显示卷组vg1的基本信息。
# vgdisplay vg1
|
扩展卷组
1
2
3
4
|
vgextend [option] vgname pvname ...
示例:将卷组vg1中添加物理卷/dev/sdb。
# vgextend vg1 /dev/sdb
|
收缩卷组
1
2
3
4
|
vgreduce [option] vgname pvname ...
示例:从卷组vg1中移除物理卷/dev/sdb2。
# vgreduce vg1 /dev/sdb2
|
删除卷组
1
2
3
4
|
vgremove [option] vgname
示例:删除卷组vg1。
# vgremove vg1
|
管理逻辑卷 LV
创建逻辑卷
1
2
3
4
5
6
7
|
lvcreate [option] vgname
示例1:在卷组vg1中创建10G大小的逻辑卷。
# lvcreate -L 10G vg1
示例2:在卷组vg1中创建200M的逻辑卷,并命名为lv1。
# lvcreate -L 200M -n lv1 vg1
|
查看逻辑卷
1
2
3
4
|
lvdisplay [option] [lvname]
示例:显示逻辑卷lv1的基本信息。
# lvdisplay /dev/vg1/lv1
|
调整逻辑卷大小
1
2
3
4
5
6
7
8
9
10
|
lvresize [option] vgname
示例1:为逻辑卷/dev/vg1/lv1增加200M空间。
# lvresize -L +200 /dev/vg1/lv1
示例2:为逻辑卷/dev/vg1/lv1减少200M空间。
# lvresize -L -200 /dev/vg1/lv1
示例3:为逻辑卷/dev/vg1/lv1增加所有可用空间
# lvresize -l +100%FREE /dev/vg1/lv1
|
扩展逻辑卷
1
2
3
4
5
6
7
|
lvextend [option] lvname
示例1:为逻辑卷/dev/vg1/lv1增加100M空间。
# lvextend -L +100M /dev/vg1/lv1
示例2:为逻辑卷/dev/vg1/lv1增加所有可用空间
# lvextend -l +100%FREE /dev/vg1/lv1
|
收缩逻辑卷
1
2
3
4
|
lvreduce [option] lvname
示例:将逻辑卷/dev/vg1/lv1的空间减少100M。
# lvreduce -L -100M /dev/vg1/lv1
|
删除逻辑卷
1
2
3
4
|
lvremove [option] vgname
示例:删除逻辑卷/dev/vg1/lv1。
# lvremove /dev/vg1/lv1
|
创建并挂载文件系统
创建文件系统
1
2
3
4
|
mkfs [option] lvname
示例:在逻辑卷/dev/vg1/lv1上创建ext4文件系统。
# mkfs -t ext4 /dev/vg1/lv1
|
手动挂载文件系统
1
2
3
4
|
mount lvname mntpath
示例:将逻辑卷/dev/vg1/lv1挂载到/mnt/data目录。
# mount /dev/vg1/lv1 /mnt/data
|
扩展文件系统
扩展逻辑卷LV后, 分区大小还会保持原状, 需要手动扩展分区,下面以ext4文件系统为例:
1
2
3
4
5
6
|
先把分区umount
umount /dev/vg1/lv1
检查并修复文件系统的错误
e2fsck -f /dev/vg1/lv1
扩展文件系统到所有分区空间
resize2fs /dev/vg1/lv1
|
另外看到也可以不umount直接在线调整分区大小
1
2
|
扩展文件系统到所有分区空间
resize2fs /dev/vg1/lv1
|