脚本编程大全: 第八章 管理文件系统

8.1探索Linux文件系统
8.1.1基本的Linux文件系统
  1. ext文件系统
    Linux中最早引入的文件系统:扩展文件系统(extended filesystem),它为Linux提供了类Unix文件系统:使用虚拟目录操作硬件设备,在物理设备上使用定长块存储数据。
    ext采用名为索引节点的系统来存放目录中所存储的文件信息。该系统在每个物理设备中创建单独的表(索引节点表)来存储这些文件信息。虚拟目录中的每一个文件在表中都有一个条目。ext中的extend部分跟踪每个文件的额外数据。包括文件名,大小,属主,属组,访问限权指向数据文件的硬盘块指针。
    Linux通过唯一的数值(索引节点号)来引用表中的每个索引节点,这个值在文件创建时由文件系统分配,文件系统通过索引节点号而不是路径标识文件。

  2. ext2文件系统
    ext2保持了同样的结构,但是将文件大小上限由2GB提升到2TB。同时ext2索引节点表增加了文件创建时间值,修改时间值,和最后访问时间。此外,ext2通过分组分配磁盘块优化了ext存储数据块易分散在磁盘中的程度。
    ext和ext2采用的索引节点表在文件更新时,无法保证同时更新,所以会带来二者不同步的问题(通常发生在系统崩溃或断电时)。

8.1.2日志文件系统

日志文件系统不同于之前的先更改文件后更新索引节点表的做法,现将文件写入到临时文件(称作日志,journal)。待数据成功写入存储设备并更新索引节点表后,再删除对应的日志文件。

三种广泛使用的日志方式,具有不同的保护等级:

  1. 数据模式: 索引节点和文件都会被写入日志,数据丢失风险低,但性能差
  2. 有序模式:只有索引节点会被写入日志,但只有数据写入成功后才被删除
  3. 回写模式:只有索引节点会被写入日志,但不控制文件数据何时写入,丢失风险高。

其他的文件系统:

  1. ext3相对于ext2,给每个存储设备增加了日志文件,以将准备写入存储设备的数据先写入日志。默认情况下,其采用默认模式的日志功能:只将索引节点信息写入日志文件,知道所有数据块都被写入成功后才删除。
    ext3无法恢复误删的文件,没有内建的数据结构,也不支持加密功能。
  2. ext4支持数据压缩和加密,同时还支持一个称作区段(extent)的特性:区段在存储设备上按块分配空间,但在索引节点表之保存起始块位置,可以节省索引节点表的空间。ext4还引入了块预分配技术(block preallocation):如果你想在存储设备上给一个较大的文件预留空间,ext4会为文件分配所有所需要用到的块,将其用0填满,不会将它們分配给其他文件。
  3. Reiser 支持回写模式的日志,同时支持在线调整文件系统大小,引入尾部压缩(tailpacking)技术可将文件数据填入另一个文件数据块的空白中。
  4. JFS
  5. XFS
8.1.3写时复制文件系统

COW(copy-on-write)兼顾了安全性和性能,如果要修改数据,会使用克隆或快照,修改过的数据不会覆盖当前数据,而是被放入文件系统的其他位置。COW最流行的两种模式:

  1. ZFS文件系统
  2. Btrf文件系统
8.2操作文件系统
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值