目录 ls 中显示的问号。IO 错误

54 linux filesystems debian

有没有人见过这个?我的服务器上安装了一个 raid 5,无论出于何种原因它开始显示:

杰森@box2:/mnt/raid1/cra$ ls -alh
ls: 无法访问 e6eacc985fea729b2d5bc74078632738: 输入/输出错误
ls: 无法访问 257ad35ee0b12a714530c30dccf9210f: 输入/输出错误
共 0
drwxr-xr-x 5 根 123 2009-08-19 16:33 。
drwxr-xr-x 3 根根 16 2009-08-14 17:15 ..
?????????? ? ? ? ? 257ad35ee0b12a714530c30dccf9210f
drwxr-xr-x 3 根根 57 2009-08-19 16:58 9c89a78e93ae6738e01136db9153361b
?????????? ? ? ? ? e6eacc985fea729b2d5bc74078632738

md5 字符串是实际的目录名称,而不是错误的一部分。问号很奇怪,当您尝试使用/删除/等它时,任何带有问号的目录都会引发 io 错误。

由于“忙”,我无法卸载驱动器。重新启动服务器“修复”了它,但它在关闭时引发了一些突袭错误。我已经配置了两个 raid 5 阵列,并且都开始在随机文件上执行此操作。两者都使用以下配置:

mkfs.xfs -l size=128m -d agcount=32
mount -t xfs -o noatime,logbufs=8

没什么太花哨的,但是这个盒子的优化配置的一部分。我们没有对驱动器进行分区,这被认为是一个可能的问题。这可能是罪魁祸首吗?

小智 54

我遇到了类似的问题,因为我的目录具有读取 (r) 但没有执行 (x) 权限。我的目录列表显示:

myname@srv:/home$ ls -l service/mail/
ls: cannot access service/mail/001_SERVICE INBOX: Permission denied
total 0
-????????? ? ? ? ?                ? 001_SERVICE INBOX
d????????? ? ? ? ?                ? 01_CURRENT SERVICE
Run Code Online (Sandbox Code Playgroud)

邮件目录设置了 r 位,但没有设置列出或搜索和访问所需的 x。做sudo chmod -R g+x mail解决了这个问题。

  • 如果你的 `ls` 在权限/权限区域返回 `no such file or directory` 和一堆 `?????` 怎么办? (7认同)
  • 'sudo chmod -R g+x mail' 然后'chmod +x mail' 解决了我的问题,谢谢! (5认同)

小智 12

ls输出中的问号仅表示它不能stat()作为目录条目。如果您ls拥有 r(ead) 但没有 x(搜索)权限的目录,您也可以看到这些内容。但是在那种情况下它不会报告I/O 错误

在您的情况下,似乎存在磁盘错误或可能的文件系统损坏。 /var/log/messagesdmesg可能会透露更多细节。


小智 11

提到读取但不执行或 stat() 的答案是正确的。但是有一个共同的原因(除了腐败)让我咬了几次,并且可以很好地将您的问题与 IO 错误相匹配。如果您不正确地挂载文件系统,则该文件系统的挂载点可能会显示为问号。如果您在刚刚尝试安装新文件系统的地方看到这些,请在担心损坏和 fsck 之前尝试以下操作。

$ sudo umount /mnt/raid1/cra/257ad35ee0b12a714530c30dccf9210f
$ ls -alh /mnt/raid1/cra
Run Code Online (Sandbox Code Playgroud)

您应该会看到带有权限和属性而不是问号的 257ad35ee0b12a714530c30dccf9210f 文件夹。如果是这样,请为您的挂载命令或 /etc/fstab 文件搜索其他选项。如果没有,也许是时候阅读其他答案,备份你能做的,然后运行 ​​fsck。


小智 5

尽快进行备份,如果只是这样,如果您在尝试修复任何潜在损坏时进一步弄乱它,您可以恢复到原始较少损坏的状态。备份后,你可以运行 fsck 看看它是否认为有任何问题。