linux的高级存储管理
一、逻辑卷
(1)、逻辑卷基本概念
一般将磁盘挂载到目录上,当目录不断写入数据后,超过磁盘大小后,会超出内存范围。这时我们可以引入LVM(Logical Volume Manager) 即逻辑卷来解决分区空间不够用的情况。为了便于大家理解LVM的工作原理,我们引入下面这个通俗易懂的示例进行说明。
PV(物理卷)
相当于水果,水果条PE物理扩展
是水果具体切的大小,把许多水果条榨汁进入到大水杯VG(物理卷组)
,这个大水杯是不能直接使用的,需要用最小的小水杯LV(逻辑卷)
才能使用。
使用方法:当小水杯LV(逻辑卷)
使用满了后,从大水杯VG(物理卷组)
中取用即可,当大杯VG(物理卷组)
不够时,加入更多的水果PV(物理卷)
进行榨汁填充即可。
(2)、基本命令
pvcreate /dev/vdb1 创建pv物理卷
vgcreate westosvg -s 2M /dev/vdb1 创建VG物理卷westosvg,设定pv大小为2M
lvcreat -L 100M -n westoslv westosvg 以westosvg为物理卷创建100M的逻辑卷westoslv
mkfs.xfs /dev/westosvg/westoslv xfs格式化逻辑卷westoslv
mount /dev/westosvg/westoslv /westosdir 将逻辑卷/westoslv进行挂载
二、创建、拉伸磁盘
(1)、创建PV、VG、LV卷,挂载
1、创建可拉伸的磁盘
新建了一块1G大小的磁盘
查看LVM类型的代码
更改为LVM类型的磁盘
2、建立挂载目录和监控方便查看
mkdir /westosdir
watch -n 1 "pvs;echo ====;vgs;echo =====;lvs;echo ====;df -h /westosdir"
3、创建PV
pvcreate /dev/vdb1
将磁盘/dev/vdb1设为PV(相当于水果)
4、创建VG
vgcreate westosvg /dev/vdb1 -s 2M 其中-s 是指定PE(水果条)的大小最小为2M
查看当前PE(水果条的大小)
vgdisplay
最小的sizie为2M
删除vg,重新创建vg,使用最小存储单元大小为4M的默认设定
5、创建lvm(-L指定lv逻辑卷,即小水杯大小,-n指定逻辑卷名称)
lvcreate -L 100M -n westoslv0 westosvg 通过westosvg物理卷组建立逻辑卷 westoslv0
6、xfs格式化lvm
mkfs.xfs /dev/westosvg/westoslv0
7、挂载
mount /dev/westosvg/westoslv0 /westosdir/
(2)、lvm设备的拉伸
1、当vg里面的内存足够时进行拉伸
除了对lv逻辑卷进行拉伸外,还需要对挂载的文件进行拉伸
注意: 在rhel7中可以使用设备或挂载点来拉伸文件系统xfs_growfs 设备/挂载点;在rhel8中只能使用挂载点来拉伸文件系统xfs_growfs 挂载点
lvextend -L 200M /dev/westosvg/westoslv0 拉伸到200M
xfs_growfs /westosdir/
之前
现在
2、当vg的容量不足时
例如我们现在需要两个G的LV,但是扩展的VG不够就会出现以下的情况
此时我们需要fdisk交互式在/dev/vdb中建立另一物理设备/dev/vdb2,将其标签更改为Linux LVM
对新建物理设备/dev/vdb2进行pv格式化即创建pv,使用新的物理卷扩大vg物理卷组,此时可以成功对lvm进行拉伸
pvcreate /dev/vdb2
vgextend westosvg /dev/vdb2 将刚刚定义为pv的物理卷/dev/vdb2加入物理卷组westosvg
这下物理卷组westosvg有两个pv物理卷了,可以再进行lv的扩展了
(3)、lvm设备的缩减(lv的缩减)
xfs格式不支持lvm的缩减,我们需要卸载数据目录下的lvm设备,将其格式化为支持lvm缩减的ext4文件系统,既可以增加也可以缩减。
umount /westosdir/
mkfs.ext4 /dev/westosvg/westoslv0
挂载lvm设备到数据目录中,blkid可以查看到此时lvm的文件系统类型为ext4
mount /dev/westosvg/westoslv0 /westosdir/
blkid
在ext4文件系统下对lvm设备进行拉伸,与xfs文件系统不同,在对文件系统进行拉伸时使用的是resize2fs lvm
设备命令。具体缩减步奏如下
1、umount /westosdir 取消挂载
2、e2fsck -f /dev/westosvg/westoslv0 进行缩减
3、resize2fs /dev/mapper/westosvg-westoslv0 150M 缩减到150M
(4)、lvm设备的快照
lvm逻辑卷可以支持快照功能,快照可以保存原始lvm设备里的内容,读取设备时是从母盘读取,但写数据时是写入快照。这样一来,我们可以将lvm设备的快照挂载到指定数据目录中,避免在数据目录中执行操作时对原lvm设备的数据造成损坏。
实验步骤:
1、建立实验素材,在挂载目录建立文件
2、卸载挂载建立快照
卸载lvm设备,为lvm设备创建快照(-L指定快照设备大小,-n指定快照名称,-s指定快照源)并将快照挂载到数据目录 /westosdir中
3、在复制的快照中可以查看到创建的文件,然后将快照里面的文件进行删除
4、卸载并删除该快照,重新为lvm创建一个快照westoslv0-backup1,并挂载新创建的快照到数据目录中,查看该数据目录内容可以再次看到文件。
说明快照是一种很好的备份方式
(5)、lvm设备的缩减(pv的缩减和转移)
1、在对lvm缩减完成后,我们可以看到物理卷组vg中的物理卷/dev/vdb2是未被使用的,此时我们可以使用vgreduce
命令缩减vg,将闲置的物理卷/dev/vdb2移出vg
2、如果想要将正在被lvm使用的物理卷/dev/vdb1移出vg,我们需要使用pvmove命令将/dev/vdb1中的数据移动到物理卷组vg内的另一物理卷/dev/vdb2中,数据移动完成后即可成功将物理卷/dev/vdb1移出vg,缩减vg
vgreduce westosvg /dev/vdb2
只有一个PV提供了,移除了/dev/vdb1
3、如果想要将正在被lvm使用的物理卷/dev/vdb1移出vg,我们需要使用pvmove命令将/dev/vdb1中的数据移动到物理卷组vg内的另一物理卷/dev/vdb2中,数据移动完成后即可成功将物理卷/dev/vdb1移出vg,缩减vg
pvmove /dev/vdb1 /dev/vdb2
发现/dev/vdb1的存储空间恢复正常,转移到/dev/vdb2/去了
(6)、lvm设备的删除
执行lvremove
设备命令删除lvm设备及为lvm设备创建的快照,vgremove
删除物理卷组vg,pvremove
删除物理卷pv,fdisk
交互式在/dev/vdb中删除建立的所有物理设备