可以是一个格式化之后的分区,或是格式化之后的逻辑卷等等,只要可以挂载。
既然inode只有有限字节,又要保存文件权限属性信息,如何存储那么多的block号?
inode只有一部分字节直接存储文件数据的block号。其他字节可以间接记录,即存储一个block号,在该block中再存储文件数据的block号;如仍不够,可使用二间接、三间接。
在Ext2中,使用的是48字节(Ext2、3中,使用4字节直接保存一个block号,Ext4使用8字节)直接保存数据的block号,其他用1个间接、1个二间接、1个三间接保存。
所以应根据实际需要确定block的大小,若是众多的很小的文件,则block使用1K即可,以避免浪费的空间过多;若是存大文件,则block使用4K,否则使用小的会造成占用的inode和block数量过多,不利于读写。
如果目录“/boot”作为一个文件系统的挂载点,那么系统也应该是通过挂载的信息知道其inode号,而不是通过“/boot”的上一级目录(即根目录)内容保存的文件名与inode号。因为不同文件系统inode号与block号是各自独立的。
应时常注意根文件系统的使用率,不要满了。
实际上,因为文件“a”与软链接“a_link”都在/root目录下,所以若工作目录在/root目录,创建该软链接时可直接使用命令[root@localhost ~]# ln -s a a_link
,这样创建出的链接文件“a_link”大小为1字节,即以相对路径保存文件名。
不过显然,即便是以相对路径保存,系统在访问该软连接时仍可知道文件“a”的绝对路径的文件名,然后一级一级找到文件“a”。所以这不会影响下图所展示的软链接访问过程。
但是若以相对路径创建的软链接,是无法移动到其他目录的,否则就会找不到目标文件,这也容易理解。
inode对应表、块对应表,如果太大了,查找过程还是会耗时。所以用块组,各块组有各自的inode对应表、块对应表等。
文章目录
#1.文件系统概念
- 格式化
每种操作系统所设置的文件属性、权限不同,磁盘分区后需格式化,变为操作系统可以利用的文件系统格式。 - 文件系统
一个可被挂载的数据1称为一个文件系统。
#2.索引式文件系统
##2.1 superblock、inode、block
操作系统上的文件数据,一般除了实际内容外,还包含属性、权限。如linux上的文件的权限(rwx)、属性(属主属组时间戳等)。
索引式文件系统通常会把文件实际内容和文件权限属性,分别存放在不同的磁盘块。
文件权限与属性存放在inode中;实际内容存放在data block块(简称block)中;每个文件系统还有一个超级块(superblock)。每个inode和block都有编号,不同文件系统inode、block编号是独立的。inode和block在格式化后不再变动,除非重新格式化或文件系统大小变动。
- superblock
记录此文件系统的整体信息,如inode、block的总量、使用量、剩余量,文件系统的格式等。
superblock非常重要,一旦损坏整个文件系统无法使用。 - inode
记录文件的属性、权限、时间戳等元数据信息;
记录文件的实际数据所在的block号码;
一个文件有且仅占用一个inode。 - block
记录文件实际数据,文件过大时会占用多个block;
磁盘上的最小存取单位也正是block。
##2.2 读取文件
由于inode记录了文件数据所存放的block的号码,所以只要找到一个文件的inode即可读出其内容,类似图书馆的索引和书架,如图示:
文件系统格式化出inode和block后,如果某文件的权限属性存放在inode3,并且inode3记录了存放实际内容的block编号1、6、8,则操作系统只要找到inode3即可读出文件全部内容。
#3.Ext系列文件系统
##3.1 Ext文件系统结构
linux的Ext系列文件系统就是一种索引式文件系统。
当inode与block过多时,为便于管理,Ext文件系统在格式化时,把一个文件系统划分为了多个块组(block group)2,以便于管理。因为每个文件系统只有一个superblock且非常重要,所以superblock会在若干个不同块组的前端多次存储,防止因某superblock损坏影响使用。
注意,划分为块组只是为了管理方便,各块组内部的inode、block号等,并不是独立的,仍是按同一个文件系统的方式,依次编号。这一点可从命令dumpe2fs的结果看出。
Ext文件系统最前端,有一个启动扇区(boot sector),可安装引导程序(bootloader),从而制作出多重引导环境(安装不同操作系统),而不用覆盖整块磁盘唯一的MBR。
所以Ext文件系统总体结构如下:
每个块组结构如下:
-
superblock
superblock记录的信息主要有:- inode与block的总量;
- 已使用和未使用的inode、block数量;
- block与inode的大小。block大小只能是1K、2K或4K,inode大小为128字节或256字节(ext4);
- 最近一次挂载、写入、检验时间;
- 文件系统是否已被挂载等。<