在 Linux 上,如果目录大小​​为 0 而不是 4096,这是什么意思?

在 Linux 上,如果目录大小​​为 0 而不是 4096,这是什么意思?

这是一个我从未见过的奇怪的事情—— ls 报告的目录大小为 0 而不是 4096,并且我无法在其中创建任何文件。

# ls -ld lib home
drwxr-xr-x.  2 root root    0 Feb  7 03:10 home  <-- it has zero size
dr-xr-xr-x. 11 root root 4096 Feb  4 09:28 lib
# touch home/foo
touch: cannot touch `home/foo': No such file or directory  <-- and I can't create files in it
# rm home
rm: cannot remove `home': Is a directory   <-- look, it really is a dir

那么目录大小为 0 而不是 4096 意味着什么?

Fedora core 14 上的文件系统是 ext4。

的输出mount为:

/dev/mapper/vg_dev-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/vda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

输出du -s /home

0   /home

输出stat /home

  File: `/home'
  Size: 0           Blocks: 0          IO Block: 1024   directory
Device: 15h/21d Inode: 34913       Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-02-07 03:45:46.188995765 -0800
Modify: 2011-02-07 03:11:59.980995019 -0800
Change: 2011-02-06 07:58:45.874995002 -0800

答案1

我猜你正在使用 autofs 作为你的主目录。

会出现几个不同的伪文件系统,如下所示。伪文件系统是实际上不保存文件的文件系统。您会注意到 /proc 也是这样的。基本上是因为 /home 中没有任何东西,没有文件,什么都没有。当您尝试访问它时,autofs 会看到请求并尝试根据请求挂载相应的主目录。对于 proc,这些不是真正的文件,它们只是系统上运行的各种驱动程序(和内核)提供的文件的表示。

编辑:关闭 autofs 它会像普通目录一样显示。

答案2

df -i可能会很有趣 - 您可能在文件系统上缺少 inode 吗?

答案3

这意味着出现了问题,您需要对文件系统进行 fsck。

相关内容