当我们在
Linux
下的
ext2
½立一个一般文件时,
ext2
会分配一个
inode
与相对于该文件大小的
block
数量给该文件。例如:假设我的一个
block
4 Kbytes
,而我要½立一个
100 KBytes
的文
件,那么
linux
½分配一个
inode
25
block
来储存该文件!
但同时请注意,由于
inode
½
12
个直½指向,因此还要多一个
block
来作为区块号码的记录喔!
.
目录树读取:
好了,经过上面的说明你也应该要很清楚的知道
inode
本身并不记录文件名,文件名的记录是在目
录的
block
当中。
因此在
第五章文件与目录的权限
说明中,
我们才会提到『新增
/
删除
/
更名文件名
与目录的
w
权限有关』的特色!那么因为文件名是记录在目录的
block
当中,
因此当我们要读取
某个文件时,就务必会经过目录的
inode
block
,然后才能够找到那个待读取文件的
inode
号码,
最终才会读到正确的文件的
block
内的数据。
由于目录树是由根目录开始读起,因此系统透过挂载的信息可以找到挂载点的
inode
号码,此时就
能够得到根目录的
inode
内容,并依据该
inode
读取根目录的
block
内的文件名数据,再一层一层
的往下读到正确的档名。举例来说,如果我想要读取
/etc/passwd
这个文件时,系统是如何读取的呢?
[root@study ~]#
ll
-
di / /etc /etc/passwd
128
dr
-
xr
-
x
r
-
x
. 17 root root 4096 May 4 17:56 /
33595521
drwxr
-
x
r
-
x
. 131 root root 8192 Jun 17 00:20 /etc
36628004
-
rw
-
r
--
r
--
. 1 root root
2092 Jun 17 00:20 /etc/passwd
在鸟哥的系统上面与
/etc/passwd
有关的目录与文件数据如上表所示,该文件的读取流程为
(
假设读取
者身份为
dmtsai
这个一般身份使用者
)
1.
/
inode
透过挂载点的信息找到
inode
号码为
128
的根目录
inode
,且
inode
规范的权限让我们可以读取该
block
的内容
(
r
x)
2.
/
block
经过上个步骤取得
block
的号码,并找到该内容有
etc/
目录的
inode
号码
(33595521)
3.
etc/
inode
读取
33595521
inode
得知
dmtsai
具有
r
x
的权限,因此可以读取
etc/
block
内容;
4.
etc/
block
经过上个步骤取得
block
号码,并找到该内容有
passwd
文件的
inode
号码
(36628004)
5.
passwd
inode
读取
36628004
inode
得知
dmtsai
具有
r
的权限,因此可以读取
passwd
block
内容;
6.
passwd
block
最后½该
block
内容的数据读出来。
.
filesystem
大小与磁盘读取效能: