上一篇博文介绍移除物理卷时,需要删除逻辑卷,昨晚想了一晚,今天早上起床后继续查阅相关资料,发现这是不对的,如果真的删除了逻辑卷,那么数据就全没了,LVM不可能那么弱。
经过查找资料发现,终于找到了一个靠谱的解决方案,那就是新增一个物理卷,并添加到逻辑卷中,这时可以把要移除物理卷的数据移动到新增的物理卷中,然后再移除物理卷(但在这里我有一个疑问就是:当新增的物理卷的容量没有要移除的物理卷容量大时,就需要新增多个物理卷来备份数据,那怎么把数据备份到多个物理卷呢?暂时还没找到解决方案)
注意:本文的操作需要在root用户下
实验环境:
1 unbuntu(其它类型的linux应该也适用)、VMware
2 卷组名称Vgroup,逻辑卷名称lvtest,磁盘盘符路径:/dev/sdb /dev/sdc,文件系统类型ext4
使用pvs -o+pv_used查看逻辑卷的使用情况:
查看挂载信息:
可以看到逻辑卷lvtest的挂载点是/zxy_data,进入/zxy_data目录查看文件使用情况
注意:如果是自动挂载,则先umount
一切准备就绪,本实验移除盘符/dev/sdc
具体步骤如下:
1 添加一个2G的硬盘,用于备份/dev/sdc的数据
开启虚拟机
从上图可以看到sdd即为我们刚新增的硬盘对于的盘符
2 把sdd设为物理卷并添加到逻辑卷lvtest中
2.1 把sdd设为物理卷
pvcreate /dev/sdd
2.2 把sdd添加到卷组Vgroup中
vgextend Vgroup /dev/sdd
2.3 将/dev/sdc的数据备份到/dev/sdd中
查看卷组的大小
可以看到卷组中还有511个PE空闲(即为我们刚才插入的2G硬盘的容量)
再次使用pvs -o+pv_used查看逻辑卷的使用情况
移动sdc的数据到sdd中
pvmove /dev/sdc /dev/sdd
可以看到已经移动完毕,时间有点久,再次使用pvs -o+pv_used查看逻辑卷的使用情况
可以看到sdc的used为0,sdd的used为2.00g
2.4 把sdc从卷组中移除
vgreduce Vgroup /dev/sdc
可以看到sdc已经被移除了,你去试试移除正在使用的sdd试试
马上报Physical volume "/dev/sdd" still in use
这时,可以看到sdc已经从卷组Vgroup中移除了
注意:写到这里,刚想起,我使用的是手工挂载目录,如果是自动挂载,则先umount
把逻辑卷lvtest挂载到zxy_data中,并查看zxy_data下的文件信息
可以看到之前的数据还在
2.5 把sdc 设为非物理卷
先看一下逻辑卷的信息
可以看到sdc虽然已经从卷组Vgroup中移除了,但还是物理卷
把sdc设为非物理卷
pvremove /dev/sdc
再来查看逻辑卷及挂载信息
可以看到sdc已经回到最初的状态了
拓展(下面的方案不可行):
当我把前面的sdd对应的硬盘移除了(即模拟sdd硬盘出现故障,不能正常使用了,不知这种模拟的方式是否正确),再进入系统,发现整个逻辑卷不能正常使用,查看逻辑卷信息,发现有一个unknown device
这时需要使用
vgreduce --removemissing /dev/卷组名称
如:vgredduce --removemissing /dev/Vgroup
发现移除不了,但后面的提示信息告诉我们需要加--force参数,即:
vgredduce --removemissing --force /dev/Vgroup
虽有警告信息,但好歹也移除了,注意观察,输出看到Removing particl LV lvtest,即把lvtest逻辑卷也给删除了
从上图可以看出,虽然移除了,但逻辑卷lvtest却不见了,重启系统试试
重启后,发现问题依旧,lvtest逻辑卷彻底废了