12.文件系统管理和优化
文件系统管理和优化
前几章讲了文件系统的相关内容,在真实的世界中,文件是存放在磁盘等大容量存储设备上的。本章来讨论磁盘管理的一些问题。
目录
1 磁盘空间管理
2 文件系统备份
3 文件系统一致性
4 文件系统性能
5 磁盘碎片整理
1 磁盘空间管理
把文件放在磁盘中,有两种策略:1. 为一个文件分配连续的磁盘空间。
2. 把文件分成很多个块,磁盘空间也分成很多个块,来存储文件。
几乎所有的文件系统都把文件分割成固定大小的块来存储。
这就出现几个问题:
(1)块大小
跟内存管理中的页面大小的分配一样,到底多大合适?
块太大,浪费空间。块太小,浪费时间。
从历史观点来说,文件系统将大小设在1~4KB之间,但是随着磁盘超过了1TB,还是将块的大小提升到了64KB并且接受浪费空间。
(2)空闲块的管理
空闲块是未分配给文件和目录的空间。
选定了块大小,下一个问题就是怎样跟踪空闲块。有两种方法:
1)位图
n块磁盘需要n位位图。
占用空间小。
2)磁盘块链表
链表的每个块中包含尽可能多的空闲磁盘号。
占有空间大。
(3)磁盘配额
多用户操作系统提供一种强制性磁盘配额机制,每个用户拥有一定数量的文件和块,不能超过这个配额。
打开文件表里有一个配额指针,指向配额表。
每个配额表记录了每个用户的配额,每往文件添加一块时,文件所有者所有的数据块的总数也增加,引发对配额硬限制和软限制的检查。
2 文件系统备份
将所有磁盘文件复制到备份介质,称为完全备份。
自上一次备份起,更改的文件备份到备份介质,称为增量备份。
**物理转储:**从磁盘的第0块开始,将全部的磁盘块按序输出到磁带上。
**逻辑转储:**从一个或几个指定的目录开始,递归地转储自给定基准日期后有所更改的全部文件和目录。
3 文件系统一致性
文件系统一致性:很多文件系统读取磁盘块,进行修改后,再写回磁盘。如果在修改过的磁盘块全部写回之前系统崩溃,则文件系统有可能处于不一致的状态。
为了解决不一致问题,很多操作系统带有检验文件系统一致性的程序,如UNIX中的fsck,Windows中的scandisk。
一致性检查分为两种:块的一致性检查,文件的一致性检查。
4 文件系统性能
访问磁盘比访问内存要慢得多。
有各种优化措施来改善性能,如高速缓存、预先读取等,不做深入讨论。
5 磁盘碎片整理
随着时间的流逝,文件被不断的创建和删除,磁盘就会产生很多的碎片,造成性能的降低。
移动文件使它们相邻,把所有的空闲空间放在一个大的连续区域内。
SSD不需要碎片整理。