一、LVM简介
LVM 是逻辑盘卷管理(Logical Volume Manager)的简称,最早是 IBM 为 AIX 研发的存储管理机制。LVM 通过在硬盘和分区之间建立一个逻辑层,可以让多个分区或者物理硬盘作为一个逻辑卷 ( 相当于一个逻辑硬盘 ),提高了磁盘分区管理的灵活性。1998 年,Heinz Mauelshagen 在 Linux 2.4 内核上提供了 Linux 的 LVM 实现。
LVM 早期多用于服务器,配合存储硬件的 Raid 技术,提供高可靠性,可灵活配置的磁盘分区管理;普通 PC 由于存储容量有限,很少使用这种技术。随着单个磁盘容量的不断扩大和硬盘价格的下降,普通 PC 拥有 TB 级的大容量存储空间逐渐普及,也带来对 PC 上存储管理的需要,LVM 无疑是很好的解决方案。只是普通 PC 用户由于缺少硬件冗余保护,在发生灾难时,通常会发生比较严重的数据损失。好在 LVM 提供了一系列灾难恢复的功能,可以帮助普通 PC 用户尽可能减少损失。
二、创建LVM
一)磁盘分区
[root@ee-o ~]# gdisk /dev/sdb
[root@ee-o ~]# gdisk /dev/sdc
二)创建PV
[root@ee-o ~]# pvcreate /dev/{sdb1,sdc1}
[root@ee-o ~]# pvscan
PV /dev/sda3 VG centos_ee-o lvm2 [19.50 GiB / 4.00 MiB free]
PV /dev/sdb1 VG myvg lvm2 [1022.00 MiB / 0 free]
PV /dev/sdc1 VG myvg lvm2 [1022.00 MiB / 1020.00 MiB free]
PV /dev/loop0 VG cinder-volumes lvm2 [20.60 GiB / 20.60 GiB free]
Total: 4 [42.10 GiB] / in use: 4 [42.10 GiB] / in no VG: 0 [0 ]
三)创建VG
[root@ee-o ~]# vgcreate -s 2m myvg /dev/{sdb1,sdc1}
[root@ee-o ~]# vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 1.99 GiB
PE Size 2.00 MiB
Total PE 1533
Alloc PE / Size 512 / 1.00 GiB
Free PE / Size 1021 / 1.99 GiB
VG UUID 34st9G-FC1B-7dnK-0ZV0-hBSM-yGWg-pK7QkD
四)创建LV
[root@ee-o ~]# lvcreate -L 10G -n mglv myvg
[root@ee-o ~]# lvdisplay
--- Logical volume ---
LV Path /dev/myvg/mylv
LV Name mylv
VG Name myvg
LV UUID Rey5ZM-SD8C-qMSQ-2hg3-1hXb-7prp-FdNeNa
LV Write Access read/write
LV Creation host, time ee-o, 2016-07-08 08:00:57 +0800
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 512
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:4
五)创建文件系统
[root@ee-o ~]# mkfs.xfs /dev/myvg/mylvm
[root@ee-o ~]# mount /dev/myvg/mylv /mnt/
三、LVM容量调整
LVM是由下往上建立,即由实体磁盘到逻辑卷轴。因而在调整LVM时必须要根据上下层之间的关系调整。
一)PV调整
[root@ee-o ~]# fdisk /dev/sdb
[root@ee-o ~]# pvcreate /dev/sdb1 ##增加PV
[root@ee-o ~]# pvremove /dev/sdb1 ##删除PV,前提是此PV没有被VG使用
Labels on physical volume "/dev/sdb1" successfully wiped
二)VG调整
[root@ee-o ~]# vgextend myvg /dev/sdb1
[root@ee-o ~]# vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 2.99 GiB
PE Size 2.00 MiB
Total PE 1533
Alloc PE / Size 512 / 1.00 GiB
Free PE / Size 1021 / 1.99 GiB
VG UUID 34st9G-FC1B-7dnK-0ZV0-hBSM-yGWg-pK7QkD
[root@ee-o ~]# vgreduce -a myvg ##移除没有被占用的PV
Physical volume "/dev/sdc1" still in use
Physical volume "/dev/sdd1" still in use
Removed "/dev/sdb1" from volume group "myvg"
[root@ee-o ~]# vgdisplay myvg
--- Volume group ---
VG Name myvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 2.00 GiB
PE Size 2.00 MiB
Total PE 1022
Alloc PE / Size 512 / 1.00 GiB
Free PE / Size 510 / 1020.00 MiB
VG UUID 34st9G-FC1B-7dnK-0ZV0-hBSM-yGWg-pK7QkD
三)LV调整
[root@ee-o ~]# lvresize -L +1G /dev/myvg/mylv ##增加LV容量
[root@ee-o ~]# lvdisplay
--- Logical volume ---
LV Path /dev/myvg/mylv
LV Name mylv
VG Name myvg
LV UUID Rey5ZM-SD8C-qMSQ-2hg3-1hXb-7prp-FdNeNa
LV Write Access read/write
LV Creation host, time ee-o, 2016-07-08 08:00:57 +0800
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 1024
Segments 3
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:4
[root@ee-o ~]# lvresize -L -1G /dev/myvg/mylv ##减小LV容量
[root@ee-o ~]# lvdisplay /dev/myvg/mylv
--- Logical volume ---
LV Path /dev/myvg/mylv
LV Name mylv
VG Name myvg
LV UUID Rey5ZM-SD8C-qMSQ-2hg3-1hXb-7prp-FdNeNa
LV Write Access read/write
LV Creation host, time ee-o, 2016-07-08 08:00:57 +0800
LV Status available
# open 0
LV Size 1.00 GiB
Current LE 512
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:4
四、LVM管理常用命令总结
PV | VG | LV | |||
pvscan | 扫描已创建的PV | vgcreate | 创建VG | lvcreate | 创建LV |
pvcreate | 创建PV | vgscan | 扫描VG | lvscan | 扫描LV |
pvdisplay | 显示PV详细信息 | vgdisplay | 显示VG详细信息 | lvdisplay | 显示LV详细信息 |
pvremove | 移除PV | vgextend | 扩大VG | lvextend | 扩大LV |
vgreduce | 减小VG | lvreduce | 减小LV | ||
vgremove | 删除VG | lvremove | 删除LV | ||
lvresize | 调整LV大小 | ||||
更多管理命令输入前两个字母后tab查看。 |