当设备读取为忙时(但已被确认)时,如何fsck分区?


11

我正在尝试fsck -p /dev/sda5修复ext4分区上的错误,但是命令输出

fsck from util-linux-ng 2.17.2
fsck.ext4: Device or resource busy while trying to open /dev/sda5
Filesystem mounted or opened exclusively by another program?

我已经确认正在使用/etc/mtablsof并且没有任何东西正在使用该分区,并且尚未挂载。我还曾经fuser -k /dev/sda5强行关闭使用该文件的所有内容,并umount尝试将其卸载无济于事。

fsck尽管该分区显示为忙碌,但我该如何强制至少检查并希望修复该分区?假设我有足够的信心确定它既未安装也未使用,并且数据损坏的可能性不是问题。

所有命令都是从Ubuntu 10.04 32位liveCD以root用户身份执行的。分区是Ubuntu 10.04 32位安装的系统(非本地)部分。


我已经找到了解决与该问题相关的更大问题的方法,但是我仍在寻找答案,以解决fsck如果认为设备忙(或为什么无法完成)的问题。
Keeblebrox 2011年

我在RHEL5.8系统上遇到相同的问题。/ tmp已卸载,/ etc / mtab和/ proc / mounts没有显示文件系统跟踪。我什至重启了计算机,确保我是唯一登录的计算机。lsof显示/ tmp上没有正在使用的文件。在使用相同的kickstart配置文件安装的4台相似的服务器上,相同的过程可以正常工作。这些服务器与该服务器之间的区别在于,该服务器已连接了SAN存储。多路径守护程序会导致这种情况吗?
Bram 2012年

对于我而言,这没有帮助,但是Red Hat KB(access.redhat.com/knowledge/solutions/54184)建议添加nodmraid内核选项作为解决此问题的方法。
Bram 2012年

Answers:


4

有些东西(通常在内核中,例如NFS线程,交换文件,绑定装载等)可以使文件系统繁忙,而这些东西不会在中显示fuser

如果您尝试fsck挂载的文件系统,它将被损坏。您应该找到一个不会自动挂载文件系统的实时CD,例如Knoppix或Fedora。


到目前为止,一切都已从活动磁盘运行。我正在尝试fsck使用本地文件系统,所以我希望NFS不会使它忙碌-但是,我对您所说的内核保持忙碌的方式不一定会显示出来。但是,由于它仍然在实时磁盘环境中发生,您是否知道一种阻止内核访问内核的时间足以让我运行的方法fsck
Keeblebrox 2011年

kes 正在使用实时磁盘吗?我只能想到两件事:1)尝试使用其他活动磁盘(例如,使用Fedora代替Ubuntu)。2)在实际系统上检查/ etc / fstab。也许有一个交换文件或绑定挂载正在自动打开?我未必
按此

好吧,不知何故,我完全错过了问题的最后一行。我已经适当更新了答案。
史蒂文·普里查德

+1是因为您提到自动挂载交换导致了不相关的突破,并且您的回复已帮助解决了更大的问题。fsck当我知道设备既不忙碌也不挂载时,并且数据损坏不是问题时,我仍然还是想找到一种强制方式。
Keeblebrox 2011年

也许mdadm已在分区上检测到RAID签名并将其绑定?检查/ proc / mdstat。
psusi 2011年


2

尝试引导另一个liveCD-我推荐SystemRescueCD,该CD是专门为解决linux安装问题而设计的。它也比典型的OS liveCD小。为了安全起见,请fsck从控制台运行(无X)。

如果该标准fsck -p不起作用,您也可以尝试e2fsck -y -f


根据手册页e2fsck -y -f强制检查干净的分区。它没有提及有关已安装分区的任何内容。您知道是否还会强制执行检查吗?
Keeblebrox 2011年

可能不是,但是您绝对应该避免对装入的文件系统进行fckcking(请参见e2fsck联机帮助页顶部的段落)。另一个想法:如果/etc/mtab似乎指示未挂载分区,但仍然出现错误,则还应检查/proc/mounts,因为mtab文件可能由于某些奇怪的原因而过时。
rozcietrzewiacz 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.