现象

系统文件损坏后进入紧急修复模式,无法进行维护工作

welcome to emergency mode!after logging in ,type “journalctl -xb” to view system logs,“systemctl reboot” to reboot ,“systemctl default” to try again to boot into default mode。

give root password for maintenance

查看运行日志,发现是/home目录挂载问题

journalctl -xb

# Failed to mount /home

修复

执行如下命令,确认/home的映射关系

[root@controller ~]# cat /etc/fstab  |grep home
/dev/mapper/centos-home /home                   xfs     defaults        0 0

方法一

1
xfs_repair /dev/mapper/centos-home

如果修复失败,请加-L参数

xfs_repair -L /dev/mapper/centos-home

如果修复完成,重启系统即可

方法二

如果方法一失效,则可以试试该方法

  1. 检查设备是否已经挂载。可以运行以下命令来查看设备的挂载状态:
1
df -h

​ 2. 如果设备已挂载,请尝试卸载该设备。可以使用以下命令卸载设备:

1
umount /dev/mapper/centos-home

​ 3. 创建一个目标目录,用于将备份数据存储到该目录中。可以使用以下命令创建目标目录:

1
mkdir /path/to/backup

​ 将 /path/to/backup 替换为你希望存储备份数据的实际路径。

使用 rsync 命令进行文件系统备份。运行以下命令: rsync -av –progress /source/directory/ /path/to/backup 复制 rsync -av –progress /source/directory/ /path/to/backup ​ 将 /source/directory/ 替换为要备份的文件系统的实际路径,将 /path/to/backup 替换为目标目录的路径。使用 -av 参数以彻底备份文件系统,并使用 –progress 参数以实时显示备份进度。

等待备份过程完成。这可能需要一些时间,具体时间取决于文件系统的大小和数据量。

请注意,在执行备份操作之前,请确保备份介质具有足够的可用空间,并且备份介质可靠并正确连接,以避免数据丢失风险。

  1. 运行 mkfs 命令:为了重新创建文件系统,你需要知道文件系统的类型。
  • 创建 ext4 文件系统,可以使用以下命令:
1
mkfs.ext4 /dev/mapper/centos-home
  • 创建 XFS 文件系统,你可以使用以下命令:
mkfs.xfs /dev/mapper/centos-home

这将在 /dev/mapper/centos-home 设备上创建一个新的 ext4(xfs) 文件系统。请注意,这将删除设备上的所有数据,请确保你已经对数据备份。

等待 mkfs 进程完成:mkfs 命令将花费一些时间来创建新的文件系统,具体时间取决于设备的大小。请耐心等待命令完成。

  1. 恢复备份的数据

要将备份的数据恢复到新的文件系统中,你可以按照以下步骤进行:

挂载新的文件系统:首先,你需要将新的文件系统挂载到一个临时的目录中。可以使用以下命令将新的文件系统挂载到 /mnt 目录:

1
mount /dev/mapper/centos-home /mnt

​ 请确保替换 /dev/mapper/centos-home 为你要恢复数据的新文件系统的设备。

解压备份文件:如果你有一个完整的备份文件,你可以使用适当的解压命令将其解压缩到 /mnt 目录下。例如,如果你的备份文件是 backup.tar.gz,你可以使用以下命令解压缩备份文件:

1
tar -xvzf backup.tar.gz -C /mnt

​ 请注意,如果备份文件是一个完整的文件系统备份(例如通过 tar 或 rsync 命令创建的备份),则只需将其解压缩(copy)到新的文件系统挂载点即可。

确保权限和所有权正确:在完成数据恢复后,确保恢复的文件和目录的权限和所有权是正确的。可以使用 chown 和 chmod 命令进行必要的更改。

  1. 进一步操作

卸载文件系统:在重启之前,请确保先卸载新的文件系统。你可以使用以下命令卸载它:

1
umount /mnt

​ 请确保替换 /mnt 为你挂载文件系统的目录。

更新文件系统表:你需要更新文件系统表以识别新的文件系统。可以使用以下命令重新生成文件系统表:

1
sudo blkid > /etc/fstab

​ 此命令将重定向 blkid 命令的输出到 /etc/fstab 文件,该文件是在启动时挂载文件系统时使用的文件。

重启系统

参考文章 https://blog.csdn.net/weixin_39709367/article/details/116597664