LVM介绍
LVM:Logical Volume Manager 可以允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,允许在多个物理设备间重新组织文件系统
LVM可以弹性的更改LVM容量
实现步骤
我们现在说有一个分区和一个硬盘,计划让他们合二为一来作为逻辑卷使用
先用pvcreate
命令创建
pvcreate /dev/nvme0n2p1 /dev/nvme0n3
创建一个卷组并将刚才创建的卷加入到卷组中并指定大小为16M
vgcreate -s 16M testvg0 /dev/nvme0n2p1 /dev/nvme0n3
同时创建逻辑卷;分配大小并命名并指定那个卷组(最大不要超过卷组的最大容量)
lvcreate -L 8G -n lv-docker testvg0
查看一下我们现有的逻辑卷
格式化逻辑卷并设置为ext4格式(这里设置为ext4格式是为了方便后续的扩缩容操作。xfs格式不不支持缩容!)
格式化完毕后现在写入到/etc/fstab/
文件中永久保存
UUID=3c34ae0c-7d5f-4186-beda-66d60dc22e21 /data/docker ext4 defaults 0 0
计划挂载到 /data/docker/
目录下,我们先创建目录 mkdir -p /data/docker/
然后 mount -a
命令使写入的文件生效
到这里我们的逻辑卷就算全部创建完成了。接下来继续扩容和缩容的实验。
扩容逻辑卷
扩容时需要注意不能只扩展逻辑卷的大小还是扩展文件系统。
lvextend -r -l +100%free /dev/testvg0/lv-docker
df -h 查看是否扩容成功
同时卷组中的剩余容量已被用光,文件系统类型也完成了扩容。
缩容逻辑卷
缩容是很危险的事情!缩容是一定要做备份!切勿造成数据丢失影响生产。
我们这里还是以/data/docker/
这个文件夹为例进行缩容
lvreduce -L 8G -r /dev/testvg0/lv-docker
缩容的前提是文件系统类型是ext4格式,xfs 文件类型不支持缩容!!!
缩容之后重新挂载即可
发现逻辑卷已从刚才的10G缩减为8G
逻辑卷快照
逻辑卷快照和vmware里的快照是一样的,都是来实现快速恢复。
我们先在逻辑卷中编辑f1.txt f2.txt f3.txt
三个文件已做备用
lvcreate -n lv-docker-snapshot -s -p r -L 1G /dev/testvg0/lv-docker
-p :文件属性为只读,防止恶意篡改快照
-n :快照名称
lvdisplay查看详细信息
挂载到/mnt
目录下进行查看
如果使用的是xfs文件格式使用以下命令
mount -o ro,nouuid /dev/testvg0/lv-docker-snapshot /mnt/
此时我们看到的源文件还是在逻辑卷中的文件,并不是真正存在于快照中。现在我们对逻辑卷中的文件进行修改。(随意修改,文件破坏的越乱越好)
echo 0 > f1.txt
echo "this is the test" > f2.txt
快照恢复
如果是修改后想恢复到之前的文件,要先取消挂载
umount /mnt/
umount /data/docker/
然后使用恢复命令
lvconvert --merge /dev/testvg0/lv-docker-snapshot
完成之后在将文件挂载回原目录并查看恢复的文件
mount /dev/testvg0/lv-docker /data/docker/
文件恢复成功。
删除快照
要先将 /etc/fstab/
文件中的挂载关系删除,并且确保都已取消挂载。
lvremove /dev/testvg0/lv-docker
vgremove testvg0
pvremove /dev/nvme0n3
三条命令执行完毕之后,我们的快照,卷组,逻辑卷都会进行删除。至此全部结束