Linux 的Ext2

Linux的正规文件系统:Linux second extended file system  Ext2fs

新技术:LVM  

    Software raid

文件系统是如何运行的?

操作系统的文件数据除了文件实际内容外,还包括文件权限(rwx),文件属性(所有者,属组,时间参数等)

文件系统通常会将这俩部分的数据分别存放在不同的块:

权限与属性放置到inode中

实际数据则放置在data block块中

另外还包括一个superblock会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量等。

索引式文件系统

权限与属性是为了保护每个用户所拥有数据的隐秘性

除非进行磁盘格式化(或者利用resize2fs等命令更改文件系统大小),否则inode与block固定后就不再变动。

然而当数据量很大的时候,会有很多的inode与block,将所有的inode与block放置在一起是不明智的,数量太大,不易管理。

所以Ext2在磁盘格式化时区分为多个块组(block group),每个块拥有独立的/inode/data block/superblock系统。

因此,一块硬盘的最大容量,与这块硬盘可存放的最大单一文件容量是不一样的概念。

Ext2 已足够支持大于2GB以上的单一文件容量。

每个block块内最多只能够放置一个文件的数据,

如果一个文件大于一个block的大小,则一个文件会占用多个block数量,

如果一个文件小于一个block的大小,则该block的剩余空间不能够再被使用了,(造成磁盘空间的浪费)

若block过大(如4k),而系统中存在大量小文件,则会造成巨大的磁盘资源浪费

若block过小,则系统中的大型文件会占用更多的block,而block信息是记录在inode中的,inode需要记录更多的block,此时可能会造成文件系统不良的I/O读写性能。

因此在格式化文件系统时,block设定的大小,最好根据该文件系统的用途,而设定。

inodetable(inode表格)

inode内容主要记录文件的属性以及该文件实际数据是放置在哪几号block内!

基本上,inode记录的文件数据至少有下面这些:

该文件的访问方式(rwx)

该文件的所有者与属组(owner/group)

该文件的大小

该文件创建或状态改变的时间(ctime)

最近一次读取的时间(atime)

最近修改的时间(mtime)

定义文件特性的标志(flag),如SetUID等

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

inode的数量与大小

每个inode大小均固定为128bytes

每个文件都仅会占用一个inode

因此文件系统能够创建的文件数量与inode的数量有关

inode记录大量block信息的策略:

系统将inode记录block号码的区域定义为12个直接、一个间接、一个双间接与一个三简介记录区

Superblock

Superblock是记录整个文件系统相关信息的地方,没有Superblock,就没有这个文件系统了

它记录的主要信息有:

block与inode的总量

未使用与已使用的inode/block数量

block与inode的大小(block为1K,2K,4K,inode为128bytes)

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

一个validbit数值,若此文件系统已被挂载,则valid bit 为0,若未被挂载,则valid bit 为1.

一个文件系统应该仅有一个Superblock,而事实上除了第一个block group 内会含有superblock外,

其他block group也可能含有superblock,且这些superblock主要是作为对第一个block group内superblock的备份

原文地址:https://www.cnblogs.com/xxdfly/p/5585274.html