4.2 文件系统备份
为什么需要文件系统备份?
不管是硬件或软件的故障,如果计算机的文件系统被破坏了,恢复全部信息会是一件困难而又费时的工作,在很多情况下,是不可能的。
做磁带备份主要是要处理好两个潜在问题中的一个:
1)从意外的灾难中恢复。
2)从错误的操作中恢复。
转储磁盘到磁带上有两种方案:
1)物理转储
2)逻辑转储。
**物理转储:**物理转储是从磁盘的第0块开始,将全部的磁盘块按序输出到磁带上,直到最后一块复制完毕。此程序很简单,可以确保万无一失,这是其他任何实用程序所不能比的。物理转储的主要优点是简单、极为快速(基本上是以磁盘的速度行)。
**主要缺点:**既不能跳过选定的目录,也无法增量转储,还不能满足恢复个人文件的请求。
** 逻辑转储:**从一个或几个指定的目录开始,递归地转储其自给定基准日期后有所更改的全部文件和目录。所以,在逻辑转储中,转储磁带上会有一连串精心标识的目录和文件,这样就很容易满足恢复特定文件或目录的请求。
4.3 文件系统的一致性
很多文件系统读取磁盘块,进行修改后,再写回磁盘。如果在修改过的磁盘块全部写回之前系统崩溃,则文件系统有可能处于不一致状态。如果一些未被写回的块是i节点块、目录块或者是包含有空闲表的块时,这个问题尤为严重。
所有文件系统检验程序可以独立地检验每个文件系统(磁盘分区)的一致性。
一致性检查分为两种:块的一致性检查和文件的一致性检查。
4.4 文件系统性能
访问磁盘远慢于访问内存。考虑到访问时间的这个差异,许多文件系统采用了各种优化措施以改善性能。
1)高速缓存
2)块提前读
3)减少磁盘臂运动
高速缓存
最常用的减少磁盘访问次数技术是块高速缓存(block cache)或者缓冲区高速缓存(buffer cache)。管理高速缓存有不同的算法,常用的算法是:检查全部的读请求,查看在高速缓存中是否有所需要的块。如果存在,可执行读操作而无须访问磁盘。如果该块不在高速缓存中,首先要把它读到高速缓存,再复制到所需地方。之后,对同一个块的请求都通过高速缓存完成。
由于在高速缓存中有许多块(通常有上千块),所以需要有某种方法快速确定所需要的块是否存在。常用方法是将设备和磁盘地址进行散列操作,然后,在散列表中查找结果。
如FIFO算法、第二次机会算法、LRU算法等,它们都适用于高速缓存。
除了散列表中的冲突链之外,还有一个双向链表把所有的块按照使用时间的先后次序链接起来,近来使用最少的块在该链表的前端,而近来使用最多的块在该链表的后端。当引用某个块时,该块可以从双向链表中移走,并放置到该表的尾部去。用这种方法,可以维护一种准确的LRU顺序。
块提前读
在需要用到块之前,试图提前将其写入高速缓存,从而提高命中率。
减少磁盘臂运动
是把有可能顺序存取的块放在一起,当然最好是在同一个柱面上,从而减少磁盘臂的移动次数。
4.5 磁盘碎片整理
磁盘性能可以通过如下方式恢复:移动文件使它们相邻,并把所有的(至少是大部分的)空闲空间放在一个或多个大的连续的区域内。