我在托管设施中运行 Ubuntu 8.04 的机器上遇到了文件系统问题。以前的目录现在看起来像这样:
b--xr-SrwT 52 825452087 876163170 56, 97 2021-10-10 05:43 58
这是缓存数据,所以我不介意数据丢失,我只想修复文件系统。问题是,这是根文件系统,所以我无法卸载它来运行 fsck。
所以我的问题是:如何在根文件系统上运行 fsck,而不必一路开车到主机托管中心?
答案1
shutdown -rF now
应在重启时强制对 /etc/fstab 中的所有磁盘进行 fsck。链接:手动关机
或者,如果您希望每次重启时都进行 fsck:
cd /
touch forcefsck
reboot
答案2
在 debian 和 debian 衍生产品(如 ubuntu)上编辑远程服务器上的 /etc/default/rcS 并设置“FSCKFIX=yes”也是一个好主意
它会在启动时 fsck 中添加“-y”,这样远程服务器就不会面临等待某人登录控制台并运行 fsck 的风险。
另外,为了防止类似的事情再次发生,值得有一个可以启动的救援分区(例如,临时设置 grub 的默认值),ssh 进入,并在你的真实 rootfs 上运行 fsck。如果你目前没有可用的备用分区,你可以缩小交换分区以给自己足够的空间来制作救援分区(你可以用 debootstrap 填充它)。
如果您不能使用交换分区,您可以设置一个 grub 条目来启动实时 cd 映像(使用 iso 中的内核和 initrd)...但您必须修改 initrd 文件系统以获得正确的 IP 地址等,并确保 sshd 正在运行。 clonezilla、gparted 或 systemrescuecd 可以作为良好的实时系统的基础。您的 /boot 分区/目录需要足够大才能容纳这些文件。