12.文件系统管理和优化

文件系统管理和优化

前几章讲了文件系统的相关内容,在真实的世界中,文件是存放在磁盘等大容量存储设备上的。本章来讨论磁盘管理的一些问题。

目录
1 磁盘空间管理
2 文件系统备份
3 文件系统一致性
4 文件系统性能
5 磁盘碎片整理

1 磁盘空间管理

把文件放在磁盘中,有两种策略:
1. 为一个文件分配连续的磁盘空间。
2. 把文件分成很多个块,磁盘空间也分成很多个块,来存储文件。

几乎所有的文件系统都把文件分割成固定大小的块来存储。
这就出现几个问题:

(1)块大小

跟内存管理中的页面大小的分配一样,到底多大合适?
块太大,浪费空间。块太小,浪费时间。

从历史观点来说,文件系统将大小设在1~4KB之间,但是随着磁盘超过了1TB,还是将块的大小提升到了64KB并且接受浪费空间。

(2)空闲块的管理

空闲块是未分配给文件和目录的空间。

选定了块大小,下一个问题就是怎样跟踪空闲块。有两种方法:
1)位图
n块磁盘需要n位位图。
占用空间小。

2)磁盘块链表
链表的每个块中包含尽可能多的空闲磁盘号。
占有空间大。
12.文件系统管理和优化

(3)磁盘配额

多用户操作系统提供一种强制性磁盘配额机制,每个用户拥有一定数量的文件和块,不能超过这个配额。

打开文件表里有一个配额指针,指向配额表。
每个配额表记录了每个用户的配额,每往文件添加一块时,文件所有者所有的数据块的总数也增加,引发对配额硬限制和软限制的检查。
12.文件系统管理和优化

2 文件系统备份

将所有磁盘文件复制到备份介质,称为完全备份

自上一次备份起,更改的文件备份到备份介质,称为增量备份

**物理转储:**从磁盘的第0块开始,将全部的磁盘块按序输出到磁带上。
**逻辑转储:**从一个或几个指定的目录开始,递归地转储自给定基准日期后有所更改的全部文件和目录。

3 文件系统一致性

文件系统一致性:很多文件系统读取磁盘块,进行修改后,再写回磁盘。如果在修改过的磁盘块全部写回之前系统崩溃,则文件系统有可能处于不一致的状态。

为了解决不一致问题,很多操作系统带有检验文件系统一致性的程序,如UNIX中的fsck,Windows中的scandisk。

一致性检查分为两种:块的一致性检查,文件的一致性检查。

4 文件系统性能

访问磁盘比访问内存要慢得多。

有各种优化措施来改善性能,如高速缓存预先读取等,不做深入讨论。

5 磁盘碎片整理

随着时间的流逝,文件被不断的创建和删除,磁盘就会产生很多的碎片,造成性能的降低。

移动文件使它们相邻,把所有的空闲空间放在一个大的连续区域内。

SSD不需要碎片整理。