如何检查/dev/xvda1?

use*_*587 62 ubuntu fsck amazon-ec2

在登录到 EC2 (Ubuntu) 实例时,我看到

*** /dev/xvda1 should be checked for errors ***
Run Code Online (Sandbox Code Playgroud)

我不能,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
Run Code Online (Sandbox Code Playgroud)

并且kill -SIGKILL 172无效。

该怎么办?

小智 103

对于我们的 ec2 ubuntu 实例,上述答案并不完全有效。

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

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

线下

#FSCKFIX=no
Run Code Online (Sandbox Code Playgroud)

添加

FSCKFIX=yes
Run Code Online (Sandbox Code Playgroud)
  1. 编辑 fstab 文件。须藤vi /etc/fstab

查找 / 的记录,如果最后一位数字为“0”,则将其更改为“1”。最后一个字段是 fsckorder,fsck 使用它来决定检查磁盘的顺序。如果值为“0”,则跳过该磁盘

例如,

LABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 0
Run Code Online (Sandbox Code Playgroud)

LABEL=cloudimg-rootfs   /        ext4   defaults,discard        0 1 
Run Code Online (Sandbox Code Playgroud)
  1. 创建 /forcefsck 文件

    须藤触摸/forcefsck

从 ec2 控制台重新启动。

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

希望能帮助到你。

  • 这对我有用。简单地执行“touch /forcefsck”并不能解决问题,我还必须启用 FSCKFIX。 (5认同)
  • 谢谢,这在 AWS 的 ec2 实例上为我解决了。我不必从控制台重新启动,一个简单的 `sudo reboot` 和你的更改就解决了这个问题。 (2认同)

Sga*_*uuw 51

现在大多数 Linux 应该在系统上存在文件 /forcefsck 时在引导时执行强制 fsck。如果您可以随意重新启动 VM,请运行

touch /forcefsck
Run Code Online (Sandbox Code Playgroud)

然后在您方便的时候重新启动


ale*_*xus 7

由于您无法启动到实时光盘,这听起来可能有点奇怪,但我想它可以完成这项工作)

高水平:

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