Linux文件系统(一)——初识Linux文件系统
文件系统的使得Linux在硬盘中存储的二进制数据与应用程序中使用的文件/目录之间搭建起了一座桥梁。Linux系统中将文件存储在名为虚拟目录的单个目录结构中,其中只包含一个根目录,根目录下的一些特别目录可作为挂载点,分配给额外的存储设备的目录,系统文件通常存储于根目录中,用户文件通常存储于其他存储设备所在的目录中。ext文件系统即扩展文件系统,使用虚拟目录处理物理存储设备并在其中以固定大小的磁盘块形式保存数据;同时使用i节点(inode)表存储在虚拟目录中文件的相关信息,包含文件名、文件大小、文件属主、文件属组、文件访问权限及指向存有文件数据的每个块的指针。Linux系统中创建文件时,由系统分配唯一的节点号来标识该文件,而非文件名和路径。ext2作为第二代扩展文件系统,在原有ext文件系统的基础上,做了如下功能扩展:a.在i节点表中加入了文件的创建时间、修改时间和最后一次访问时间b.最大文件大小由原来的不超过2GB增至2TB,后又增至3TBext2文件系统局限性:系统在存储文件和更新i节点表过程中发生异常,如系统崩溃或断电时,两者内容可能无法同步导致丢失文件在磁盘上的数据位置。基本实现原理:日志文件系统采用先将文件变更写入临时文件即日志,当数据被成功写到存储设备和i节点表后,再删除对应的日志内容。因此,当系统异常时,日志文件会被读取来处理尚未提交的数据。数据模式:i节点和文件数据都会被写入日志,数据丢失风险低,性能差,最安全。有序模式:i节点被写入日志,待文件数据写入成功后将其删除。回写模式:i节点被写入日志,但不控制文件数据何时写入,数据丢失风险高。ext3文件系统默认采用有序模式的日志方法,可更改其他模式;ext3文件系统无法恢复误删的文件,没有数据压缩功能。ext4文件系统默认采用有序模式的日志方法,可更改其他模式;支持加密、压缩功能,并支持单目录下不限数量的子目录。ReiserFS文件系统继承了ext3和ext4的特性。XFS文件系统采用回写模式的日志方法,性能高但有一定的风险。写时复制(COW)技术作为日志技术的替代,兼顾了安全性和性能,在修改数据时COW使用克隆或可写快照,修改的数据不会直接覆盖当前数据,而是被放入文件系统中另一个位置。卷管理文件系统支持从一个或多个磁盘创建的存储池生成虚拟磁盘(卷),并通过存储池可根据需求增加卷,提高了灵活性。Btrfs文件系统也称B-tree文件系统,特点是稳定、易用,并能够动态调整已挂载文件系统的大小。Stratis文件系统维护的存储池由一个或多个XFS文件系统组成,具有易用性和高级存储特性的特征。