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的备份