在linux上,当一个目录的大小为0而不是4096时,这意味着什么?

这是一个我从未见过的奇怪的事情 – 一个目录的大小被ls报告为0而不是4096,我不能在其中创build任何文件。

# 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 

我猜你使用autofs你的主目录。

几个不同的伪文件系统将会出现这样的情况。 伪文件系统是不真正保存文件的文件系统。 你会注意到/ proc也是这样的。 基本上它是因为没有/ home,没有文件,没有任何东西。 当你尝试访问它的时候,autofs会看到这个请求,并尝试根据请求安装适当的主目录。 使用proc,那些文件不是真正的文件,它们只是由系统上运行的各种驱动程序(和内核)提供的文件的表示。

编辑:closuresautofs,它会显示为一个正常的目录。

这意味着有什么问题,你需要fsck文件系统。

df -i可能会很有趣 – 你可以在这个文件系统上使用inode吗?