四、文件系統(tǒng)的安全性
這里我們討論如何確保未經(jīng)授權(quán)的用戶不能存取某些文件?
4.1 文件保護機制
- 用于提供安全性、特定的操作系統(tǒng)機制
- 對擁有權(quán)限的用戶,應(yīng)該讓其進行相應(yīng)的操作,否則,應(yīng)禁止
- 防止其他用戶冒充對文件進行操作
于是在實現(xiàn)的時候需要考慮用戶身份驗證和訪問控制。對于用戶身份我們可以采用比如密碼、口令等方式。
4.2 文件的訪問控制
有不同的訪問控制手段,比如主動控制(使用訪問控制表)和能力表(使用權(quán)限表)。
主動控制
每個文件一個
記錄用戶ID和訪問權(quán)限
用戶可以是一組用戶
文件可以是一組文件能力表
每個用戶一個
記錄文件名及訪問權(quán)限
用戶可以是一組用戶
文件可以是一組文件
4.3 UNIX的文件訪問控制
采用文件的二級存取控制,審查用戶的身份、審查操作的合法性
-
第一級:對訪問者身份的識別
對用戶分類:- 文件主(
owner) - 文件主的同組用戶(
group) - 其他用戶(
other)
- 文件主(
-
第二級:對操作權(quán)限的識別
對操作分類:- 讀操作(
r) - 寫操作(
w) - 執(zhí)行操作(
x) - 不能執(zhí)行任何操作(
-)
- 讀操作(
五、文件系統(tǒng)的性能
5.1 文件系統(tǒng)的性能問題
磁盤服務(wù):速度成為系統(tǒng)性能的主要瓶頸之一。因此,在設(shè)計文件系統(tǒng)時應(yīng)盡可能減少磁盤訪問次數(shù)
提高文件系統(tǒng)性能的方法:
目錄項(FCB)分解、當前目錄、磁盤碎片整理、塊高速緩存、磁盤調(diào)度、提前讀取、合理分配磁盤空間、信息的優(yōu)化分布、RAID技術(shù)等等
5.2 提高文件系統(tǒng)性能:塊高速緩存(BLOCK CACHE)
又稱為文件緩存、磁盤高速緩存、緩沖區(qū)高速緩存。是指在內(nèi)存中為磁盤塊設(shè)置的一個緩沖區(qū),保存了磁盤中某些塊的副本。當對文件系統(tǒng)進行操作的時候:
- 檢查所有的讀請求,看所需塊是否在塊高速緩沖中
- 如果在,則可直接進行讀操作;否則,先將數(shù)據(jù)塊讀入塊高速緩存,再拷貝到所需的地方。
- 由于訪問的局部性原理,當一數(shù)據(jù)塊被讀入塊高速緩存以滿足一個
I/O請求時,和可能將來還會再次訪問到這一數(shù)據(jù)塊。
5.3 如何實現(xiàn)塊高速緩存
-
塊高速緩存的組織方式
1
說明:在塊高速緩存中有若干個數(shù)據(jù)塊,首先將這些塊使用一個雙向鏈表組織起來,當要訪問這個鏈的時候就將其從此鏈中拿出來,然后掛接到鏈尾,而我們對于某個文件使用的塊要檢查其是否在高速緩存中,所以這里又使用塊號進行散列以提高檢查速度。 塊高速緩存的置換問題(修改
LRU)
因為此緩存的空間肯定是不會很大的,所以當其滿時我們需要對其進行置換。對于以后可能會再次使用的塊我們將其放在鏈尾,而對于使用概率很小的塊可能就需要將其剔除。塊高速緩存的寫入策略
在文件系統(tǒng)中,我們需要考慮該塊是否會影響文件系統(tǒng)的一致性。這里如前面所講,不同的操作系統(tǒng)采用了不同的一致性解決方案。-
提前讀取
- 思路:每次訪問磁盤,多讀入一些磁盤塊
- 依據(jù):程序執(zhí)行的空間局部性原理
- 開銷:較小(只有數(shù)據(jù)傳輸時間)
- 具有針對性
5.4 Windows的文件訪問方式
一般有下面三種方式:
-
不使用文件緩存
- 普通方式
- 通過
Windows提供的FlushFileBuffer函數(shù)實現(xiàn)
-
使用文件緩存(塊高速緩存)
- 預讀取。每次讀取的塊大小、緩沖區(qū)大小、置換方式
- 寫回。寫回時機選擇、一致性問題
-
異步模式
- 不再等待磁盤操作的完成。
- 使處理器和
I/O并發(fā)工作
用戶對磁盤的訪問通過訪問文件緩存來實現(xiàn):
-
由
Windows的Cache Manager實現(xiàn)對緩存的控制- 讀取數(shù)據(jù)的時候預取
- 在
Cache滿時,根據(jù)LRU原則清除緩存的內(nèi)容 - 定期更新磁盤內(nèi)容使其與
Cache一致(每秒)
-
write-back機制- 在用戶要對磁盤寫數(shù)據(jù)時,只更改
Cache中的內(nèi)容,由Cache Manager決定何時將更新反映到磁盤
2
- 在用戶要對磁盤寫數(shù)據(jù)時,只更改
5.5 提高文件系統(tǒng)性能:合理分配磁盤空間
分配磁盤塊時,把有可能順序存取的塊放在一起(盡量分配在同一柱面上,從而減少磁盤臂的移動次數(shù)和距離)

說明:我們讀取文件系統(tǒng)時,每次都要先找到
i節(jié)點區(qū),然后再去找到文件位置,如果i節(jié)點區(qū)在最外道,而相關(guān)文件在最里道,則在讀取的時候磁臂就需要不斷的移動,這樣顯示效率低下。一種解決方案如(a),我們將i節(jié)點區(qū)和相關(guān)文件放在距離較近的磁道上;另一種是如(b),首先將磁道分成了若干組,然后將i節(jié)點區(qū)也劃分成若干部分,每一組磁道都有一個i節(jié)點區(qū),而每個文件都和其i節(jié)點區(qū)在同一組,這樣磁臂也不需要很大的移動。
5.6 提高文件系統(tǒng)性能:磁盤調(diào)度
當有多個訪盤請求等待時,采用一定的策略,對這些請求的服務(wù)順序調(diào)整安排,從而降低平均磁盤服務(wù)時間,達到公平、高效的目的。
- 公平
一個IO請求在有限時間內(nèi)滿足 - 高效
減少設(shè)備機械運動帶來的時間開銷
一次訪盤時間 = 尋道時間 + 旋轉(zhuǎn)延遲時間 + 傳輸時間
- 減少尋道時間
- 減少延遲時間
5.7 磁盤調(diào)度算法
例子:假設(shè)磁盤訪問序列:98、183、37、122、14、124、65、67,這些數(shù)字表示柱面號或磁道號。讀寫頭起始位置為53。請計算磁頭服務(wù)序列和磁頭移動總距離(道數(shù))。下面使用幾種算法進行計算:
-
1、先來先服務(wù)(
FCFS)
按訪問請求到達的先后次序服務(wù)- 優(yōu)點:簡單、公平
- 缺點:效率不高,相鄰兩次請求可能會造成最內(nèi)到最外的柱面尋道,使磁頭反復移動,增加了服務(wù)時間,對機械也不利。
4
磁道服務(wù)序列和訪問序列一致,磁頭移動總距離為640,平均80。
-
2、最短尋道時間優(yōu)先(
Shortest Seek Time First)
優(yōu)先選擇距當前磁頭最近的訪問請求進行服務(wù),主要考慮尋道優(yōu)先。- 優(yōu)點
改善了磁盤平均服務(wù)時間 -
缺點
造成某些訪問請求長期等待而得不到服務(wù)
5
- 優(yōu)點
-
3、掃描算法(
SCAN電梯算法)
當設(shè)備無訪問請求時,磁頭不動;當有訪問請求時,磁頭按一個方向移動,在移動過程中遇到的訪問請求進行服務(wù),然后判斷該方向上是否有訪問請求,如果有則繼續(xù)掃描;否則改變移動方向,并為經(jīng)過的訪問請求服務(wù),如此反復。其實是一種對距離和方向的折中算法。
6 -
4、單向掃描算法(
C-SCAN)
這是對掃描算法的一種改進。- 總是從零號柱面開始向里掃描
- 按柱面(磁道)位置選擇訪問者
- 移動臂到達最后一個柱面后,立即帶動讀寫磁頭快速返回到零號柱面
- 返回時不為任何的等待訪問者服務(wù)
- 返回后可再次進行掃描
主要的目的是減少了新請求的最大延遲。
- 5、
N-step-SCAN策略- 把磁道請求隊列分成長度為
N的子隊列,每一次用SCAN處理一個子隊列 - 在處理某一個隊列時,新請求添加到其他子隊列中
- 如果最后剩下請求數(shù)小于
N,則它們?nèi)慷紝⒃谙乱淮螔呙钑r處理 -
N值比較大時,其性能接近SCAN;當N = 1時,即FIFO
- 把磁道請求隊列分成長度為
主要是為了解決磁頭臂的粘性問題。
- 6、
FSCAN策略- 使用兩個子隊列
- 掃描開始時,所有請求都在一個隊列中,而另一個隊列為空
- 掃描過程中,所有新到的請求都放入另一個隊列中
- 對新請求的服務(wù)延遲到處理完所有老請求之后
主要是為了解決磁頭臂的粘性問題。本算法及以上都是對磁臂移動的優(yōu)化算法。
- 7、旋轉(zhuǎn)調(diào)度算法
根據(jù)延遲時間來決定執(zhí)行次序的調(diào)度。一般有三種情況:- 若干等待訪問請求訪問同一磁頭上的不同扇區(qū)
- 若干等待訪問請求訪問不同磁頭上的不同扇區(qū)
- 若干等待訪問請求訪問不同磁頭上的相同扇區(qū)
解決方案: - 對于前兩種情況:總是讓首先到達讀寫磁頭位置下的扇區(qū)先進行傳送操作
- 對于第三種情況:這些扇區(qū)同時到達讀寫磁頭位置下,可任意選擇一個讀寫磁頭進行傳送操作
5.8 提高文件系統(tǒng)性能:信息優(yōu)化分布
記錄在磁道上的排列方式也會影響輸入輸出操作的時間。

說明:如果信息是按左邊那樣分布的,那么如果首先讀到
1號記錄,然后花5ms處理,但是此時磁盤已經(jīng)轉(zhuǎn)到了4號記錄,于是如果我們要處理2號記錄,則必須將4、5、6、7、8都旋轉(zhuǎn)過去之后才能處理2號記錄;而如果信息是按右邊那樣分布的,當處理完1號記錄,而此時磁盤也剛好旋轉(zhuǎn)到了2號記錄處,這樣就能極大的提高文件系統(tǒng)的性能。
5.9 提高文件系統(tǒng)性能:記錄的成組與分解
- 記錄的成組
把若干個邏輯記錄合成一組存放在一塊的工作 - 進行成組操作時必須使用內(nèi)存緩沖區(qū),緩沖區(qū)的長度等于邏輯記錄長度乘以成組的塊因子(成組的長度)。
- 成組的目的:提高了存儲空間的利用率;減少了啟動外設(shè)的次數(shù),提高系統(tǒng)的工作效率。
- 記錄的分解
從一組邏輯記錄中把一個邏輯記錄分離出來
典型的例子就是目錄文件的存儲。
5.10 提高文件系統(tǒng)性能:RAID技術(shù)
起始就是獨立磁盤冗余陣列(Redundant Arrays of Independent Disks),就是將多塊磁盤按照一定要求構(gòu)成一個獨立的存儲設(shè)備。目的就是提高可靠性和性能。在實現(xiàn)時,需要考慮存儲系統(tǒng)的速度、容量、容錯、數(shù)據(jù)災難發(fā)生后的數(shù)據(jù)恢復。
-
數(shù)據(jù)是如何組織的
- 通過把多個磁盤組織在一起,作為一個邏輯卷提供磁盤跨越功能
- 通過把數(shù)據(jù)分成多個數(shù)據(jù)塊,并行寫入/讀出多個磁盤,以提高數(shù)據(jù)傳輸率(數(shù)據(jù)分條
stripe) - 通過鏡像或校驗操作,提供容錯能力(冗余信息的保存)
- 最簡單的組織方式是鏡像,最復雜的是塊交錯校驗。
-
例1:
RAID 0- 條帶化- 數(shù)據(jù)分布在陣列的所有磁盤上
- 有數(shù)據(jù)請求時,同時多個磁盤并行操作
-
充分利用總線寬帶,數(shù)據(jù)吞吐率提高,驅(qū)動器負載均衡
8
這種方式?jīng)]有冗余信息保存,即無差錯控制,性能是最佳的。
-
例2:
RAID 1-鏡像- 最大限度保證數(shù)據(jù)安全和可恢復性
- 所有數(shù)據(jù)同時存在與兩塊磁盤的相同位置
- 磁盤利用率為
50%
9
數(shù)據(jù)的安全性是最好的,但是磁盤利用率較低。
-
例3:
RAID 4-交錯塊奇偶校驗- 帶奇偶校驗
-
以數(shù)據(jù)塊為單位
10
數(shù)據(jù)保存在前四塊盤上,而校驗信息保存在第五塊盤上。







