-b:列出保留为坏轨的部分(一般用不到!)
-h:仅列出superblock的数据,不会列出其他的区段内容
从上面的表格我们可以观察到这个第一个block为1,block大小为1024,详细信息就不再详列。
block group的内容我们只看Group0信息
。Group0所占用的block由1到8192号,superblock则在第1号的block块内!
。文件系统描述说明在2-3号block中
。block bitmap在260 ,inode bitmap则在276,inode table在292-544
LINUX系统下,每个文件都会占用一个inode,且可依据档案的大小来分配多个block给文件使用,目录记录内容是文件名,一般
文件的才是实际记录数据的,那么目录与ext2文件系统如何记录数据的呢?
与目录树的关系
linux系统下,每个文档(不管文件还是目录)都会占用一个inode,而且依据文件内容的大小分配多个block给该文件使用它,
目录的内容在记录文件名,一班文件才是是记录数据内容的地方。
目录
当我们在linux下ext2文件选系统创建一个目录时,ext2会分配一个inode与至少一个block给该目录,其中
inode记录给目录的相关权限于属性,并可记录分配到那块block号码,而block则是记录在这个目录下的文件名与该文件名占用的inode
号码数据,也就是说目录所占用的block内容记录如下:
|inode number| 文件名 |
---------------------------------
| 654683 |MAS.CFG |
| 324234 |dasd.sh |
---------------------------------
某一目录内文件所占用的inode的号码时,可以使用ls -i这个命令,每个人选择的项目和分区不同,
所以系统说显示的结果也会是不同的。
查看某一文件的占用block的数量,可以使用ll -d /bin/to/some_file,文件的大小几乎都是block大小的整数倍。
文件:
当我们在linux下ext2文件系统创建文件,ext2会分配与相对文件大小的block数量给文件
目录树的读取:
inode本身并不记录文件名,文件名记录在目录的block中,因此,新增/删除/更名与目录的w权限有关这一特点,
应为文件名记录在目录的block中,当我们读取某一个文件是,就必须读到正确的inode与block,然后才能找到读取文件的inode号码
因此当我们读取一个文件时,就必须经过目录的inode与block,然后才能找到想要读取的文件的inode号,
最终读到正确的文件的数据。
由于目录树是由根目录读起开始,因此系统通过挂载的信息可以找到挂载点的inode号码(通常一个filesystem的最顶层
inode号码会有2开始),此时就能够找到目录的inode内容,并依据该inode读取目录的block内的文件数据,在一层一层往下读到找到正确的文件名。
例如读取/etc/passwd这个文件,系统经过多步奏是:
如图:
1./的inode:
透过挂载点的信息找到/dev/sda1的inode号码为2的根目录inode,且inode的权限(rx)
2./的block:
经过上一个步骤取得block的号码,并找到该内容有/etc/目录inode号码651522
3.etc/的inode:
读取651522号inode知道了我有r和x权限,因此可以读取etc/的block内容;
4.etc/的block:
经过上一个步骤取得block号码,并在block内容里找到passwd文件的inode号码(667138)
5.paawd的inode:
读取667138号inode,获得我有r和x权限,因此可以读取passwd的block内容;
6.passwd的block:
最后将该block内容的数据读出来。
filesystem 大小与磁盘读取效能:
当一个文件系统的规划的很大时,由于硬盘上面的数据总是来来去去,所以在整个文件系统上面的档案通常无法连续写在一起(block号码不会连续坐在一起),、
所以,而填入式的数据填入没有使用的block当中,当文件写入的block真的分的很散,此时就会有所谓的文件离散的问题发生。
虽然我们的ext2的inode已经将整个档案所记录的block号码上了,所以资料可以一次读取,
但如果档案太过离散,确实会造成读取效率低的问题。如果遇到这种问题,那么将整个文件系统内的数据全部复制出来,将filesystem重新格式化,在将数据写入回去
、可以解决这一问题。
如果filesystem真的太大了,那么当一个文件分别记录在这个文件系统的最前面与最后面block号码中,
此时会造成硬盘的机械手臂移动幅度过