我在家里的一台个人电脑上运行最新版本的ubuntu服务器作为服务器。我上面有两个逻辑卷。vg0
和vg1
。最近,我注意到我/dev/vg0/lv-var
安装的分区/var
太小了。我备份了/var
和中的所有内容/home
,然后继续减少/dev/vg0/lv-home
分区并增加/dev/vg0/lv-var
分区。我使用的命令如下所示:
umount /home
lvreduce --size 325G /dev/vg0/lv-home
lvextend -L +100.22G /dev/vg0/lv-var
xfs_growfs /dev/mapper/vg0-lv--var
一切似乎都奏效了。请注意,我没有这样umount /var
做,因为它被许多基本流程使用。
重新启动后,系统现在启动到emergency mode
我什至无法使用键盘进行故障排除,因为它在处理 USB 连接时遇到问题,并且出现类似于以下内容的错误unable to enumerate USB device
/home
我觉得可能是我重启前没有remount的问题。
尝试在安全模式下安装回家时,我得到:
mount: /home: can't read superblock on /dev/mapper/vg0-lv--home.
当系统启动时我可以看到:
[FAILED] Failed to mount /home. (100.0% complete)
我尝试过xfs_repair
,但我什至无法将卷安装在任何地方,因为我得到can't read superblock on /dev/mapper/vg0-lv--home
我正在考虑删除逻辑卷,创建一个新卷并将其安装到主目录。我有数据备份,但如何做到这一点并让系统知道/home
在启动时安装新创建的数据?
答案1
我备份了
/var
和中的所有内容/home
那太棒了!您现在需要该备份/home
。
您在使用时lvreduce
没有--resizefs
先缩小其中的文件系统。结果,您切断了/home
文件系统的一部分,并且它现在已损坏并导致您进入紧急模式。
如果您的/home
文件系统是 XFS 文件系统,那么目前无论如何都无法非破坏性地缩小它。制作备份,然后收缩分区/逻辑卷,然后重新mkfs
启动收缩的分区/LV 并恢复备份是目前收缩 XFS 文件系统的唯一可用(生产质量)的方法。
因此,暂时注释掉紧急模式/home
中的条目/etc/fstab
,让系统或多或少正常启动,启动以退出紧急模式,然后重新取消注释条目mkfs
,挂载它,并恢复您的内容从备份。/dev/vg0/lv-home
/etc/fstab
/home
/home
你应该分层思考:
- 物理磁盘没问题
- 用作LVM物理卷的分区没问题
- LVM逻辑卷层已适当收缩,所以也很好
- 逻辑卷中的文件系统没有收缩,因此它的尾部被切断。
如果文件系统类型/home
是 XFS,您只需要运行sudo mkfs.xfs /dev/vg0/lv-home
,文件系统就可以再次挂载(尽管是空的)。之后,只需从备份中恢复内容即可。