容錯技術
磁盤容錯技術是通過增加冗余的磁盤驅動器、磁盤控制器等方法來提高磁盤系統可靠性的一種技術。當磁盤系統的某部分出現缺陷或故障時,磁盤仍能正常工作,且不致造成數據的丟失或錯誤。目前廣泛采用磁盤容錯技術來改善磁盤系統的可靠性,也稱為系統容錯技術 SFT,可把它分成三個級別。
第一級容錯技術 SFT-1
第一級容錯技術(SFT-I)是最基本的一種磁盤容錯技術,主要用於防止因磁盤表面缺陷所造成的數據丟失。它包含雙份目錄、雙份文件分配表及寫后讀校驗等措施:
- 雙份目錄和雙份文件分配表:為了防止文件目錄和文件分配表 FAT 被破壞,可在不同的磁盤上或在磁盤的不同區域中分別建立雙份目錄表和 FAT,另一份為備份目錄及備份 FAT;
- 熱修復重定向:系統將磁盤容量的很小一部分作為熱修復重定向區,用於存放當發現磁盤有缺陷時的待寫數據,並對寫入該區的所有數據進行登記,以便於以后對數據進行訪問。
- 寫后讀校驗方式:在每次向磁盤中寫入一個數據塊后,又立即將它讀出,並送至另一緩沖區中與內存緩沖區中在寫后仍保留的數據進行比較。若兩者一致便認為此次寫入成功,否則再重寫,若重寫后兩者仍不一致則認為該盤塊有缺陷;
第二級容錯技術 SFT-2
第二級容錯技術主要用於防止由磁盤驅動器和磁盤控制器故障所導致的系統不能正常工作,它具體又可分為磁盤鏡像與磁盤雙工。
磁盤鏡像功能
為了避免磁盤驅動器發生故障而丟失數據,便增設了磁盤鏡像(Disk Mirroring),也就是同一磁盤控制器下再增設一個完全相同的磁盤驅動器。在每次向主磁盤寫入數據后,都需要將數據再寫到備份磁盤上,使兩個磁盤上具有完全相同的位像圖。當主磁盤驅動器發生故障時,由於有備份磁盤的存在,在進行切換后,使主機仍能正常工作。
磁盤鏡像雖然實現了容錯功能,卻使磁盤的利用率降至 50%,也未能使服務器的磁盤 I/O 速度得到提高。如果控制這兩台磁盤驅動器的磁盤控制器發生故障,或主機到磁盤控制器之間的通道發生故障,磁盤鏡像功能便起不到數據保護的作用。
磁盤雙工
因此 SFT-2 又增加了磁盤雙工(Disk Duplexing),即將兩台磁盤驅動器分別接到兩個磁盤控制器上,同樣使這兩台磁盤機鏡像成對。
如果某個通道或控制器發生故障時,另一通道上的磁盤仍能正常工作,不會造成數據的丟失。在磁盤雙工時,由於每一個磁盤都有自己的獨立通道,故可同時(並行)地將數據寫入磁盤或讀出數據。
集群技術
為了進一步增強服務器的並行處理能力和可用性,采用了對稱多台處理機 SMP 來實現集群系統的服務器功能。集群是指由一組互連的自主計算機組成統一的計算機系統,給人們的感覺是是一台機器。利用集群系統不僅可提高系統的並行處理能力,還可用於提高系統的可用性,其主要工作模式有三種。
雙機熱備份模式
雙機熱備份模式的系統中備有兩台服務器,兩者的處理能力通常是完全相同的,一台作為主服務器,另一台作為備份服務器。一旦主服務器出現故障,備份服務器便立即接替主服務器的工作而成為系統中的主服務器,修復后的服務器再作為備份服務器。
為使在這兩台服務器間能保持鏡像關系,應在這兩台服務器上各裝入一塊網卡,並通過一條鏡像服務器鏈路 MSL(Mirrored Server Link)將兩台服務器連接起來。
雙機互為備份模式
雙機互為備份模式中,兩台服務器均為在線服務器,它們各自完成自己的任務。在兩台服務器之間通過某種專線將其連接起來,再通過路由器將兩台服務器互連起來,作為備份通信線路。每台服務器內都配置兩台硬盤,一個用於裝載系統程序和應用程序,另一個用於接收由另一台服務器發來的備份數據,作為該服務器的鏡像盤。在正常運行時,鏡像盤對本地用戶是鎖死的,這樣就較易於保證在鏡像盤中數據的正確性。
雙機互為備份模式檢測故障並恢復的步驟如下:
- 如果通過專線鏈接檢查到某台服務器發生了故障,通過路由器去驗證這台服務器是否真的發生了故障;
- 如果故障被證實,則由正常服務器向故障服務器的客戶機發出廣播信息,表明要進行切換;
- 在切換成功后,客戶機無須重新登錄便可繼續使用網絡提供的服務;
- 當故障服務器修復並重新連到網上后,已被遷移到無故障服務器上的服務功能將被返回,恢復正常工作。
對於連接在非故障服務器上的客戶機,則只會感覺到網絡服務稍有減慢而已。如果僅有一個硬盤,則可用建立虛擬盤的方式或分區方式來分別存放。這種模式的優點是兩台服務器都可用於處理任務,因而系統效率較高,現在已將這種模式從兩台機器擴大到 4 台、8 台、16 台甚至更多。
公用磁盤模式
為了減少信息復制的開銷,可以將多台計算機連接到一台公共的磁盤系統上去。公共磁盤被划分為若干個卷,每台計算機使用一個卷。如果某台計算機發生故障,此時系統將重新進行配置,根據某種調度策略來選擇另一台替代機器,后者對發生故障的機器的卷擁有所有權,從而可接替故障計算機所承擔的任務。
這種模式的優點是消除了信息的復制時間,因而減少了網絡和服務器的開銷。
后備系統
在一個完整的系統中必須配置后備系統,一方面是因為磁盤系統不夠大,不可能將系統在運行過程中的所有數據都裝在磁盤中,需要把暫時不用的數據存放在后備系統中。另一方面是為了防止系統發生故障或病毒的感染,導致系統中的數據弄錯或丟失。
磁帶機
磁帶機最早作為計算機系統的外存儲器,由於它只適合存儲順序文件,故現在主要把它作為后備設備。磁主要優點是容量大,一般可達數 GB 至數十 GB,且價格便宜,故在許多大、中型系統中都配置了磁帶機。其缺點是只能順序存取且速度也較慢,為數百 KB 到數 MB,為了將一個大容量磁盤上的數據拷貝到磁帶上很耗時。
硬盤
移動硬盤
對於小型系統和個人電腦而言,常用移動磁盤作為后備系統。最大的優點是速度高,脫機保存方便,而且保存時間也較長,可比磁帶機長出 3~5 年。但單位容量的費用較高,近年來移動磁盤的價格已有明顯下降,而且體積也非常小,應用也日益廣泛。
固定硬盤驅動器
在大、中型系統中可利用大容量硬盤兼做后備系統,為此需要在一個系統中配置兩個大容量硬盤系統。每個硬盤都被划分為數據區和備份區,可在每天某個時刻將硬盤 1 中的“數據 0”拷貝到硬盤 1 中的拷貝區中保存,同樣也將硬盤 2 中的“數據 1”拷貝到硬盤 0 中的拷貝區中保存。
這種后備系統不僅拷貝速度非常快,而且還具有容錯功能,即當其中任何一個硬盤驅動器發生故障時,都不會引起系統癱瘓。
光盤驅動器
只讀光盤驅動器 CD-ROM 和 DVD-ROM 主要用於播放音頻和視頻,由於它們都只能播放(讀)不能寫,故難於用它們作為后備設備。可讀寫光盤驅動器又稱為刻錄機,既能播放(讀)又能刻錄(寫),故可將它們作為后備設備,存儲計算機中的數字信息。
事務
在實際應用中,經常會在多個文件中都含有同一個數據。數據一致性問題是指,保存在多個文件中的同一數據,在任何情況下都必需能保證相同。為了保證數據的一致性,在現代 OS 中都配置了能保證數據一致性的軟件。
事務的定義
事務是用於訪問和修改各種數據項的一個程序單位,也可以被看做是一系列相關讀和寫操作。只有對分布在不同位置的同一數據所進行的讀和寫(含修改)操作全部完成時,才能以提交操作(Commit Operation)結束事務,確認事務的變化。但是只要這些操作中有一個讀、寫或修改操作失敗,便必須執行回滾操作(Abort Operation)。
一個被天折的事務,通常已執行了一些操作,可能已對某些數據做了修改。為使天折的事務不會引起數據的不一致性,需將該事務內剛被修改的數據項恢復成原來的情況,使系統中各數據項與該事務未執行時的數據項內容完全相同。
事務的屬性
事務必須同時滿足四個屬性,即事務屬性 ACID。
屬性 | 說明 |
---|---|
原子性(Atomic) | 一個事務要么全部完成,要么一個也不修改 |
一致性(Consistent) | 事務在完成時,必須使所有的數據都保持一致狀態 |
隔離性(Isolated) | 即對一個事務對數據所作的修改,必須與任何其它與之並發事務相隔離 |
持久性(Durable) | 即事務完成之后,它對於系統的影響是永久性的 |
事務記錄
為了實現上述的原子修改,通常須借助於稱為事務記錄的數據結構來實現。這些數據結構被放在一個非常可靠的存儲器中,又稱為運行記錄(Log)。包括有下列字段:
字段 | 說明 |
---|---|
事務名 | 用於標識該事務的唯一名字 |
數據項名 | 它是被修改數據項的唯一名字 |
舊值 | 修改前數據項的值 |
新值 | 修改后數據項將具有的值 |
在事務記錄表中的每一記錄描述了在事務運行中的重要事務操作,如修改操作、開始事務、托付事務或天折事務等。
恢復算法
由於一組被事務 Ti 修改的數據,以及它們被修改前和修改后的值都能在事務記錄表中找到,因此利用事務記錄表系統能處理任何故障,而不致使故障造成非易失性存儲器中信息的丟失。恢復算法可利用以下兩個過程:
- undo〈Ti〉:把所有被事務 Ti 修改過的數據恢復為修改前的值。
- redo〈Ti〉:把所有被事務 Ti 修改過的數據設置為新值。
如果系統發生故障,系統應對以前所發生的事務進行清理。通過查找事務記錄表,可以把尚未清理的事務分成兩類。一類是其所包含的各類操作都已完成的事務,另一類是其所包含的各個操作並未全部完成的事務。
檢查點
當系統發生故障時,必須去檢查整個 Log 表。由於在系統中可能存在着許多並發執行的事務,因而在事務記錄表中就會有許多事務執行操作的記錄。因此一旦系統發生故障,在事務記錄表中的記錄清理起來就非常費時。
引入檢查點的主要目的是,使對事務記錄表中事務記錄的清理工作經常化,即每隔一定時間便做一次下述工作。如果一個事務在檢查點前就做了托付,則在事務記錄表中便會出現一個在檢查點記錄前的托付記錄。在這種情況下,所有被該事務修改過的數據或者是在檢查點前已寫入穩定存儲器,以后在系統出現故障時,就不必再執行 redo 操作了。
並發控制
在多用戶系統和計算機網絡環境下,可能有多個用戶在同時執行事務,把用於實現事務順序性的技術稱為並發控制。該技術在應用數據庫系統中已被廣泛采用,現也廣泛應用於 OS 中,在數據庫系統和文件服務器中應用得最多的同步機制——鎖。
互斥鎖
實現順序性的一種最簡單的方法,是設置互斥鎖(Exclusive Lock)。當某一事務 Ti 要去訪問某對象時,應先獲得該對象的互斥鎖。若成功便用該鎖將該對象鎖住,於是事務 Ti 便可對該對象執行讀或寫操作,其它事務由於未能獲得該鎖不能訪問該對象。但如果對象已被其它事務鎖住,則此時 Ti 應對此前已被 Ti 鎖住的其它對象進行開鎖,宣布此次事務運行失敗,但不致引起數據的變化。
共享鎖
利用互斥鎖實現順序性的方法簡單易行,但這卻存在着效率不高的問題。因為一個共享文件雖然只允許一個事務去寫,但卻允許多個事務同時去讀,而在利用互斥鎖來鎖住文件后,則只允許一個事務去讀。為了提高運行效率而又引入了共享鎖(Shared Lock),共享鎖則允許多個事務對相應對象執行讀操作,但不允許其中任何一個事務對對象執行寫操作。
重復數據的一致性
為了保證數據的安全性,最常用的做法是把關鍵文件或數據結構復制多份,當主文件失效時還有備份文件可以使用。顯然主文件中的數據應與各備份文件中的對應數據相一致,同樣應保證不同處的同一數據結構中數據的一致性。
重復文件的一致性
在有重復文件時,如果一個文件拷貝被修改,則必須也同時修改其它幾個文件拷貝,以保證各相應文件中數據的一致性。這可采用兩種方法來實現:
- 當一個文件被修改后可查找文件目錄,以得到其它幾個拷貝的索引結點號,再從這些索引結點中找到各拷貝的物理位置,然后對這些拷貝做同樣的修改;
- 為新修改的文件建立幾個拷貝,並用新拷貝去取代原來的文件拷貝。
連接數的一致性
在 UNIX 類型的文件目錄中,其每個目錄項內都含有一個索引結點號,用於指向該文件的索引結點。對於一個共享文件,其索引結點號會在目錄中出現多次。另一方面在該共享文件的索引結點中有一個鏈接計數 count,用來指出共享本文件的用戶(進程)數。在正常情況下這兩個數據應該一致,否則就會出現數據不一致性差錯。
為了檢查這種數據不一致性差錯,需要配置一張計數器表,為每個文件建立一個表項,其中含有該索引結點號的計數值。在進行檢查時,從根目錄開始查找,每當在目錄中遇到該索引結點號時,便在該計數器表中相應文件的表項上加 1。當把所有目錄都檢查完后,便可將該計數器表中每個表項中的索引結點號計數值與該文件索引結點中的鏈接計數 count 值加以比較,如果兩者一致表示是正確的,否則便是發生了鏈接數據不一致的錯誤。
參考資料
《計算機操作系統(第四版)》,湯小丹 梁紅兵 哲鳳屏 湯子瀛 編著,西安電子科技大學出版社