【linux命令】linux磁盘管理-LVM的创建与扩容管理
二、 LVM基本术语
首先是将物理存储介质分区,将分区使用pvcreate创建物理卷,然后创建vgcreate,将之前的物理卷放到一个卷组,最后采用lvcreate从卷组里边分配一个指定大小的逻
二、 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