Chapter 12 輔助儲存結構 (Secondary-Storage Structure) 12.1 大量儲存體結構的概觀 12.2 磁碟結構 12.3 磁碟連結 12.4 磁碟排班 12.5 磁碟管理 12.6 置換空間管理 12.7 RAID結構 12.8 穩定儲存體的製作 12.9 第三儲存體結構
12.1 大量儲存體結構的概觀 12.1.1磁碟 每個磁盤像CD一樣,是一個平坦的圓形。一般磁盤直徑範圍由1.8吋到5.25吋。磁盤兩面表面上覆蓋磁性物質,在磁盤上以磁性錄製方式來儲存訊息。 傳遞速率(transfer rate)為資料在磁碟機與電腦間流動速率。 定位時間(Positioning time)(或稱為隨機存取時間(random-access time))包含移動磁臂到所在磁柱所需的時間稱為搜尋時間(seek time),以及磁頭轉到所在磁區所需的時間稱為旋轉潛伏期 (rotational latency)。
磁碟機以一組稱為I/O匯流排(bus)的線連接到電腦上。常用幾種匯流排;包含: 加強整合型電子裝置(enhanced integrated drive electronics EIDE), 進階技術連接(advanced technology attachment, ATA), 串列進階技術連接 (serial ATA,SATA), 萬用串列匯流排 (universal serial bus, USB), 光纖通道(fiber channel, FC), 小型電腦系統介面 (SCSI)。
12.1.2 磁帶 (magnetic tape) 早期使用的輔助記憶體,雖然磁帶相對地一成不變而且能儲存大量的資料,但它的存取時間比主記憶體和磁碟來的慢。 磁帶隨機存取較磁碟隨機存取慢上千倍,所以磁帶用來當輔助儲存體不是很好用。 磁帶主要使用在備份 (儲存不常使用的訊息)以及系統間傳遞資料的媒體。
12.2 磁碟結構 現代的磁碟驅動器,定址成像是一個大型邏輯區段 (logical blocks)的一維陣列,其中的邏輯區段是傳送器的最小單元。雖然有些磁碟可以用低階格式化(low-level formatted)的方式來選擇不同的逞揖區段大小 (例如 1,024位元組),但是一般的邏輯區段大小為 512位元組。 使用固定線性速度( linear velocity, CLV)的媒體,每個磁軌的位元密度是相同的。從磁碟的中心來看,較遠的磁軌有較大的長度,所以可以擁有較多的磁區。在最外側區域的磁軌要比在最內側區域磁軌擁有多出40%的磁區數。當磁頭從外側區域移到內側區域時,磁碟會增加其旋轉速度以使得磁頭移過的資料速率保持固定。這種方法被用在CD-ROM和DVD-ROM磁碟機上。 使用固定角速度(constant angular velocity, CAV)的媒體,磁碟機的旋轉速度可以保持固定,而從內側軌道到外側軌道時,位元的密度降低以保持資料速率為固定值,這種方法被用在硬碟上。
12.3 磁碟連結 12.3.1 主機連結儲存裝置(host-attached storage) 12.3 磁碟連結 12.3.1 主機連結儲存裝置(host-attached storage) 主機連結的儲存裝置是經由區域性I/O埠所存取的儲存裝置。典型的桌上型PC使用稱為IDE或ATA的I/O匯流排架構。最多支援兩台磁碟機。SATA是一種較新類似的協定以簡化的電路相接。高階工作站和伺服器通常使用更複雜的I/O架構,例如SCSI或光織通道(Fiber channel, FC)。 SCSI是一種匯流排架構。它在硬體上的媒體通常是一條有許多接線(一般是50或68)的帶狀電線。SCSI協定最多支援匯流排上有 16個裝置。通常這是由主機上的一片控制卡(SCSI initiator),和多達15個儲存裝置(SCSI target)所組成。 FC是一種高速的串列架構。這個架構可以在光纖上操作,或是在4-導體的銅纜。它有兩種變形。一種是有24位元位址空間的大型交換式結構。另一種架構是可以位址到126台裝置(驅動器和控制器)的仲裁迴路(arbitrated loop, FC-AL)。
12.3.2 網路連結儲存裝置 網路的連結儲存裝置,是經由資料網路從遠端了取的特殊目的儲存系統。客戶經由遠端程序呼叫的介面存取網路連結儲存裝置;遠端程序呼叫(RPC)在IP網路上經由TCP/UDP執行。 網路連結的儲存單元通常是用實現遠端程序呼叫介面的軟體製作成RAID陣列。把NAS視為只是另一種儲存體存取協定。
12.3.3 儲存體區域網路 儲存體區域網路 (storage-area network, SAN)是伺服器和儲存體單元間的私人網路 。SAN的功能在於它的彈性。許多主機和許多儲存體陣列可以連結到相同的SAN,而儲存體可以動態地分配給主機。一個SAN開關允許或禁止主機與儲存體之間的存取。
12.4 磁碟排班 (Disk Scheduling) 12.4.l FCFS排班法則 (first-come, first-serve, FCFS)
12.4.2 SSTF排班法則(short-seek time first)
12.4.3 SCAN排班法則
12.4.4 C-SCAN排班法則
12.4.5 LOOK排班法則
12.4.6 磁碟排班法則的選擇 在這麼多的磁碟排班演算法中,何挑選出最好的一個? 12.4.6 磁碟排班法則的選擇 在這麼多的磁碟排班演算法中,何挑選出最好的一個? SSTF是一個最通用且最為普遍的方法,因為SSTF較FCFS增加效能。 SCAN與C-SCAN法適用於大量使用磁碟的系統,因為它們比較不會有飢餓問題。 對於任何一個要求串列而言,可能可以定義出一個最佳化的修正順序,但是最佳化的排班需要許多的計算,使我們無法認同SSTF或是SCAN法的節省性。
12.5 磁碟管理 12.5.1 磁碟格式化 在磁片可以儲存資料之前,它必須被區分為磁碟控制器可以讀和寫的磁區,這個過程稱為低階格式化 (low-level formatting)或稱為實體格式化 (Physical formatting),低階格式化對磁碟的每一個磁區填入一種特定的資料結構。 典型地,每一個磁區的資料結構是由標頭 (header)、資料區 (data area通常是以512個位元組為單位)以及結尾 (trailer)所組成。 標頭與結尾包含有磁碟控制器所使用的資訊,例如磁區號碼與錯誤更正碼(error-correcting code, ECC)。 在讀取磁區時,重新計算ECC的值,並且與儲存的值比較。如果儲存的值和計算的值不同,這個不吻合指出這個磁區的資料區已經變得不可靠,以及這個磁區可能是壞的。
12.5.2 啟動區段 一台電腦開始運作(例如,當打開電源或重新啟動),需要有一個啟始靴帶式 (boot strap)程式先執行。它對系統所有的事做初始化,從CPU的暫存器到裝置控制器以及主記憶體內容,並接著啟動作業系統。 靴帶式程式是儲存在唯讀記憶體(read-only memory, ROM)之中。這個安排是便利的,因為ROM不需要初始化,而且它是在打開電源或重置的時候,處理器可以開始執行的固定位置上。
12.5.3 毀損磁區(bad block/sector) 處理方式: 鎖住 磁區備份(sector sparing)或磁區轉換(sector forwarding) 作業系統要嘗試讀取邏輯區段N。 控制器計算ECC值,若發現此磁區是壞的,就將此發現報告作業系統。 作業系統在下一次重新啟動時,就執行一特殊指令以告訴SCSI控制器,將壞的磁區用空白的換掉。 之後,系統要求邏輯區段N時,這要求會被控制器轉換成取代的磁區位址。
12.6 置換空間管理 12.6.1 置換空間使用(Swap Space) 12.6.2 置換空間的位置 12.6 置換空間管理 12.6.1 置換空間使用(Swap Space) 不同的作業系統根據自己所使用的記憶體管理方法,以不同的方式使用置換空間。 使用置換方法的系統可能使用置換空間來保存整個行程的影像(包括程式碼和資料分段)。 分頁系統可能只要儲存被移出主記憶體的分頁。因此,對於一個分頁系統需要的置換空間大小可能要根據,它在備份時所需的實體記憶體和虛擬記憶體數量,及虛擬記憶體所使用的方式而有所不同。 置換需要幾百萬位元組到幾十億位元的磁碟空間。 12.6.2 置換空間的位置 置換空間可以放在兩個地方。置換空間可以放在正常的檔案系統中,或是放在一個獨立的磁碟分割。
12.6.3 置換空間的管理 :範例 傳統UNIX核心開始時是以置換法製作,它在連續的磁碟區域和記憶體之間複製完整的所有行程。當分頁硬體逐漸普遍之後,發展成置換和分頁的結合。 在Solaris (SunOS),設計者對標準作一些改變,以增進效率和反映技術上的改進。最大的改變是Solaris只有在分頁被強迫移出實體記憶體時才會配置置換空間,而不是在虛擬記憶體分頁第一次產生時配置。 Linux允許建立一個或更多的置換區域。一個置換區域不是在一般檔案系統的置換檔案上就是在原始置換分割。每一個置換區域由一系列4KB分頁槽(Page slots)組成,分頁槽用來保存置換分頁。連結每一個分頁區域成為一個整數計數器陣列的置換映對(swap map),每一個計數器對應於置換區域上的一個分頁槽。
12.7 RAID 結構 磁碟組織的技巧(為獨立磁碟的重複陣列,redundant array of inexpensive disk,簡稱RAID) 常被用來強調性能和可靠度。 12.7.1 經由重複改進可靠度 假設單一台磁碟機的平均失效時間(mean time to failure)是 100,000小時,則 100台磁碟機的磁碟陣列中某一台磁碟機的平均失效時間是100,000/100=1,000小時 (或41.66天)! 可信度問題的解決方法是引入重複(redundancy);儲存在正常狀況下不需要的額外資料,但這些資料可以用在磁碟機失效的情況得以重建遺失的資料。因此,即使如果磁碟失效了,資料也不會遺失。
12.7.2 藉由並行改善性能 考慮對於多磁碟機並行存取的優點。使用磁碟鏡射時,讀取要求能夠被處理的速率可以加倍,因為讀取要求可以被送往任何一台磁碟機 。每一次讀取的傳輸速率和單一磁碟系統相同,但是單位時間的讀取數目加倍了。 有了多台磁碟機時,也可以藉由在多台磁碟間交插儲存資料來改進傳輸速率。資料交插 (data striping)的最簡單格式是將每一個位元組分成位元分散在許多台磁碟機上:這種交插稱為位元成層次的交插 (bit-levels striping)。 磁碟機系統經由交插的並行有兩個主要目標︰ 規模存取(亦即頁存取)的生產量。 降低大量資料存取的反應時間。
12.7.3 RAID層次 鏡像(mirroring)提供高的可靠度,但是卻很昂貴。交插提供高的資料傳輸率,但是卻不能增進可靠度。數種藉由使用磁碟機交插結合 “同位”位元(Parity bit)的低價格重複性的技巧曾經被提出。這些技巧有不同的價格 -性能調整,而且被歸納成稱為RAID層次的數種階層。 RAID 0:在區段層次交插的磁碟機陣列,但是沒有任何重複的資料(例如鏡像或同位位元)。 RAID l: 指磁碟的鏡像(mirroring)。
RAID 2: 也稱為記憶體型式的錯誤更正碼組織 (memory style error-correction-code, ECC, organization)。記憶體系統早已經使用同位位元製作錯誤偵錯。記憶體系統中的每一個位元組都有一個和它相關的同位位元,其中記錄著此位元組中位元被設定為1的個數是偶數(同位位元,parity=0)或奇數 (Parity=1)。 RAID 3: 位元交錯同位位元組織(bit-inter leaved parity organization)由RAID層次2精進而來(不像記憶體系統),藉由考慮磁碟控制器可以偵測到一個磁區是否被正確地讀出,所以單一個同位位元可以被用來做錯誤更正和錯誤偵測。它的觀念如下。如果磁區當中 有一個損壞時,可以正確地知道是那一個磁區,而對於磁區中的每一位元,可以藉由其它磁碟機之磁區中的相關位元所計算出的同位位元以猜出它是 1或0。如果剩餘位元的同位位元和儲存的同位位元相等,則遺失的位元是0:否則就是 l。 RAID 4: 區段交錯同位位元組織(block-interleaved parity organization)使用區段層次的交插(如同RAID O),除此之外在另一台磁碟存放其它N台磁碟機相關區段的同位位元區段。
RAID5(區段交插分散式同位位元)藉由把資料和同位位元分散到N+1台磁碟機,這和層次4的儲存資料在N台磁碟機,而同位位元在某一台磁碟機不相同。對於某一區段而言,其中一台儲存同位位元,而其餘的儲存資料。 RAID6(也稱為P+Q重複技巧)和RAID層次5極相似,但是儲存額外重複性資料以保護多台磁碟機失效。RAlD6並沒有使用同位位元,而是使用類似於Reed-Solomon碼的錯誤更正碼。每4個位元的資料就有2位元的額外資料被儲存 (這和層次 5中的 1個同位位元不相同),而此系統可以忍受兩台磁碟機壞掉。 RAID 0+l: RAID層次0和1的結合。RAlD0提供了性能,而RAID1提供可靠度。通常,它提供了比RAID5更好的性能。性能和可靠度都很重要的環境非常普遍。很不幸的,這種情況會使需要儲存的磁碟機數目加倍,所以也很昂貴。在 RAIDO+1中,一組磁碟機被交插 分散開來,然後交括的磁碟機再被鏡射到另一組 (對應的交插)。另一種RAID的選項在商業上已經逐漸可以取得的是RAID 1+0,在這種組態中磁碟機是成組的鏡像,而產生的鏡像組在被交插儲存。這種 RAID有理論優於RAID 0+l 。
12.7.4 選擇一個 RAID 層次 重建對於RAID1最簡單,因為資料可以從另一台磁碟機拷貝過來;對於其它層次RAlD而言,需要存取陣列中所有其它磁碟機以重建毀損的磁碟機資料。如果需要連續提供資料時,RAID系統的重建性能就是一項重要的因素,這在高性能或是交談式的資料庫系統正是如此。另外,重建性還會影響到平均失效時間。對大型磁碟機組的RAID5重建時間可能要幾個小時。 RAID0被用在高性能應用上,但是資料損失不是很重要時。RAID層次1對於需要有快速復建的高可靠度應用上很普遍。RAIDO+1和1+0被用在性能和可靠度都很重要的場合,例如小型的資料庫。 因為RAID1在空間上的額外負擔,RAID5通常最適於儲存大量的資料。RAID6目前沒有被許多RAID的製作所支援,但是它應該提供比RAID5更好的可靠度。 12.7.5 延伸 當RAID結構被應用到陣列式磁帶時,陣列式磁帶中的一個磁帶毀損時,依然可以用來恢復資料。 當RAID應用到廣播式的資料時,一個區段的資料被分成短的單元,並且伴隨著同位單元被廣播出去;如果其中一個單元因為某些原因沒有被收到時,它可以從其它單元重建。
12.7.6 RAID的問題 對作業系統和它的使用者, RAID不常保證資料是可以使用的。舉例來說,檔案的一個指標可能是錯誤的或檔案結構募面的指標可能是錯誤的。不完全的寫入如果不適當地恢復,會造成錯誤百出的資料。 一些其它的行程也可以偶然在檔案系統的結構上寫入。RAID保護貢體媒體的錯誤,但不是其它硬體和軟體的錯誤。軟體和硬體的錯誤是一樣大,也就有多少潛在危險在系統的資料上。
12.8 穩定儲存體的製作 磁碟用下列三種輸出之一寫入結果: 成功完成:資料正確地寫入磁碟之中。 12.8 穩定儲存體的製作 磁碟用下列三種輸出之一寫入結果: 成功完成:資料正確地寫入磁碟之中。 部份失敗:失敗發生在傳送的中間,因此,只有一些磁區已經寫入新的資料,而且在寫入過程之中發生失敗的磁區可能已經損毀了。 全部失敗:失敗發生在開始寫入磁碟之前,因此,在磁碟上的先前資料值,仍然保持原狀。 每當在區段寫入期間發生錯誤時,要求系統能檢測出來並且啟動恢復程序以便復原這個區段到完整的狀態。為了達到此目的,系統必須為每一邏輯區段保有兩段實體區段。輸出操作的執行步驟如下: 把資料寫到第一段實體區段。 當第一段寫入成功之後,把相同的資料寫入第二段實體區段。 只有在第二次寫入成功地完成,才能宣佈操作完成。 從失效中復原的時候,兩段實體區段都要檢查。如果兩段都相同,而且沒有錯誤存在,則不需要做任何進一步動作。如果有一區段包含有可以檢查得到的錯誤,則用另一區段的內容取代。
12.9 第三儲存體結構 12.9.1 第三儲存體裝置 可更換媒體 (removable media) 軟碟片、磁帶、唯讀光碟、寫入一次光碟、可寫入光碟和DVD。其它種類的第三儲存裝置包括在快取記憶體儲存資料的可更換裝置並且經由USB介面連接到電腦。 12.9.1.1 可更換的磁碟片 軟碟片是可更換之磁碟。 l2.9.1.2 磁 帶 磁帶 (magnetic tape)是可更換媒體的另一種型式。 12.9.1.3 未來的技術 在末來,其它的儲存技術可能會變成是重要的。有一種很有前途的儲存技術是雷射儲存(holographic storage),它使用雷射光在特殊的媒體上記錄全像相片。
12.9.2 作業系統的支援 作業系統的兩項重要工作是管理實際裝置以及對應用程式呈現出抽象的虛擬機器。 12.9.2.1 應用介面 12.9.2 作業系統的支援 作業系統的兩項重要工作是管理實際裝置以及對應用程式呈現出抽象的虛擬機器。 12.9.2.1 應用介面 大部份的作業系統在處理可更換的磁碟時,幾乎是完全不差地將它視為固定式磁碟來處理。使用檔案系統,就像是使用硬碟的檔案系統一般。 12.9.2.2 檔案的命名 作業系統必須處理的另一個問題,是如何在可更換的媒體上對檔案命名。對固定磁碟而言,命名並不困難。在PC,檔案名稱由跟隨著路徑名稱的驅動器字元所組成。在UNIX,檔案名稱不再含有驅動器字元,但是陳列表 (mount table)讓作業系統可以發現檔案安置在那一個驅動器之中。 12.9.2.3 層級的儲存管理 層級的儲存管理(hierarchical storage management, HSM)通常安裝已經很少、偶而或週期性使用的大量資料。
12.9.3 性能上的議題 12.9.3.1 速度 第三儲存體的速度有兩個方向要討論的:頻寬以及回應延遲。測量頻寬(sustained bandwidth)時是以每秒多少位元組為單位,而所承受的頻寬是在很大的資料傳輸下平均的資料速率也就是位元組的個數除以傳輸的時間。有效的頻寬(effective bandwidth)是計算整個I/O時間的平均值,包含在播放系統之中的尋找seek,定位locate及卡夾交換的時間。 速度的第二個部份是存取回應延遲 (access latency)。經由性能的測量可以發覺,磁碟機會比磁帶機快;磁碟儲存體基本上是二維的裝置:所有的位元都是在一個平面上。 12.9.3.2 可靠度 (reliability) 固定式磁碟驅動裝置比可更換式的磁碟或磁帶來得可靠,而且一個光學式的卡匣會比磁碟或是磁帶來得可靠。
12.9.3.3 成 本