ls -l 引发的基本概念问题inode

532阅读 0评论2012-05-26 azfa123
分类:

查找问题原因:
希望计算:
自动计算 目录下 接点数 包括子目录

纠正两个错误概念:
1。ls -l 中第二列是indoe数 ,应该是硬连接数
2。ls -i显示的是目录或者文件的inode号
3。inode概念

4.补充 (硬连接的inode号 和连接的目标文件inode号是一个。 指的是同一个文件。而软连接是新建立一个指针文件,所以是新连接号)

这也是为什么 硬连接无法跨越分区 建立,因为不同的分区是使用不同的超级块 来存储inode信息

目录drwx中
ls -l 中含义

-rw-r--r--    1 root     root            5 Aug 16 15:47 a
-rw-r--r--    2 52400    24067        5715 Nov 24  2004 abc
-rw-r--r--    1 root     root           17 Aug 16 14:48 a.htm
-rw-r--r--    1 root     root          164 Oct  9 15:32 a.sh
drwxr-xr-x    7 52400    24067        4096 Oct  9 15:29 phpadmin
drwxr-xr-x    3 root     root         4096 Aug 16 15:03 setup

1。
其中第二列表示的是硬连接数目,强调:几不是字节数,也不是inode数.
一般文件的硬连接数都是1 ,除非做了新的硬连接.而目录硬连接数 是当前目录下所包含的目录数目+2(2是. 和

..  不包括子目录) ,如:
setup 是3表示在setup下的子目录只有一个(3-2),我们ls看看


 ls setup/ -l
total 4
drwxr-xr-x    7 root     root         4096 Aug 16 15:16 mysql

同理 该mysql下目录应该有5个

2。
第二个问题:
ls -i

  97348 -rw-r--r--    1 root     root            5 Aug 16 15:47 a
  97347 -rw-r--r--    1 root     root           17 Aug 16 14:48 a.htm
  97349 -rw-r--r--    1 root     root          164 Oct  9 15:32 a.sh
 502945 drwxr-xr-x    7 52400    24067        4096 Oct  9 15:29 phpadmin
 129793 drwxr-xr-x    3 root     root         4096 Aug 16 15:03 setup


3。知道了一个文件和目录 都只占用一个inode
mke2fs -i 1048576  /dev/hda11
-i 这个参数的实际作用是 确定该分区hda11 实际的 inode数字,如上-i 1048576  对于一个128M的分区,只

能有128/1 (1M=1048576  )个inode,即表示 inode数 等于128 该分区内 只能建立128个文件/目录。在建立虽

然有空间 但是已经没有节点了。默认 -b 4096表示 一个文件 占用了4K,那么
如果 有128个文件 只占用了 128*4的空间 512K的空间,对于有128M的分区 却不能再建立文件了,因为没有节

点了。

所以 如果-i中设置太大 那么会造成如上 inode不够空间还剩余的情况 而 -b甚至的太大 会出现 分区碎片太

多的情况。

一个inode描述了一个文件中的数据占用了哪些块以及文件的访问权限、文件的修改时间和文件的类型。
EXT2文件系统中的每一个文件都用一个inode描述,而每一个inode都用一个独一无二的数字标识。文件系统的

inode都放在一起,在inode表中。

4.补充 (硬连接的inode号 和连接的目标文件inode号是一个。 指的是同一个文件。而软连接是新建立一个指针文件,所以是新连接号)

这也是为什么 硬连接无法跨越分区 建立,因为不同的分区是使用不同的超级块 来存储inode信息

所以对于一个文件只有一个inode号,而一个inode号却可以有多个文件名和之对应。

上一篇:嵌入式系统自学 书籍
下一篇:linux 驱动程序 tasklet 笔记