1.基本的文件系统
1.1 ext文件系统
扩展文件系统(extended filesystem),它为Linux提供了一个基本的类Unix文件系统:使用虚拟目录来操作硬件设备,在物理设备上按定长的块来存储数据。
ext文件系统采用名为‘索引节点’的系统来存储虚拟目录中所存储文件的信息。
索引节点系统在每个物理设备中创建一个单独的表(称为索引节点表)来存储这些文件的信息。存储在虚拟目录中的每一个文件在索引节点表中都有一个条目。
1.2 ext2文件系统
2.日志文件系统
日志文件系统为Linux系统增加了一层安全性,它不再使用之前先将数据直接写入存储设备再更新索引节点表的做法。
而是先将文件的更改写入到临时文件(称作日志,journal)中,在数据成功写到存储设备和索引节点表之后,再删除对应的日志条目。
如果系统在数据被写入存储设备之前崩溃或断电了,日志文件系统下次会读取日志文件并处理上次留下的未写入的数据。
Linux系统中有3种广泛使用的日志方法:
方法 | 描述 | |
1 | 数据模式 | 索引节点和文件都会被写入日志,丢失数据风险低,但性能差 |
2 | 有序模式 | 只有索引节点数据会被写入日志,但只有数据写入成功后才删除,在性能和安全性之间取得了良好的折中。 |
3 | 回写模式 | 只有索引点数据会被写入日志,但不控制文件数据何时写入,丢失数据风险高,但仍比不用日志好。 |
2.1 ext3文件系统
默认情况下ext3文件系统用有序模式的日志功能。
2.2 ext4文件系统
大多数Linux发行版都采用ext4文件系统作为默认的文件系统,如Ubuntu。
除了支持数据压缩和加密,ext4文件系统还支持一个称为‘区段’(extent)的特性。
区段在存储设备上按块分配空间,但在索引节点表中只保存起始块的位置。
ext4还引入了‘块预分配技术’
2.3 Reiser文件系统
ReiserFS文件系统只支持回写日志模式,故被称为Linux上最快的日志文件系统之一。
2.4 JFS文件系统
JFS文件系统采用的是有序日志方法。
除了用在IBM Linux上外,JFS文件系统并没有流行起来。
2.5 XFS文件系统
XFS文件系统采用回写模式的日志。XFS文件系统允许在线调整文件系统的大小,这点类似ReiserFS文件系统。
3.写时复制文件系统
写时复制技术(copy-on-write,COW),利用快照兼顾了安全性和性能。