本博客内容来自《Linux命令行与shell脚本编程大全》第八章
目录
1、Linux文件系统
基本的Linux文件系统
-
ext文件系统
ext文件系统,即扩展文件系统,是Linux系统中最早引入的文件系统。主要特点有:
使用虚拟目录来操作硬件设备
在物理设备上按定长的块来存储数据(容易产生数据块碎片化)
使用索引节点系统来存放虚拟目录中所存储文件的信息
索引节点系统在每个物理设备中创建一个单独的索引节点表来存储文件的信息
Linux通过唯一的索引节点号来标识文件
文件大小不超过2G
基本流程是将数据直接写入存储设备再更新索引节点表
ext文件系统之所以叫扩展文件系统,因为包括每个文件的额外信息,包括:
文件名
文件大小
文件的属主
文件的属组
文件的访问权限
指向存有文件数据的每个硬盘快的指针
-
ext2文件系统
ext2文件系统对ext文件系统进行扩展,其索引节点表为文件添加了:
创建时间值
修改时间值
最后访问时间值
还将允许的最大文件大小增加到了2TB,后增加到32TB。
基于区段的文件分配,通过按组分配磁盘块来减轻碎片化,文件系统读取文件时不需要查找整个物理设备。
ext2系统由于容易在系统崩溃或断电时损坏而臭名昭著,索引数据表如果恰好没有更新完则将丢失已经保存的文件数据信息。
日志文件系统
更安全,先将文件修改写入临时文件(日志),在数据成功写入存储设备和索引节点表后再删除对应的日志条目。
文件系统的日志方法主要有:
数据模式:索引节点数据和文件都被写入日志,数据丢失风险低,效率低
有序模式:只将索引节点数据写入日志,成功写入后删除,性能和安全之间良好折中
回写模式:只将索引节点数据写入日志,不控制文件数据何时写入,丢失数据风险高
-
ext3文件系统
2001年引入Linux内核,Linux发行版近期默认文件系统。
在ext2的基础上为每个存储设备增加日志文件做缓存,默认使用有序模式,只将索引节点信息写入日志文件,直到数据块被成功写入存储设备才删除。
无法恢复误删除文件,没有任何内建的数据压缩功能,不支持加密文件。
-
ext4文件系统
大多数Linux发行版采用的文件系统。
支持数据压缩与加密,支持区段特性。
引入块预分配技术。
-
Reiser文件系统
只支持回写日志模式,是Linux上最快的日志文件系统之一。
可以在线调整已有文件系统的大小。
支持尾部压缩功能(将一个文件的数据填进另一个文件的数据块中的空白部分)。
-
JSF文件系统
日志化文件系统,采用有序日志方法。
基于区段的文件分配,减少碎片。
-
XFS文件系统
采用回写模式的日志。
允许在线调整文件系统大小,只扩大不缩小。
写时复制文件系统
写时复制技术(copy-on-write)利用快照兼顾安全性和性能。
修改数据时使用克隆或可写快照
修改后的数据不会直接覆盖当前数据,而是被放入文件系统的另一个位置上,屏蔽原数据,实现修改效果。
-
ZFS文件系统
sun公司研发,2012年投入Linux产品使用。
弱项是没有GPL许可。
-
Btrf文件系统
B树文件系统
在Reiser4的基础上改进。