日期:2014-05-16  浏览次数:20662 次

鸟哥的Linux私房菜-基础学习篇3

13.Linux 的EXT3文件系统

在标准的ext3文件系统中,将每个文件的内容分为两个部分存储,一个是文件的属性,另一个是文件的内容。ext3规划出inode与块来分别存储文件的属性(放在inode中)与文件的内容(放置在块区域中)。当分区被格式化为ext3的文件系统时,它一定会有inode表与块区域这两个区域。

inode是记录“该文件的相关属性,以及文件内容放置在哪一个块内”的信息。块是记录“文件内容数据”的区域。indoe除了记录文件的属性外,同时还必须具有指针(pointer)的功能,即指向文件内容放置的块之中,让操作系统可以正确获取文件的内容。

inode记录的信息主要有:

该文件的拥有者与用户组(owner/group)

该文件的访问模式(rwx)

该文件的类型(type)

该文件建立或状态改变的时间(ctime)、最近一次的读取时间(atime)、最近修改的时间(mtime)

该文件的大小

定义文件属性的标志(flag),如SetUID...

该文件真正内容的指针(pointer)

一个inode的大小为128字节

在linux的ext3文件系统建立一个目录时,ext3会给该目录分配一个inode与至少一个块。inode记录该目录的相关属性,并指向分配到的哪个块。块记录在这个目录下的相关文件(或目录)的关联性

在linux的ext3文件系统建立普通文件时,ext3会给该文件分配至少一个inode与相对于该文件大小的块数量。假设一个块为4kb,要建立一个100kb的文件,linux将分配一个inode与25个块来存储该文件

inode本身并不记录文件名,而是记录文件的相关属性,文件名记录在目录所属的块区域,文件的相关连接回记录在目录的块数据区域

要读取一个文件的内容时,linux会先由根目录/获取该文件的上层目录所在的inode,再由该目录所记录的文件关联性(在该目录所属的块区域)获取该文件的inode,最后通过inode内提供的块指针,来获取最终的文件内容

?

操作系统根目录/的相关数据可获取/etc目录所在的inode,并读取/etc这个目录的所有相关属性

根据/etc的inode的数据,可以获取/etc目录下所有文件的关联数据是放置在哪一个块中,并前往该块读取文件的关联性内容

由上一步骤的块中,可以知道crontab文件的inode所在地,并前往该inode

由上一步骤的inode中,可以获取crontab文件的所有属性,并且前往由inode所指向的块区域,顺利获取crontab的文件内容

?

块与inodes在一开始格式化时就已经固定了

一个分区能够容纳的文件数与inode有关

一般来说,每4kb的硬盘空间分配一个inode

一个inode的大小为128字节

块为固定大小,支持1024/2048/4096字节等

块越大,损耗的硬盘空间也越多

对于单一文件,如块大小为1024,最大为16G,若为4096,则为2TB

对于整个分区,若块大小为1024,最大为2TB,若为4096,则为32TB

?

14.当建立一个ext3的文件系统时,它拥有超级块(superblock)、组描述(group description)、块位图(block bitmap)、inode位图(inode bitmap)、inode表(inode table)、数据块(data blocks)等区域

SuperBlock(超级块):是记录整个文件系统相关信息的地方,没有它就没有这个文件系统,主要信息有:

-块与inode的总量

-未使用与已使用的inode/块数量

-一个块与一个inode的大小

-文件系统的载入时间、最近一次写入数据的时间、最近一次检验磁盘(fsck)的时间等文件系统的相关信息

-有效位(valid bit)数值,若此文件系统已被载入,则有效位为0,未被载入,则为1

Group Description(组描述):记录此块由何处开始记录

Block bitmap(块位图):此处记录块是否使用

Inode bitmap(inode位图):此处记录inode是否使用

Inode table(inode表):为每个inode的数据存放区

Data Blocks(数据块):为每个块的数据存放区

?

#dumpe2fs /dev/hda1 获取文件系统内的这个信息

?

15.ext3的数据访问是通过日志与元数据以及数据存放区记录的

linux支持的文件系统有哪些:

#ls -l /lib/modules/`uname -r`/kernel/fs

系统当前已启用的文件系统有:

#cat /proc/filesystems

?

16.磁盘与目录的容量

#df -ahTi 列出所有的文件系统,人性化,该分区的文件系统名称,inode数量

#du -ahs

?

17.硬连接只是在某个目录下的块多写入一个关联数据,并不会用掉inode与磁盘空间