linux磁盘管理-LVM的创建与扩容管理
一、 前言
LVM是逻辑卷管理(Logical Volume Manager)的简称,他是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,和直接使用物理存储在管理上相比,提供了更好灵活性。
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样能减少操作成本.
LVM和直接使用物理存储相比,有以下好处:
1. 灵活的容量.
当使用逻辑卷时,文件系统能扩展到多个磁盘上,你能聚合多个磁盘或磁盘分区成单一的逻辑卷.
2.可伸缩的存储池.
你能使用简单的命令来扩大或缩小逻辑卷大小,不用重新格式化或分区磁盘设备.
3.在线的数据再分配.
你能在线移动数据,数据能在磁盘在线的情况下重新分配.比如,你能在线更换可热插拔的磁盘.
4. 方便的设备命名
逻辑卷能按你觉得方便的方式来起所有名称.
5.磁盘条块化.
你能生成一个逻辑盘,他的数据能被条块化存储在2个或更多的磁盘上.这样能明显提升数据吞吐量.
6.映像卷
逻辑卷提供方便的方法来映像你的数据.
7.卷快照
使用逻辑卷,你能获得设备快照用来一致性备份或测试数据更新效果而不影响真实数据.
二、 LVM基本术语
首先是将物理存储介质分区,将分区使用pvcreate创建物理卷,然后创建vgcreate,将之前的物理卷放到一个卷组,最后采用lvcreate从卷组里边分配一个指定大小的逻辑卷
1,PV 物理卷( Physical Volume)
物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.
2,VG 卷组(Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
3,LV 逻辑卷(Logical Volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上能建立文件系统(比如/home或/usr等)。
三,创建LVM过程。
1,分区。
新添加一块磁盘,比如/dev/sdb(20G大小),这里我们设置三个分区/dev/sdb1,/dev/sdb2,/dev/sdb3 分别设置1G。使用命令你fdisk 直接操作主分区。
2,制作pv
[[email protected] ~]# pvcreate /dev/sdb{1,2} Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdb2" successfully created.
3,制作vg
[[email protected] ~]# vgcreate Vg1 /dev/sdb1 /dev/sdb2 Volume group "Vg1" successfully created
这里是将之前创建的两个物理卷都加入到了Vg1这个卷组里边。
4,制作lv
[[email protected] ~]# lvcreate -n LV1 -L 1.5G Vg1 Logical volume "LV1" created.
其中-n 为指定逻辑卷名字,-L指定大小,最后一个为卷组名,指从哪个卷组分配逻辑卷出来。
lv创建完毕,下边就可以直接进行格式化、挂载了。比如创建一个/log目录,将刚才的LV1进行格式化挂载:
[[email protected] ~]# mkfs.ext4 /dev/Vg1/LV1 省略。。 Writing superblocks and filesystem accounting information: done [[email protected] ~]# mkdir /log [[email protected] ~]# mount /dev/Vg1/LV1 /log/ [[email protected] ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 37G 1.2G 36G 4% / devtmpfs 901M 0 901M 0% /dev tmpfs 912M 0 912M 0% /dev/shm tmpfs 912M 8.6M 904M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 1014M 143M 872M 15% /boot tmpfs 183M 0 183M 0% /run/user/0 /dev/mapper/Vg1-LV1 1.5G 4.5M 1.4G 1% /log
挂载完成,可以根据需要将其写入分区表/etc/fstab。
四,查看各种卷(各种查看)
查看PE:
[[email protected] ~]# pvdisplay --- Physical volume --- PV Name /dev/sdb1 VG Name Vg1 PV Size 1.00 GiB / not usable 4.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 255 Free PE 0 Allocated PE 255 PV UUID 4yREkJ-yQyt-Szq3-KADc-ppoJ-y1G6-rYp37w --- Physical volume --- PV Name /dev/sdb2 VG Name Vg1 PV Size 1.00 GiB / not usable 4.00 MiB Allocatable yes PE Size 4.00 MiB Total PE 255 Free PE 126 Allocated PE 129 PV UUID pG9wCX-rcWM-EBC3-4Cmb-VUTB-QDbM-LTCW1H
这里我们可以看到PE为默认的4MB。 当然,这个值也可以在创建vg时直接指定,比如:
vgcreate -s 16M vg1 /dev/sdb1 /dev/sdb2
五,LVM的动态扩容
LVM的最大好处就是支持动态扩容,这里测试下。
我们查看当前的卷组大小以及已经分配的逻辑卷(之前创建了一个Vg1卷组2G,分了一个逻辑卷1.5G):
[[email protected] ~]# vgs VG #PV #LV #SN Attr VSize VFree Vg1 2 1 0 wz--n- 1.99g 504.00m centos 1 2 0 wz--n- <39.00g 4.00m [[email protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert LV1 Vg1 -wi-ao---- 1.50g root centos -wi-ao---- 36.99g swap centos -wi-ao---- 2.00g
1,逻辑卷扩展:
[[email protected] ~]# lvextend -L +300M /dev/Vg1/LV1 Size of logical volume Vg1/LV1 changed from 1.50 GiB (384 extents) to 1.79 GiB (459 extents). Logical volume Vg1/LV1 successfully resized. [[email protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert LV1 Vg1 -wi-ao---- 1.79g root centos -wi-ao---- 36.99g swap centos -wi-ao---- 2.00g [[email protected] ~]# resize2fs /dev/Vg1/LV1 #这里比如要冲洗刷新大小,否则磁盘大小变了但是文件系统不会实际分配大小。 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/Vg1/LV1 is mounted on /log; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/Vg1/LV1 is now 470016 blocks long.
最新查看:
[[email protected] ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 37G 1.2G 36G 4% / devtmpfs 901M 0 901M 0% /dev tmpfs 912M 0 912M 0% /dev/shm tmpfs 912M 8.6M 904M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 1014M 143M 872M 15% /boot tmpfs 183M 0 183M 0% /run/user/0 /dev/mapper/Vg1-LV1 1.8G 4.5M 1.7G 1% /log
2,卷组扩展
之前只将物理卷/dev/sdb1 /dev/sdb2加入到了卷组Vg1,现在我们再将/dev/sdb3增加到卷组Vg1
[[email protected] ~]# vgextend Vg1 /dev/sdb3 Physical volume "/dev/sdb3" successfully created. Volume group "Vg1" successfully extended [[email protected] ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <39.00g 4.00m /dev/sdb1 Vg1 lvm2 a-- 1020.00m 0 /dev/sdb2 Vg1 lvm2 a-- 1020.00m 204.00m /dev/sdb3 Vg1 lvm2 a-- 1020.00m 1020.00m [[email protected] ~]# vgs VG #PV #LV #SN Attr VSize VFree Vg1 3 1 0 wz--n- <2.99g <1.20g centos 1 2 0 wz--n- <39.00g 4.00m
最新查看,现在Vg1卷组已经到了3G大小。
六,LVM的缩减
LV缩减:将逻辑卷LV1,从刚才的1.8G缩小到1G。 原理是缩小文件系统大小,后操作逻辑卷大小。
说明:lvm支持在线缩小,但是ext4文件系统不支持在线缩小,btrfs支持在线缩小。目前ext4也只是一个过渡系统,以后必将被新的系统所替代,比如centos7默认的文件系统xfs。
btrfs特性:
1,扩展性。btrfs最重要的设计目标是应对大型机器对文件系统的扩展性要求。其整体性能不会随着系统容量的增加而降低。
2,数据一致性。
3,和多设备管理相关的特性。btrfs支持创建快照(snapshot)和科隆(clone)
总结:这些特性都是比较先进的技术,能够显著提高文件系统的时间/空间性能,包括延迟分配,小文件的存储优化,目录索引等。
缩减步骤:
1,取消lv卷挂载。
[[email protected] ~]# umount /log/
2,检查并缩减大小。
[[email protected] ~]# e2fsck -f /dev/Vg1/LV1 e2fsck 1.42.9 (28-Dec-2013) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/Vg1/LV1: 11/122880 files (9.1% non-contiguous), 17066/470016 blocks [[email protected] ~]# resize2fs /dev/Vg1/LV1 1000M #这里针对文件系统 resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/Vg1/LV1 to 256000 (4k) blocks. The filesystem on /dev/Vg1/LV1 is now 256000 blocks long. [[email protected] ~]# lvreduce -L 1000M /dev/Vg1/LV1 #针对逻辑卷 WARNING: Reducing active logical volume to 1000.00 MiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce Vg1/LV1? [y/n]: y Size of logical volume Vg1/LV1 changed from 1.79 GiB (459 extents) to 1000.00 MiB (250 extents). Logical volume Vg1/LV1 successfully resized.
查看大小:
[[email protected] ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 37G 1.2G 36G 4% / devtmpfs 901M 0 901M 0% /dev tmpfs 912M 0 912M 0% /dev/shm tmpfs 912M 8.6M 904M 1% /run tmpfs 912M 0 912M 0% /sys/fs/cgroup /dev/sda1 1014M 143M 872M 15% /boot tmpfs 183M 0 183M 0% /run/user/0 /dev/mapper/Vg1-LV1 952M 3.8M 884M 1% /log
注意:
如果要缩减的空间有数据,比如1.8G缩小到1000M,而里边本身已经存储了1.6G数据,那么会导致其中的0.6G数据丢失,更有可能会导致缩减后剩下的1000M数据不完整。
七,VG卷组的缩减
vg缩减:缩减时,可以不卸载正在使用中的LV。另外,只能缩减没有被使用的pv,如果被使用将无法缩减。如果缩减被使用的pv,会报错:
[[email protected] ~]# vgreduce Vg1 /dev/sdb1 Physical volume "/dev/sdb1" still in use
这里我们以缩减Vg1,其中的pv 物理卷/dev/sdb3为例:
[[email protected] ~]# vgreduce Vg1 /dev/sdb3 Removed "/dev/sdb3" from volume group "Vg1 [[email protected] ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 centos lvm2 a-- <39.00g 4.00m /dev/sdb1 Vg1 lvm2 a-- 1020.00m 20.00m /dev/sdb2 Vg1 lvm2 a-- 1020.00m 1020.00m /dev/sdb3 lvm2 --- 1.00g 1.00g [[email protected] ~]# vgs VG #PV #LV #SN Attr VSize VFree Vg1 2 1 0 wz--n- 1.99g <1.02g centos 1 2 0 wz--n- <39.00g 4.00m
通过pvs查看pv卷/dev/sdb3已经不在Vg1卷组里边了,而且通过vgs查看卷组大小,已经发生了变化。
八,LVM删除
步骤大概如下:
1,umount卸载。 比如:umount /dev/Vg1/LV1
2,删除逻辑卷 lvremove /dev/Vg1/LV1
3,删除卷组 vgremoce Vg1
4,删除物理卷 pvremove /dev/sdb1 …
参考文章:
Linux逻辑卷管理LVM详解
https://blog.csdn.net/ikikik2002/article/details/5187276