如何计算 某个目录(包括所有子目录和文件),占用的inode数

如何计算 某个目录(包括所有子目录和文件),占用的inode数

我知道的关于innode有关的只有ls -i,但是表达的是inode的号,df -i只可以显示某个分区的使用情况,我现在只想知道某个目录 占用的情况

谢谢      
不很清楚你的问题
每个文件占用一个 inode      
这是个概念问题:
一个文件和一个目录 无论多大 都是占用一个INODE,这个是斑竹教会我的,而且我测试也是这样的.
我有这个疑问 是因为 用mke2fs -i 这个参数可以指定bytes/inode  ratio,按照我的理解 那么如果-i 4096那么每4K分配一个inode,那么当文件大于4K那么一个文件就可能占用多个inode,但实际上inode数只可能一个.      
1. mke2fs -i 指定的是一个 inode 占用多少个 bytes
2. 建议看看 inode 的 definition      
inode: A data structure holding information about files in a Unix file system. There is an inode for each file and a file is uniquely identified by the file system on which it resides and its inode number on that system. Each inode contains the following information: the device where the inode resides, locking information, mode and type of file, the number of links to the file, the owner's user and group ids, the number of bytes in the file, access and modification times, the time the inode itself was last modified and the addresses of the file's blocks on disk. A Unix directory is an association between file leafnames and inode numbers. A file's inode number can be found using the "-i" switch to ls.      
[QUOTE=dearvoid]1. mke2fs -i 指定的是一个 inode 占用多少个 bytes[/QUOTE]这个解释不正确       
一般来说, Linux (ext2/ext3) 中一个 inode 占用 128 个 bytes, 并且 inode 的总数是在 mkfs 的时候确定下来的, 这个数目在 mkfs 之后不能再修改, 因此我们在 mkfs 时要确保为 inode 分配了足够的空间, 否则将来我们可能没有可用的 inode 来创建新的 file. mkfs 根据什么来确定 inode 的总数的呢? 如果你的 disk 上小文件比较多, inode 数就得多一些, 如果大文件比较多, inode 数就可以少一些. 比如: 如果你的文件都是 8K 大小, mkfs 就要为每 8K 的 space 预先分配一个 inode, 即 mke2fs -i 8192; 如果你的文件都是 1M 大小, mkfs 就要为每 1M 的 space 预先分配一个 inode, 即 mkfs -i 1048576.

但愿我已经说明白了       
下面在一个 64M 的 dev 上试验一下:
复制内容到剪贴板
代码:
[color=blue]-(user@host:tty)-(tmp)-
[18815 0] %[/color] lvdisplay /dev/vg0/foo
--- Logical volume ---
LV Name                /dev/vg0/foo
VG Name                vg0
LV Write Access        read/write
LV Status              available
LV #                   2
# open                 0
LV Size                [color=red]64 MB[/color]
Current LE             16
Allocated LE           16
Allocation             next free
Read ahead sectors     1024
Block device           58:1


[color=blue]-(user@host:tty)-(tmp)-
[18815 0] %[/color] mke2fs -i [color=red]1048576[/color] /dev/vg0/foo  [color=red]<--- 1M per file[/color]
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
[color=red]64 inodes[/color], 65536 blocks
3276 blocks (5.00%) reserved for the super user
First data block=1
8 block groups
8192 blocks per group, 8192 fragments per group
8 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[color=blue]-(user@host:tty)-(tmp)-
[18815 0] %[/color] dumpe2fs /dev/vg0/foo | head -n40
dumpe2fs 1.32 (09-Nov-2002)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          ec3e0f29-15fb-4554-bce8-334e91965bd7
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      filetype sparse_super
Default mount options:    (none)
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
[color=red]Inode count:              64[/color]
Block count:              65536
Reserved block count:     3276
Free blocks:              65488
[color=red]Free inodes:              53[/color]
First block:              1
Block size:               1024
Fragment size:            1024
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         8
Inode blocks per group:   1
Filesystem created:       Mon Oct 10 04:56:58 2005
Last mount time:          n/a
Last write time:          Mon Oct 10 04:56:58 2005
Mount count:              0
Maximum mount count:      29
Last checked:             Mon Oct 10 04:56:58 2005
Check interval:           15552000 (6 months)
Next check after:         Sat Apr  8 04:56:58 2006
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
[color=red]Inode size:               128[/color]


Group 0: (Blocks 1-8192)
  Primary superblock at 1, Group descriptors at 2-2
  Block bitmap at 3 (+2), Inode bitmap at 4 (+3)
  Inode table at 5-5 (+4)
[color=blue]-(user@host:tty)-(tmp)-
[18815 0] %[/color] mount /dev/vg0/foo lvm/
[color=blue]-(user@host:tty)-(tmp)-
[18815 0] %[/color] cd lvm/
/root/tmp/lvm
[color=blue]-(user@host:tty)-(lvm)-
[18815 0] %[/color] for ((i = 1; i < 64; i++)); do touch $i; done
touch: creating `54': No space left on device    [color=red]<--- only 53 files created[/color]
touch: creating `55': No space left on device
touch: creating `56': No space left on device
touch: creating `57': No space left on device
touch: creating `58': No space left on device
touch: creating `59': No space left on device
touch: creating `60': No space left on device
touch: creating `61': No space left on device
touch: creating `62': No space left on device
touch: creating `63': No space left on device
[color=blue]-(user@host:tty)-(lvm)-
[18815 1] %[/color] ls
1   11  13  15  17  19  20  22  24  26  28  3   31  33  35  37  39  40  42  44  46  48  5   51  53  7  9
10  12  14  16  18  2   21  23  25  27  29  30  32  34  36  38  4   41  43  45  47  49  50  52  6   8  lost+found
[color=blue]-(user@host:tty)-(lvm)-
[18815 0] %[/color]
      
谢谢 dearvoid ,你很尽职。

请问怎么查找关于inode 的定义,或者到哪里去找,请指条明路
比如:“一般来说, Linux (ext2/ext3) 中一个 inode 占用 128 个 bytes,”这个参数 是在哪找到的      
不记得是 google 还是 man page 里面的了 或者是我自己的杜撰?