linux中逻辑卷管理--lvm
2017-11-08 19:43
543 查看
linux中逻辑卷管理–lvm
一、理论原理篇
LVM(Logic Volume Manager)逻辑卷管理,是linux环境下对磁盘分区进行管理的一种机制。LVM是建立在磁盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
1.lvm术语介绍
物理存储介质(the physical media):硬盘,是存储系统最低层的存储单元。物理卷(physical Volume, PV):物理卷是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备,是LVM的基本存储逻辑块,但和物理存储介质比较的话,却包含有与LVM相关的管理参数。
卷组(Volume Group, VG):LVM的卷组类似于非LVM系统的物理硬盘,由物理卷组成。可以在卷组上创建一个或者多个lvm分区(逻辑卷)。
逻辑卷(Logical Volume, LV):类似于非LVM系统中的硬盘分区,在逻辑卷上可以建立文件系统。
PE(physical extent, PE):每一个物理卷被划分为称为PE的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元,PE的大小是可以配置的,默认为4MB。
2.lvm原理图示
3.各命令含义汇总
1)物理卷: pvcreate #创建物理卷 pvremove #数据擦除 pvmove #把含有数据的pv上的数据挪到其他pv上面 resize2fs #扩展物理卷 2)卷组: vgcreate #创建卷组 vgextend #扩展卷组数据 vgreduce #缩减卷组数据 3)逻辑卷: lvcreate #创建逻辑卷 lvextend #扩展逻辑卷数据 lvreduce #缩减逻辑卷数据,但应注意逻辑卷不能在线缩减
二、实践篇
为了即时看到改变,所以应该使用监控方方便查看,监控的命令如下:[root@localhost ~]# watch -n 1 "pvs;echo ====================;\ > vgs;echo ====================;\ > lvs;echo ====================;\ > df -h /westos "
1、lvm建立
建立lvm之前,应该先用fdisk划分物理分区,并且修改标签为lvm,划分物理分区的具体方法在上一篇文章里面详细介绍。下面直接从创建物理卷开始[root@localhost ~]# pvcreate /dev/vdb1 #对创建的物理分区创建物理卷 WARNING: xfs signature detected on /dev/vdb1 at offset 0. Wipe it? [y/n] y Wiping xfs signature on /dev/vdb1. Physical volume "/dev/vdb1" successfully created [root@localhost ~]# vgcreate vg0 /dev/vdb1 #创建物理卷组vg0 Volume group "vg0" successfully created [root@localhost ~]# lvcreate -L 100M -n lv0 vg0 #从vg0里面创建一个大小为100M名字为lv0的逻辑卷 WARNING: xfs signature detected on /dev/vg0/lv0 at offset 0. Wipe it? [y/n] y Wiping xfs signature on /dev/vg0/lv0. Logical volume "lv0" created [root@localhost ~]# mkfs.xfs /dev/vg0/lv0 #对创建的逻辑卷进行格式化 meta-data=/dev/vg0/lv0 isize=256 agcount=4, agsize=6400 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 data = bsize=4096 blocks=25600, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal log bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@localhost ~]# mount /dev/vg0/lv0 /westos #挂载逻辑卷
因为之前运行了监控命令,可以得到完成逻辑卷建立的结果如截图:
2.lvm的扩展
从原理图中可以看出来,lv从物理卷组vg中取出,所以如果对lv进行扩展的话,会出现两种情况:1. vg中有充足的容量进行扩展,此时可以直接用命令来进行扩展
2. vg中容量不足以支持扩展的大小,那么此时就必须通过新建物理分区,先对vg进行扩展,再扩展lv
具体做法如下:
1)vg中有充足的容量
[root@localhost ~]# lvextend -L 160M /dev/vg0/lv0 #将lv0的容量扩展到160M Extending logical volume lv0 to 160.00 MiB Logical volume lv0 successfully resized [root@localhost ~]# xfs_growfs /dev/vg0/lv0 #更新 meta-data=/dev/mapper/vg0-lv0 isize=256 agcount=4, agsize=6400 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 data = bsize=4096 blocks=25600, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 25600 to 40960
2)vg中容量不足
由上一步的截图可以看出,若想将lv0的容量扩展到240M的话,vg0的容量不足[root@localhost ~]# lvextend -L 240M /dev/vg0/lv0 Extending logical volume lv0 to 240.00 MiB Insufficient free space: 20 extents needed, but only 9 available
所以此时应该先新建一个物理分区,把新建的物理分区加入到vg0里面,才能继续进行扩展
[root@localhost ~]# fdisk /dev/vdb ...8e... #新建物理分区 #此时需要注意的是当新建分区保存退出的时候,会提示vdb设备更忙,所以需要运行partprobe命令手动更新分区表,使系统识别到新建的分区。 [root@localhost ~]# vgextend vg0 /dev/vdb2 Physical volume "/dev/vdb2" successfully created Volume group "vg0" successfully extended [root@localhost ~]# lvextend -L 250M /dev/vg0/lv0 Rounding size to boundary between physical extents: 252.00 MiB Extending logical volume lv0 to 252.00 MiB Logical volume lv0 successfully resized [root@localhost ~]# xfs_growfs /dev/vg0/lv0 meta-data=/dev/mapper/vg0-lv0 isize=256 agcount=7, agsize=6400 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 data = bsize=4096 blocks=40960, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=853, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 40960 to 64512 #而在ext4文件系统中,若想新型扩展,应注意: mkfs.ext4 /dev/vg0/lv0 扩展: lvextend -L 400M /dev/vg0/lv0 resize2fs /dev/vg0/lv0
运行之后监控的结果如下图:
3.lvm的缩减
注意:lvm不能进行在线缩减,必须先卸载才能缩减(1)对设备的缩减
[root@localhost ~]# umount /westos/ [root@localhost ~]# e2fsck -f [root@localhost ~]# resize2fs /dev/vg0/lv0 100M resize2fs 1.42.9 (28-Dec-2013) Resizing the filesystem on /dev/vg0/lv0 to 102400 (1k) blocks. The filesystem on /dev/vg0/lv0 is now 102400 blocks long. /dev/vg0/lv0 #进行强制文件检查 [root@localhost ~]# lvreduce -L 100M /dev/vg0/lv0 WARNING: Reducing active logical volume to 100.00 MiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce lv0? [y/n]: Y Reducing logical volume lv0 to 100.00 MiB Logical volume lv0 successfully resized [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert lv0 vg0 -wi-a----- 100.00m [root@localhost ~]# mount /dev/vg0/lv0 /westos/
监控结果可以看出,此时lv0已经缩减到100M
(2)对卷组的缩减
若要对没有数据的卷组进行移除,缩减,可以直接进行移除,但是若要对有数据的卷组进行移除,就必须先把数据迁移到其他卷组上,这里只示范对有数据的卷组进行移除的过程:#由上面的截图可以看出来/dev/vdb2不足以放下vdb1上面的容量,所以添加了一个vdb3 [root@localhost ~]# pvmove /dev/vdb1 /dev/vdb3 /dev/vdb1: Moved: 7.9% /dev/vdb1: Moved: 65.8% /dev/vdb1: Moved: 100.0% [root@localhost ~]# vgreduce vg0 /dev/vdb1 #应该先把vdb1从vg0上面取下来 Removed "/dev/vdb1" from volume group "vg0" [root@localhost ~]# pvremove /dev/vdb1 #再执行pvremove Labels on physical volume "/dev/vdb1" successfully wiped
监控结果如下图,可以看出vdb1已经成功移除,同样的步骤,也可以移除vdb2
4、lvm快照使用
lvcreate -L 100M -n lv0backup -s /dev/vg0/lv0
通过已经存在的/dev/vg0/lv0建立一个大小为100M,名字为lv0backup的lvm快照
快照可以直接挂载。不需要进行格式化等动作,使用快照的时候读取的是lv0,和虚拟机快照相同,当快照里面的东西被误删除之后,可以先取消挂载,lvremove损坏的快照,重新进行快照
[root@localhost ~]# cd /westos/ #此时lv0挂载在/westos目录上面 [root@localhost westos]# ls [root@localhost westos]# touch file{1..5} [root@localhost ~]# lvcreate -L 100M -n lv0backup -s /dev/vg0/lv0 Logical volume "lv0backup" created [root@localhost ~]# umount /westos/ [root@localhost ~]# mount /dev/vg0/lv0backup /westos [root@localhost ~]# cd /westos/ [root@localhost westos]# ls file1 file2 file3 file4 file5
监控结果如图:可以看出此时挂载的是快照lv0backup
5、lvm的删除
lvm的删除应注意和lvm建立的顺序刚好相反一步步删除[root@localhost ~]# umount /westos/ [root@localhost ~]# lvremove /dev/vg0/lv0 Do you really want to remove active logical volume lv0backup? [y/n]: y Logical volume "lv0backup" successfully removed Do you really want to remove active logical volume lv0? [y/n]: y Logical volume "lv0" successfully removed [root@localhost ~]# lvremove /dev/vg0/lv1 Do you really want to remove active logical volume lv1? [y/n]: y Logical volume "lv1" successfully removed [root@localhost ~]# vgremove vg0 Volume group "vg0" successfully removed [root@localhost ~]# pvremove /dev/vdb3 Labels on physical volume "/dev/vdb3" successfully wiped
由监控结果可以看出都已经删除,删除完后开始删除硬盘分区即可:
最终结果为:
[root@localhost ~]# cat /proc/partitions major minor #blocks name 253 0 10485760 vda 253 1 10484142 vda1 253 16 10485760 vdb
当设备处于闲置状态的时候,容易出现没有按照顺序一步步删除,而是直接删除硬盘分区,但是手动同步分区表的话会出现报错
解决方法:
vgreduce vg0 --removemissing
相关文章推荐
- linux基础(22)--LVM逻辑卷管理--RJEL6.5
- linux逻辑卷管理 (LVM)
- Linux中的LVM(逻辑卷管理)
- Linux逻辑卷管理LVM学习总结
- 学习日志---linux lvm逻辑卷管理
- 学习日志---linux lvm逻辑卷管理补图
- GNU/Linux下LVM配置管理以及快照卷、物理卷、卷组、逻辑卷的创建和删除
- Linux 基础命令(九)—— 逻辑卷管理(LVM)
- Linux中的LVM(逻辑卷管理)
- 浅谈Linux磁盘存储管理续【逻辑卷管理(LVM)】
- 关于linux LVM的好图 (Logic Volume Management,逻辑卷管理)
- 逻辑卷管理(LVM) Linux 用户指南
- 浅谈Linux磁盘存储管理续【逻辑卷管理(LVM)】
- 在Linux系统中,实现LVM逻辑卷管理及磁盘配额
- 090813 已实现 Linux LVM 逻辑卷管理 重组
- LVM详解;Linux逻辑卷管理
- linux逻辑卷管理LVM
- GNU/Linux下LVM配置管理以及快照卷、物理卷、卷组、逻辑卷的创建和删除
- LINUX 逻辑卷管理: LVM
- Linux中逻辑卷(LVM)管理基本操作