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不需要碎片整理。