我如何检查/ dev / xvda1?

login到EC2(Ubuntu)实例,我明白了

*** /dev/xvda1 should be checked for errors *** 

我不能fsck /dev/xvda1因为它是挂载的,而sudo umount /dev/xvda1因为正在使用而失败。 lsof表演

 jbd2/xvda 172 root cwd DIR 202,1 4096 2 / jbd2/xvda 172 root rtd DIR 202,1 4096 2 / jbd2/xvda 172 root txt unknown /proc/172/exe 

kill -SIGKILL 172是无效的。

该怎么办?

当系统上存在文件/ forcefsck时,现在大多数Linux应该在启动时执行强制fsck。 如果您有权自由重启虚拟机,请运行

 touch /forcefsck 

然后在方便时重新启动

对于我们的ec2 ubuntu实例,上面的答案没有完全工作。

在Ubuntu上,默认情况下, rcS文件中没有启用检查。 所以

  1. 编辑rcS文件sudo vi / etc / default / rcS

在线以下

 #FSCKFIX=no 

 FSCKFIX=yes 
  1. 编辑fstab文件。 查找/的logging,如果最后一位数字为“0”,则将其更改为“1”。 最后一个字段是fsckorder,被fsck用​​来决定检查磁盘的顺序。 如果该值为“0”,则跳过该磁盘 。

例如,

 LABEL=cloudimg-rootfs / ext4 defaults,discard 0 0 

 LABEL=cloudimg-rootfs / ext4 defaults,discard 0 1 
  1. 创build/ forcefsck文件

    sudo touch / forcefsck

从ec2控制台重新启动。

在/ etc / fstab中将fsckorder的值从“1”恢复为“0”删除行FSCKFIX=yes将rcS文件恢复到原始状态。

希望它有帮助。

由于你不能启动到现场光盘,这可能听起来有点奇怪,但我想它会做这项工作)

高水平:

  • 启动到新的(另一个)实例。
  • 将旧实例的存储附加到新(当前)。
  • 运行fsck
  • 从新(当前)分离存储并将其重新附加到旧实例。