什么是LVM
LVM(Logical Volume Manager)逻辑卷管理,是Linux环境下对磁盘分区管理的一种机制。是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现一种磁盘空间的动态管理。对于其他的的UNIX(AIX/HP/SUM)操作系统,以及Windows系统也有类似的磁盘管理软件。LVM管理的方式非常简单,就是通过将底层的物料磁盘抽象并封装起来,然后以逻辑的方式呈现给上层应用
为什么使用LVM
逻辑卷和逻辑卷管理有助于更加轻松地管理磁盘空间。如果文件系统需要更多的空间 , 可以将其卷组的可用空间分配给逻辑卷 ,
并且可以调整文件系统的大小。如果磁盘开始出现错误 , 可以通过卷组将替换磁盘注册为物理卷 , 并且逻辑卷的范围可迁移到新磁盘
名词解释
PV(Physical Volume):物理卷,处于LVM最底层,可以是物理硬盘或者分区
PP(Physical Extend):物理区域,PV中可以用于分配的最小存储单元,可以在创建PV的时候制定,组成同一VG中所有PV的PE大小应该相同
VG(Volume Group):卷组,建立在PV之上,可以含有一个到多个PV
LV(Logical Volume):逻辑卷,建立在VG之上,相当于原来分区的概念。不过大小可以动态改变
命令快览
任务 | PV阶段 | VG阶段 | LV阶段 | 文件系统 | |
查找 | pvscan | vgscan | lvscan | lsblk、blkid | |
建立 | pvcreate | vgcreate | lvcreate | mkfs.xfs | mkfs.ext4 |
列出 | pvdisplay | vgdisplay | lvdisplay | df、mount | |
增加 |
| vgextend | lvextend | xfs_growfs | resize2fs |
减少 | vgreduce | lvreduce | 不支持 | resize2fs | |
删除 | pvremove | vgremove | lvremove | umount、重新格式化 | |
修改容量 | lvresize | xfs_growfs | resize2fs | ||
修改属性 | pvchange | vgchange | lvchange | /etc/fstab、remount |
LVM创建
1.创建LVM分区类型:方法和创建其他一般分区的方式是一样的,区别仅仅是LVM的分区类型为8e
2.创建一个逻辑卷:创建物理卷(PV)-->创建卷组(VG)-->创建逻辑卷组(LV)
watch -n 1 'pvs;echo ...;vgs;echo ...;lvs;echo...;df -h /test' ##另开一shell建立监控命令
mkdir /test
fdisk /dev/vdb ##创建分区
t-->8e-->wq ##改为lvm
mount /dev/vdb2 /test
pvcreate /dev/vdb2 ##创建物理卷pv
vgcreate testgroup /dev/vdb2 ##建物理卷组VG,组名任意
lvcreate -L 50M -n test testgroup ##建立逻辑卷lv取容量
mkfs.xfs /dev/testgroup/test ##格式化逻辑卷
mount /dev/testgroup/test /test/ ##挂载逻辑卷
lvm逻辑卷扩容
lvextend -L 80M /dev/testgroup/test 拉伸,但是文件系统大小不变
xfs_growfs /dev/testgroup/test 拉伸文件系统
fdisk /dev/vdb ##加分区
partprobe ##同步分区表
cat /proc/partitions
pvcreate /dev/vdb3 ##新添vdb3做成物理卷
vgextend testgroup /dev/vdb3 ##扩容,将vdb3加入物理卷组
lvextend -L 150M /dev/testgroup/test ##拉伸
xfs_growfs /dev/testgroup/test ##拉伸文件系统
lvm的检测
pvs ##检测pv的建立
vgs ##检测vg的建立
lvs ##检测lv的建立
针对ext文件系统的设备的拉伸和缩减
xsf文件不可缩减,所以要将其换成ext4文件,ext4文件可扩展可缩减
umount /test/ ##先解除挂载
mkfs.ext4 /dev/testgroup/test ##格式化改格式为ext4,支持文件系统缩容
mount /dev/testgroup/test /test/
lvextend -L 160M /dev/testgroup/test ##扩展逻辑卷
resize2fs /dev/testgroup/test ##刷新
格式化为ext4格式,blkid查看
将逻辑卷和文件系统扩容
查看效果
LVM缩容操作(先缩软件再缩设备)
umount /test/
e2fsck -f /dev/testgroup/test ##扫描
resize2fs /dev/testgroup/test 50M ##缩文件系统
mount /dev/testgroup/test /test/ ##挂载
lvreduce -L 50M /dev/testgroup/test ##缩逻辑卷
先解除挂载,扫描文件系统(通常在挂载的文件系统上运行e2fsck是不安全的)
缩容再次挂载(先缩文件系统再缩逻辑卷)
查看结果
移除操作
1)在物理卷没有数据时,可以直接移除
2)当物理卷有数据时要移除物理卷前,需将其中的数据移动到其他的pv中
pvmove /dev/vdb2 /dev/vdb1 ##迁移(尽量移到一个,闲置)
vgreduce testgroup /dev/vdb2 ##缩物理卷,将物理卷从卷组除去
pvremove /dev/vdb2 ##移除设备
将vdb2数据移到vdb1中,监控可看到vdb1和vbd2的剩余空间大小变了
缩物理卷,移除设备vdb2
查看效果
lvm的快照(可以完成数据恢复)
touch /test/file{1..3} ##先在/test建立一些文件
umount /test/ ##解除挂载
lvcreate -L 10M -n test_backup -s /dev/testgroup/test ##建立快照
-L大小:预计改的容量 -n名字 -s代表拍照到指定路径,照的卷组
mount /dev/testgroup/test_backup /test/ ##挂载快照
rm -rf /test/* ##删/test中的文件
lvremove /dev/testgroup/test_backup ##删快照
ls /test/
查看文件还在证明只是删了快照本身文件不受影响
注意:先解除挂载再删除快照!
再次建立新快照,挂载查看内容,原文件内容还在,实现了文件系统的备份
彻底删除LVM,还原原来的分区:(和建立步骤刚好相反)
umount /test/ ##卸载
lvremove /dev/testgroup/test_backup ##删除快照
lvremove /dev/testgroup/test ##删除逻辑卷组
vgremove testgroup ##删除物理卷组
pvremove /dev/vdb{2..3} ##删除物理卷
fdisk /dev/vdb
删设备d-->2-->wq ##删设备
partprobe ##还原环境
删设备,同步分区表
排错
(1)pvs报错 原因:把正用的vdb*删了
执行命令:vgreduce --removemissing testgroup
(2)vim /etc/fstab 编辑有误,系统起不来
进入登陆选择界面,按上下键停止选择进系统,选择要进的系统按e编辑--> ctrrl+x-->chroot /sysroot/ ##切换到真实系统环境-->vim /etc/fstab ##重新修改-->两次exit退出
因而每当编辑完配置文件,直接执行mount -a 查错!避免麻烦