逻辑卷管理(Logical Volume Manager)
简介:lvm可以弹性调节filesystem容量;lvm可以整合多个实体partion在一起,使得多个partion看起来像一个磁盘。
LVM基本概念
PV:物理卷 PE:实体范围区块 VG:卷组 LV:逻辑卷
软件包
lvm2
软链接
- /dev/mapper/VG_NAME-LV_NAME
- /dev/VG_NAME/LV_NAME
实际对应的设备是:/dev/dm-数字
数据写入磁盘时有两种方式:
线性模式(linear):假如将/dev/vda1, /dev/vdb1这两个partition 加入到VG当中,并且整个VG只有一个LV时,那么所谓的线性模式就是:当/dev/vda1 的容量用完之后,/dev/vdb1 的硬盘才会被使用到。推荐,且是LVM默认模式
交错模式(triped):将一份数据分为两份,分别写入/dev/sda1和/dev/vdb1。类似RAID0
LVM工作过程
1-pv阶段
pvcreate:将实体partition建立为PV 命令:pvcreate 实体分区名
pvscan:搜寻目前系统内任何具有PV的磁盘
pvdisplay:显示出目前系统上的PV状态
pvremove:将PV属性移除,使该partition不再具有PV属性
2-vg阶段
vgcreate:建立vg卷组 命令:vgcreate 选项 vg卷组名 pv名
选项:-s : 后面接PE大小,单位为m,g,t(大小写都可)
vgscan:搜寻系统上是否有vg存在
vgdisplay:显示目前系统上面的vg
vgextend:在vg内增加额外的pv 命令:vgextend vg卷组名 pv名
vgreduce:从vg内移除pv
vgchange:设定vg是否启动
vgremove:删除一个vg
后又添加一块硬盘 /dev/sdc ,经分区、创建pv后需将 /dev/sdc1 添加至 vgsdb1 卷组里
3-lv阶段
lvcreate:建立lv
lvcreate [-L N[mgt]] [-n lv名] vg名
-L:后接容量,容量单位可以是M,G,T等,最小单位为PE。
-l:后接PE个数,需要自行计算。
-n:后面接新创建出来的lv的名称
lvscan:查询系统上的lv
lvdisplay:显示系统上的lv状态
lvextend:增加lv容量
lvreduce:较少lv容量
lvremove:删除一个lv
lvresize:对lv进行容量大小调整
4-文件系统阶段
格式化
挂载
后需要增加 /dev/vgsdb1/lvsdb1 容量,目前 vgsdb1 还有容量,可进行操作
1、lvextend -L +具体单位容量 目标lv
lvsdb1 增加100M容量
将 vg卷组中剩余所有容量分配给 /dev/vgsdb1/lvsdb1
调整此lv文件系统容量 xfs_grows
最后再修改下 /etc/fstab 文件,使得以上分区设置永久生效
关闭并移除LVM流程
1、卸载系统上的lvm文件系统,包含快照与所有lv
2、使用 lvremove 移除lv
3、使用 vgchange -a n vg名字 使该vg卷组不具有 active 标志
4、使用 vgremove 移除 vg
5、使用 pvremove 移除 pv
6、使用fdisk将分区id修改回去
lvm相关指令汇总
EXT家族支持增加、减少文件系统容量;XFS仅支持增加文件系统容量。
ubuntu实验:
实现基础lvm
新增一块20G硬盘sda
从/dev/sda划分10G
创建PV /dev/sda1
创建VG wenzi
创建LV ceshi
同样的操作创建出VG aabb 和LV ccdd
创建挂载点
将 /dev/mapper/wenzi-ceshi 格式化为xfs文件系统,并挂载至 dir1
将 /dev/mapper/aabb-ccdd 格式化为ext4文件系统,并挂载至 dir2
查看现状
拓展逻辑卷 /dev/mapper/aabb-ccdd
从 /dev/sda 再划分5G空间,最终加给 /dev/mapper/aabb-ccdd
方法一:lvextend 和 resize2fs
拓展只使用2.5G
方法二:lvresize -r -l
拓展使用剩余2.5G
缩减逻辑卷
缩减有数据损坏的风险,建议先备份再缩减,不支持在线缩减,要先取消挂载;xfs文件系统不支
持缩减
ext4文件系统-/dev/mapper/aabb-ccdd
方法一:resize2fs 和 lvreduce
缩减为3G
1、取消挂载
2、文件系统检测
3、缩减文件系统到指定大小
4、缩减逻辑卷到指定大小
5、重新挂载
方法二:lvreduce
缩减为1G
1、取消挂载
2、同时缩减文件系统和逻辑卷
3、重新挂载
xfs文件系统-/dev/mapper/wenzi-ceshi
xfs文件系统不支持缩减,可变相实现缩减
下载工具 xfsdump
[root@wenzi ~]#apt install xfsdump
创建xfs文件系统文件数据
[root@wenzi ~]#echo "123" > /data/dir1/123.txt
备份xfs文件系统数据,备份文件为 data.img
[root@wenzi ~]#xfsdump -f data.img /data/dir1 挂载点后不要加 / 否则会报错
[root@wenzi ~]#ls
data.img snap
卸载文件系统
[root@wenzi ~]#umount /data/dir1
缩减逻辑卷
[root@wenzi ~]#lvreduce -L 7G /dev/mapper/wenzi-ceshi
WARNING: Reducing active logical volume to 7.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce wenzi/ceshi? [y/n]: y
Size of logical volume wenzi/ceshi changed from <10.00 GiB (2559 extents) to 7.00 GiB (1792 extents).
Logical volume wenzi/ceshi successfully resized.
重建文件系统
[root@wenzi ~]#mkfs.xfs -f /dev/mapper/wenzi-ceshi
meta-data=/dev/mapper/wenzi-ceshi isize=512 agcount=4, agsize=458752 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=1835008, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
重新挂载
[root@wenzi ~]#mount /dev/mapper/wenzi-ceshi /data/dir1
还原数据
[root@wenzi ~]#xfsrestore -f data.img /data/dir1
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.6 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description:
xfsrestore: hostname: wenzi
xfsrestore: mount point: /data/dir1
xfsrestore: volume: /dev/mapper/wenzi-ceshi
xfsrestore: session time: Tue Dec 19 14:29:27 2023
xfsrestore: level: 0
xfsrestore: session label: ""
xfsrestore: media label: ""
xfsrestore: file system id: aae5658f-02f7-4744-a28e-0f6092294ea1
xfsrestore: session id: dddee877-fdb8-4bec-a413-84225c75ae68
xfsrestore: media id: 23726ccb-2b37-4562-8d47-471bfad8534d
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 1 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore: stream 0 /root/data.img OK (success)
xfsrestore: Restore Status: SUCCESS
[root@wenzi ~]#cat /data/dir1/123.txt
123
LVM thin Volume 动态自动调整磁盘使用率
LVM的LV磁盘快照
快照就是将当时的系统信息记录下来,将来若有任何数据变动,则原始数据会被移动至快照区,没有变动的区域则由快照去和文件系统共享;
在数据变化前,会看到快照区内容和文件系统是一模一样的,当数据变化时,则变动前系统会将该区域的数据移动至快照区
图解:
vg中需要预留存放快照的空间,不能被占满。
快照区与被快照的lv必须在同一个vg卷组中。
系统新增了一个3G的磁盘,进行操作后如下
利用同一个卷组 vgsdb1 空闲的3G空间为 lvsdb1 建立快照区
-s :即建立快照的意思
因为xfs系统不允许相同uuid的文件系统挂载,所以加入参数 nouuid ,让系统忽略相同uuid的问题。
利用快照区复原系统
前提:要复原的数据量不能高于快照区能负载的实际容量,不然快照功能失效。
1、在 /lvmceshi 加个100M文件作为和快照 /snap1 的对比
2、利用 xfsdump 将快照区备份
3、卸载快照,卸载 /lvmsdb1 格式化清空 /lvsdb1 ,再恢复最初的数据(一次快照都没做的时候)