[Linux] Linux逻辑卷管理
目录
逻辑卷基本管理
硬盘分区管理方案缺点
逻辑卷管理硬盘方案优点
逻辑卷基本概念
创建物理卷
创建卷组
创建逻辑卷
扩展和缩减卷组
环境准备
扩展卷组
删除卷组
扩展和缩减逻辑卷
扩展逻辑卷
缩减逻辑卷
扩展和缩减文件系统
扩展xfs文件系统
环境准备
第一步:扩展逻辑卷
第二步:扩展文件系统
扩展ext4文件系统
环境准备
扩展逻辑卷
扩展文件系统
缩减ext4文件系统
创建逻辑卷快照
将 home 未使用空间挪给 root
逻辑卷基本管理
硬盘分区管理方案缺点
-
硬盘分区空间必须使用连续空间,所以硬盘分区扩容很麻烦,特别是要扩容的分区后没有空间。
-
使用硬盘分区创建的文件系统不同跨多个硬盘,受单个硬盘容量限制。
-
如果硬盘损坏,则文件系统中数据也会丢失。
逻辑卷管理硬盘方案优点
-
使用逻辑卷可以更加灵活地扩展和缩减文件系统空间。
-
使用逻辑卷创建的文件系统可以跨多个硬盘,适合创建超大容量文件系统。
-
使用逻辑卷可以创建镜像卷,保证数据的冗余性。即使单个硬盘损坏,文件系统中数据也会丢失。
-
使用逻辑卷还可以创建快照,保留某一时刻数据,就像虚拟机快照一样。
逻辑卷基本概念
LVM是逻辑卷管理的缩写,LVM将若干个磁盘或者磁盘分区链接为一个整块的卷组,形成一个存储池。管理员可以在卷组上任意创建逻辑卷,并进一步在逻辑卷上创建文件系统。
-
物理卷PV,是LVM的基本存储逻辑块
-
卷组VG,有一个或多个物理卷组成
-
逻辑卷LV,是从卷组中创建出来的一个逻辑空间
创建物理卷
#创建单个pv
pvcreate /dev/sdb
#创建多个pv
pvcreate /dev/sd{c..d}
#查看pv列表
#查看单个pv详细信息
pvdisplay /dev/sdb
创建卷组
#创建包含单个PV的VG
vgcreate vg01 /dev/sdb
#创建包含多个PV的VG
vgcreate vg02 /dev/sd{c..d}
#查看pv表
pvs
#查看VG表
vgs
#查看单个VG详细信息
vgdisplay vg02
PE是PV的最小存储单元。在创建VG时可通过-s选项设置
创建逻辑卷
#在卷组vg01中创建一个逻辑卷:名称为data01,大小为5G
lvcreate -n data01 -L 5G vg01
#在卷组vg02中创建一个逻辑卷:名称为data02,大小为5G
lvcreate -n data02 -L 5G vg02#查看lv表
lvs
逻辑卷设备名由如下三种格式:
-
/dev/vname/lvame
-
/dev/mapper/vname-lvame
-
/dev/dm-N
#验证逻辑卷有没有创建成功
ls -l /dev/vg02/data02
清理LVM
[10:34:45 root@rocky8-znf ~]# umount /dev/vg01/data01[10:35:12 root@rocky8-znf ~]# lvremove /dev/vg01/data01 /dev/vg02/data02
Do you really want to remove active logical volume vg01/data01? [y/n]: yLogical volume "data01" successfully removed.
Do you really want to remove active logical volume vg02/data02? [y/n]: yLogical volume "data02" successfully removed.[10:35:44 root@rocky8-znf ~]# vgremove vg01 vg02Volume group "vg01" successfully removedVolume group "vg02" successfully removed[10:35:56 root@rocky8-znf ~]# pvremove /dev/sd{b..d}Labels on physical volume "/dev/sdb" successfully wiped.Labels on physical volume "/dev/sdc" successfully wiped.Labels on physical volume "/dev/sdd" successfully wiped.
扩展和缩减卷组
环境准备
#创建卷组
vgcreate vg01 /dev/sdb
#创建逻辑卷
lvcreate -n data01 -L 10G vg01
扩展卷组
如果卷组空间不足,可以通过添加新的物理卷到卷组中,以扩展卷组容量
vgextend vg01 /dev/sd{c..d}
删除卷组
如果卷组空间中有多余的物理卷或物理卷容量小需要更换,则可以将物理卷从卷组中删除。但是删除的物理卷不能在使用中。
#查看物理卷使用状态
pvs
#此时/dev/sdb正在使用,删除时会报错
vgreduce vg01 /dev/sdb
#将物理卷/dev/sdb中的数据移动到其他物理卷即可解决问题
pvmove /dev/sdb
#或移动到指定物理卷
pvmove /dev/sdb /dev/sdd
#再次查看物理卷状态
pvs
#此时/dev/sdb不在使用,可以删除
vgreduce vg01 /dev/sdb
扩展和缩减逻辑卷
扩展逻辑卷
#逻辑卷增加2G
lvextend -L +2G /dev/vg01/data01lvs /dev/vg01/data01
缩减逻辑卷
#逻辑卷减小2G
lvreduce -L -2G /dev/vg01/data01lvs /dev/vg01/data01
扩展和缩减文件系统
扩展xfs文件系统
XFS文件系统只支持扩展,不支持缩减
环境准备
#格式化文件系统并创建数据
mkfs.xfs /dev/vg01/data01
mkdir /data01
#挂载
mount /dev/vg01/data01 /data01#创建数据
cp /etc/host* /data01
ls /data01
第一步:扩展逻辑卷
lvextend -L 15G /dev/vg01/data01
lvs /dev/vg01/data01
第二步:扩展文件系统
xfs_growfs /data01
df -h /data01ls /data01
扩展ext4文件系统
EXT4文件系统既支持扩展,也支持缩减
环境准备
#格式化文件系统
umount /data01
mkfs.ext4 /dev/vg01/data01#挂载
mount /dev/vg01/data01 /data01
df -h /data01#准备文件
cp /etc/host* /data01
ls /data01
扩展逻辑卷
lvextend -L 30G /dev/vg01/data01
扩展文件系统
resize2fs /dev/vg01/data01
缩减ext4文件系统
缩减EXT4文件系统注意事项:
-
不支持在线缩减,必须卸载后缩减。
-
缩减后的容量,不能小于当前使用的容量。
ext4减容流程:
1.卸载文件系统
- e2fsck文件系统
3.缩减文件系统
4.缩减Iv
5.挂载测试
#卸载文件系统
umount /data01#检测文件系统
e2fsck -f /dev/vg01/data01#缩减文件系统
resize2fs /dev/vg01/data01 2G#缩减逻辑卷
lvreduce -L 2G /dev/vg01/data01#挂载验证
mount /dev/vg01/data01 /data01
df -h /data01
补充说明:
如果文件系统是构建在磁盘分区上,扩展文件系统容量和缩减文件系统容量操作相同。
创建逻辑卷快照
#卸载并删除逻辑卷
umount /dev/webapp/webapp01
lvremove /dev/webapp/webapp01#创建一个新的逻辑卷
lvcreate -n webapp01 -L 20G webapp
#格式化
mkfs.xfs /dev/webapp/webapp01
#挂载
mount /dev/webapp/webapp01 /var/www/html/
#准备文件
cp -a html/* /var/www/html/#创建快照
lvcreate -s -n webapp01-snap1 -L 20G /dev/webapp/webapp01
#卸载,用于测试快照是否正常运行
umount /dev/webapp/webapp01
#挂载快照并验证
mount /dev/webapp/webapp01-snap1 /webapp/webapp01/
ls /webapp/webapp01/
将 home 未使用空间挪给 root
#检查/home挂载情况
df -hT /home
#备份/home数据
cp -a /home/ .
#卸载并删除/home
umount /home
lvremove /dev/rl/home
#创建新的/home逻辑卷,并格式化
lvcreate -L 30G -n home rl
mkfs.xfs /dev/rl/home
#挂载并恢复数据
mount /dev/rl/home /home/
ls /home/
cp -a ./home/* /home/
#验证用户环境
su - demisse
df -h /home
#检查LVM状态
vgs
lvs
#扩展根文件系统
lvextend -rL +30G /dev/rl/root
lvs
vgs