1. 逻辑卷LVM
LVM(Logical Volume Manager)逻辑卷管理,是一种将一个或多个硬盘的分区在逻辑上集合, 相当于一块大硬盘使用,空间不足可以继续将新硬盘或其他硬盘的分区加入其中,可以实现硬盘空间的动态管理,相比于磁盘分区,可以实现更好更方便的管理。
2. PV、VG、LV
PV (Physical Volume)
物理卷,处于LVM的最底层,可以是整块物理磁盘,也可以是磁盘分区。
VG( Volume Group )
建立在PV之上,可以是一个或多个PV。
PE (Physical Extend)
实体延伸区块,LVM默认使用4MB的PE区块,调整PE会影响到VG的最大容量。
LV (Logical Volume)
逻辑卷,建立在VG之上,相当于原来分区的概念。不过大小可以动态改变。
3. 添加逻辑卷
3.1. 创建物理卷
- 查看当前存在的物理卷pv
#1 查看当前物理设备
[root@db4 ~]# fdisk -l
## 通常最后一块磁盘就是最近挂载的。
#2 创建物理卷
[root@db4 ~]# pvcreate /dev/sdb
3.2. 创建卷组
#使用/dev/sdb创建vg_01卷组
[root@db4 ~]# vgcreate vg_01 /dev/sdb
####
对卷组进行缩容的操作
vgreduce vg_1 /dev/sdb
####
3.3. 创建逻辑卷
#1 查看lvcreate命令帮助
[root@db4 ~]# lvcreate --help
{-l|--extents LogicalExtentsNumber[%{VG|PVS|FREE}] |(逻辑扩展数)
-L|--size LogicalVolumeSize[bBsSkKmMgGtTpPeE]}(逻辑卷大小)
[-n|--name LogicalVolumeName](逻辑卷名字)
...
## 这几个参数比较常用。
#2 多种创建LV的方法
#@2.1 创建一个2G大小的lv,指定名称lv_01
[root@db4 ~]# lvcreate -L 2G -n lv_01 vg_01
##2.2 创建一个占全部vg_02大小的lv_02
[root@db4 ~]# lvcreate -l 100%VG -n lv_02 vg_02
##2.3 创建一个空闲空间80%大小的lv,并指定名字为lv_03
[root@db4 ~]# lvcreate -l 80%Free -n lv_03 vg_01
3.4. 格式化文件系统
#1 格式化文件系统,ext4格式
[root@db4 ~]# mkfs.ext4 /dev/mapper/vg_01-lv_01
#2 格式化文件系统,xfs
[root@db4 ~]# mkfs.xfs /dev/mapper/vg_01-lv_02
3.5. 挂载目录
#1 ext4文件系统挂载
[root@db4 ~]# mount /dev/mapper/vg_01-lv_01 /data
[root@db4 ~]# vim /etc/fstab
/dev/mapper/vg_01-lv_01 /data_backup ext4 defaults 0 0
#2 xfs文件系统挂载
[root@db4 ~]# mount /dev/mapper/vg_01-lv_01 /datadir
[root@db4 ~]# vim /etc/fstab
/dev/mapper/vg_01-lv_01 /data_backup xfs defaults 0 0
4. 扩容逻辑卷
3.1. 创建物理卷
#1 查看挂载的磁盘名称
[root@db4 ~]# fdisk -l
#2 创建物理卷
[root@db4 ~]# pvcreate /dev/vdc
4.2. 卷组扩容
#1 查看当前卷组
[root@db4 ~]# vgs
#2 使用/dev/vdc给卷组vg_01扩容
[root@db4 ~]# vgextend vg_01 /dev/vdc
4.3. 逻辑卷扩容
[root@db4 ~]# lvextend -l 100%VG /dev/vg_01/lv_01 /dev/vdc
4.4. 同步文件系统
#1 ext4格式
[root@db4 ~]# resize2fs /dev/mapper/vg_01-lv_01
#2 xfs格式
[root@db4 ~]# xfs_growfs /dev/mapper/vg_01-lv_01
因为是逻辑卷扩容,之前的逻辑卷已经挂载好了,这里不许额外挂载操作。
5. 删除逻辑卷
通常有些时候,使用了lvm的磁盘,在不用之后需要删除lvm,再卸载。不然在云控制台卸载之后再挂载到别的服务器上会有如下报错和问题。
root@Test:~# pvs
WARNING: Device for PV dVJb21-xPmP-1x9u-HIdC-aW4y-JZut-dwDI67 not found or rejected by a filter.
PV VG Fmt Attr PSize PFree
/dev/vdk vg_01 lvm2 a-- 4.00t 0
unknown device vg_01 lvm2 a-m 1024.00g 0
...
root@Test:~# vgs
WARNING: Device for PV dVJb21-xPmP-1x9u-HIdC-aW4y-JZut-dwDI67 not found or rejected by a filter.
VG #PV #LV #SN Attr VSize VFree
vg_01 7 1 0 wz-pn- 16.01t 110.12g
root@Test:~# lvs
WARNING: Device for PV dVJb21-xPmP-1x9u-HIdC-aW4y-JZut-dwDI67 not found or rejected by a filter.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_01 vg_01 -wi-----p- 15.90t
那么怎么做呢?怎么恢复这块磁盘呢?
5.1. 删除lv
root@Test:~# lvremove lv_01
Volume group "lv_01" not found
Cannot process volume group lv_01
好像lv已经不存在了。那么接着删除vg。
5.2. 删除vg
#1 删除vg
root@Test:~# vgremove vg_01
WARNING: Device for PV dVJb21-xPmP-1x9u-HIdC-aW4y-JZut-dwDI67 not found or rejected by a filter.
WARNING: Device for PV UKGrzr-XH3g-nZDM-RomC-dcPZ-3FQe-JQjUfV not found or rejected by a filter.
WARNING: Device for PV OCv94q-PJUa-tMsY-Hdq3-ehRf-vb5o-heqJKy not found or rejected by a filter.
WARNING: Device for PV wc6gmx-kj2A-IfSY-4Jgo-2C8L-VpjR-Rkh7oq not found or rejected by a filter.
WARNING: Device for PV xdXj9K-O5Cj-EqyC-dS2W-DGfx-b5sr-71H9yb not found or rejected by a filter.
WARNING: Device for PV rYZfHs-ctch-1Y5a-1XWo-TzL9-vcpd-U03uRD not found or rejected by a filter.
WARNING: 6 physical volumes are currently missing from the system.
Do you really want to remove volume group "vg_01" containing 1 logical volumes? [y/n]: y
Do you really want to remove and DISCARD logical volume lv_01? [y/n]: y
Logical volume "lv_01" successfully removed
Volume group "vg_01" not found, is inconsistent or has PVs missing.
Consider vgreduce --removemissing if metadata is inconsistent.
#2 通过提示截止执行vgreduce --removemissing
root@Test:~# vgreduce --removemissing vg_01
WARNING: Device for PV dVJb21-xPmP-1x9u-HIdC-aW4y-JZut-dwDI67 not found or rejected by a filter.
WARNING: Device for PV UKGrzr-XH3g-nZDM-RomC-dcPZ-3FQe-JQjUfV not found or rejected by a filter.
WARNING: Device for PV OCv94q-PJUa-tMsY-Hdq3-ehRf-vb5o-heqJKy not found or rejected by a filter.
WARNING: Device for PV wc6gmx-kj2A-IfSY-4Jgo-2C8L-VpjR-Rkh7oq not found or rejected by a filter.
WARNING: Device for PV xdXj9K-O5Cj-EqyC-dS2W-DGfx-b5sr-71H9yb not found or rejected by a filter.
WARNING: Device for PV rYZfHs-ctch-1Y5a-1XWo-TzL9-vcpd-U03uRD not found or rejected by a filter.
WARNING: Device for PV dVJb21-xPmP-1x9u-HIdC-aW4y-JZut-dwDI67 not found or rejected by a filter.
WARNING: Device for PV UKGrzr-XH3g-nZDM-RomC-dcPZ-3FQe-JQjUfV not found or rejected by a filter.
WARNING: Device for PV OCv94q-PJUa-tMsY-Hdq3-ehRf-vb5o-heqJKy not found or rejected by a filter.
WARNING: Device for PV wc6gmx-kj2A-IfSY-4Jgo-2C8L-VpjR-Rkh7oq not found or rejected by a filter.
WARNING: Device for PV xdXj9K-O5Cj-EqyC-dS2W-DGfx-b5sr-71H9yb not found or rejected by a filter.
WARNING: Device for PV rYZfHs-ctch-1Y5a-1XWo-TzL9-vcpd-U03uRD not found or rejected by a filter.
Wrote out consistent volume group vg_01
#3 验证
root@Test:~# lvs
root@Test:~# vgs
5.3. 删除pv
#1 查看pv
root@Test:~# pvs
PV VG Fmt Attr PSize PFree
/dev/vdk vg_01 lvm2 a-- 4.00t 4.00t
#2 删除pv
root@Test:~# pvremove /dev/vdk
Labels on physical volume "/dev/vdk" successfully wiped
OK,那么lvm就已经彻底删除了,该块磁盘可以挂在别得服务器了。