官术网_书友最值得收藏!

1.1 存儲系統元素

要分析存儲I/O路徑,進而深入理解各種存儲技術的內在原理,我們必須透過事物的表象,回歸到最本質的東西。讓我們先從認識組成存儲系統的基礎元素開始。

1.1.1 磁盤驅動器

磁盤驅動器是本書討論的存儲I/O路徑的最終目的地。我們這里主要討論兩種磁盤驅動器:常規磁盤驅動器,以及固態磁盤驅動器。

1.常規磁盤驅動器

常規磁盤驅動器即傳統機械式磁盤驅動器。圖1-1是一個常規磁盤驅動器主要組件的示意圖。一個磁盤由一個或多個圓盤(platter)組成,這些盤的單面或雙面上覆蓋著用于記錄數據的一層磁性物質。圓盤繞著同一個軸(spindle)被驅動電機驅動并勻速旋轉。在每個面上,都有一個讀/寫頭用于讀取或寫入數據。每個讀/寫頭固定在磁盤臂(arm)的末端,磁盤臂連接到同一個被稱為制動桿(actuator)的軸,定位電機驅動制動桿,控制讀/寫頭沿著圓盤的半徑方向移動。圓盤的旋轉和讀/寫頭的移動使得讀/寫頭能訪問到圓盤表面的所有部分。

圓盤表面通常劃分成許多的同心圓環,稱做磁道(track),并且這些圓環再被分為扇區(sector)。通過面、磁道和扇區可以指定磁盤上的位置。扇區是對磁盤驅動器進行讀/寫訪問的最小單位,通常能容納512字節的數據。每個扇區的頭部區域包含扇區標識符以及時鐘同步信息,扇區尾部區域包含錯誤校驗碼(ECC),這個校驗碼根據扇區頭和數據計算得到。通常,所有磁道上的扇區數是相同的,但有些磁盤在外磁道上放置了更多的扇區(所有扇區的物理面積大小是一樣的,因此在稍長的外磁道上可以放置更多的扇區)。

圖1-1 磁盤驅動器的物理組件

由于每個面都被分成磁道(及扇區),這意味著當一個面的讀/寫頭位于一個磁道上時,其他面上的讀/寫頭也位于相應的磁道上。所有這些相關磁道總合起來就叫做一個柱面(cylinder)。也就是說,柱面是到軸有相同的半徑距離的磁道的集合。

外部與磁盤的通信是通過磁盤控制器進行的。磁盤控制器能夠使用相同的接口與計算機的其他部分通信,使得計算機的其余部分無須了解磁盤驅動器復雜的內部構造。為了訪問數據塊,磁盤控制器控制制動桿將讀/寫頭定位到正確的柱面上,等待數據所在的扇區旋轉到讀/寫頭的下面,然后讀/寫扇區。移動制動桿的過程被稱為尋道(seeking),所需要的時間稱為尋道時間。等待扇區旋轉到磁盤頭下面的時間稱為旋轉延遲(rotational latency)。定位到指定柱面以及旋轉到指定扇區兩個操作的組合被稱為定位磁盤頭。

2.固態磁盤驅動器

固態驅動器(Solid State Drive,SSD)是一種基于永久性內存,如閃存,或非永久性內存的計算機外部存儲設備。固態硬盤用來在攜帶型計算機中代替常規磁盤。雖然在固態驅動器中已經沒有可以旋轉的盤狀機構,但是依照人們的命名習慣,也通常將它稱為固態磁盤(Solid State Disk)。固態磁盤被制作成與常規磁盤相同的外形,固態磁盤驅動器的框圖如圖1-2所示。

和常規硬盤相比,固態磁盤具有低功耗、無噪音、抗震動、低熱量的特點。這些特點不僅使得數據能更加安全地得到保存,而且也延長了靠電池供電的裝置的連續運轉時間。并且隨著技術的發展,高端固態磁盤的容量和性能也逐步趕上,甚至完全超越了傳統磁盤,而且讀/寫速度的發展潛力更高。

目前限制固態磁盤普及應用的最大問題仍然是成本和使用壽命。目前無論是永久性內存還是非永久性內存,其每兆字節成本都遠遠高于常規硬盤。固態磁盤由于采用閃存,會有一定的寫入次數限制,因此這制約了使用壽命。

無論如何,固態磁盤會帶來文件系統本質上的改變,特別是對于小文件的訪問,文件系統會因此變得更為簡單和高效。盡管磁盤碎片整理可能還不會成為歷史,但是對于固態硬盤,頻繁進行這樣的操作會有潛在的危害性。原來為優化常規磁盤的“磁道尋址”問題而提出的“電梯算法”,不適用于固態磁盤。

圖1-2 SSD驅動器的框圖

1.1.2 存儲設備

這里所說的存儲設備指的是外掛式磁盤存儲(External Disk Storage)設備,定義為以磁盤為存儲介質,直接或通過網絡連接到應用服務器,擁有可獨立存儲、管理及讀取數據的所有組件的完備子系統。外掛式磁盤存儲設備有兩種接口:連接服務器主機的接口以及通往內部磁盤驅動器的接口。其中連接服務器的接口可以是SCSI、光纖通道、iSCSI或者Infiniband等;而內部磁盤驅動器接口可以是ATA/SATA、SCSI/SAS或者光纖通道接口。

1.磁盤柜

磁盤柜(Disk Enclosure)一般分為磁盤陣列(Disk Array)和磁盤簇(JBOD)兩種,根據連接服務器主機的接口進一步細分。

RAID(Redundant Array of Independent Disks),即“獨立磁盤冗余陣列”或者簡稱為“磁盤陣列”,基本思想就是把多個獨立的磁盤組合起來,成為一個磁盤陣列組,以獲得一個或多個方面的好處:增加容量(Capacity)、提升性能(Performance)、增強容錯性(Redundancy)和降低成本(Cost)。

JBOD(Just a Bundle Of Disks)譯成中文可以是“簡單磁盤捆綁”或者“磁盤簇”。在Linux中,它相當于Linear RAID模式,但這不是標準的RAID級別,JBOD在邏輯上把幾個物理磁盤一個接一個串聯到一起,從而提供一個大的邏輯磁盤。數據存儲簡單地從第一個磁盤開始,當第一個磁盤的空間用完后,再依次使用后續磁盤的空間。JBOD的容量等于所有組成磁盤容量的總和,但其存取性能完全等同于對單一磁盤的存取操作,它也不提供數據安全保障。

外掛式磁盤存儲設備由于使用了大量的磁盤,因此如何方便用戶在線替換故障(即熱插拔)磁盤就是一個不能忽視的問題。當然,這只是系統設計所需要考慮的一個方面,實際上磁盤陣列或磁盤簇一般包含以下主要部分:

? 兩個電源(Power Supply)和風扇(FAN)模塊;

? 兩個鏈路控制卡(Link Control Card,LCC);

? 一個背板(Midplane)。

在磁盤陣列柜中,除了背板,其他部件都是冗余的。唯獨背板只有一個,因此存在“單點故障”的可能,因此一般都將其設計為“無源”的,降低故障概率,以提高整個系統的可用性。

在這樣的設計下,磁盤、電源以及風扇等部件分別部署在磁盤陣列柜的前端或后端,以方便在線更換。最新的系統采用小磁盤,數量多,被設計為從陣列柜頂端進行插拔。圖1-3是一個從前端進行磁盤熱插拔、控制器采用上下結構的SASSAS(Serial Attached SCSI),即半行連接SCSI。磁盤柜的前視圖和后視圖。

電源和風扇直接被插到背板上。而磁盤,則通過轉接卡,安裝到托盤,再插到背板上。SAS磁盤有兩個端口,而SATASATA(Serial ATA)。磁盤只有一個端口,通過SATA轉接卡上的端口選擇芯片模擬出兩個端口,但是實際上在某個時刻,只有一個端口是活動的。

圖1-3 SAS磁盤柜的前視圖和后視圖

圖1-4是雙控制器SAS磁盤陣列柜的內部示意圖,鏈路控制卡設計有多個PHY的存儲芯片,其中部分PHY通過背板連接到SAS或SATA轉接卡上。鏈路控制卡之間通過心跳線(可以為低速信號線,如I2C或串行線)連接到對方,以便輪詢對方的活動狀態。每個鏈路控制卡上還有FLASH以及EEPROM元件,其中前者保存Firmware映像,后者則保存SAS地址等信息。有的設計中,鏈路控制卡上還包含獨立的管理芯片,用于通過GPIO等管理外圍器件(如在磁盤故障時,點亮對應的LED)。

圖1-4 雙控制器SAS磁盤柜內部框圖

磁盤陣列柜通過上行接口連接到上級磁盤陣列柜,或者連接到應用服務器的存儲適配器。通過下行接口連接下級磁盤陣列柜,實現存儲容量擴展。

2.NAS存儲設備

NAS是一種將存儲設備和應用服務器分開的機制,它使用CIFS和NFS向客戶端提供文件級服務。由于CIFS或NFS允許Windows或UNIX客戶機掛接遠程的文件系統,Windows或UNIX客戶機訪問NAS中的數據時,它的I/O請求通過網絡被重定向到NAS中,NAS的文件系統解析客戶應用程序的數據,并維護所有的數據緩沖。如果所需的數據不在緩沖中,NAS將向磁盤控制器發出請求,進而從磁盤或RAID獲得數據;最后,向客戶機返回相應的數據。NAS網絡結構如圖1-5所示。

圖1-5 NAS網絡結構

3.iSCSI存儲設備

iSCSI存儲設備即以硬件方式或軟件方式實現iSCSI協議目標端的存儲設備。iSCSI,即Internet SCSI或SCSI over TCP/IP,是IETF制定的一項基于IP的存儲網絡標準,用于連接數據存儲設備。透過在IP網絡上傳輸SCSI命令,iSCSI可以擺脫SCSI總線的距離限制。iSCSI被用于在局域網(LAN)、廣域網(WAN)或者Internet上傳輸數據,實現位置無關的數據存儲及檢索。iSCSI是一個廣為流行的存儲區域網絡協議,允許企業將存儲歸并到數據中心,同時向應用服務器提供無區別于本地磁盤的幻想。和傳統的Fibre Channel不同,iSCSI不需要專用的線纜,可以在現有的網絡基礎設施上長距離傳輸。iSCSI的層次如圖1-6所示。

圖1-6 iSCSI層次

4.NAS/iSCSI集成存儲設備

NAS技術和iSCSI技術適用于不同的應用領域,將它們融合在一個設備中,可以構建更靈活的網絡存儲節點。NAS/iSCSI集成存儲設備結合了NAS存儲設備和iSCSI存儲設備的優勢,同時支持iSCSI磁盤和本地磁盤,對外支持CIFS協議和iSCSI協議,即支持塊數據和文件數據,理論上可以整合無限的存儲容量,構建RAID和LVM,靈活配置成純文件服務器、純iSCSI目標器,或者將存儲空間分別用于文件服務和塊服務。

NAS/iSCSI集成存儲系統模塊的示意如圖1-7所示。整個結構分為六層:磁盤、RAID設備、存儲池、邏輯卷或快照卷、文件系統或目標器,以及共享。但是對CIFS、NFS用戶,結構為磁盤、RAID設備、存儲池、文件共享區和快照區、快照卷和共享;而對于iSCSI用戶,結構為:磁盤、RAID設備、存儲池、塊共享區和快照區、邏輯卷或快照卷、目標器。

圖1-7 NAS/iSCSI集成存儲系統模塊示意圖

基于磁盤構建RAID設備,系統支持多個RAID設備存在。每個RAID設備可以包含一個或多個磁盤。RAID級別可以是Linear、RAID0、RAID1和RAID5之一。

基于RAID設備創建存儲池,系統支持多個存儲池存在。每個存儲池可以包含一個或多個同一類型的RAID設備。在存儲池上劃分文件共享區、塊共享區和快照區,剩下的空間稱為空閑區,以便文件共享區、塊共享區和快照區擴展之用。

利用整個文件共享區創建(隱式)邏輯卷,在邏輯卷上創建文件系統。當前,每個存儲池文件共享區的所有空間都用來創建一個文件系統。在文件系統中創建共享,通過CIFS和NFS提供出去,所以將這一部分存儲池的空間稱為文件共享區。

可以在塊共享區創建多個(顯式)邏輯卷,并在邏輯卷上創建目標器,通過iSCSI提供給應用服務器進行塊級別的訪問,所以將這一部分存儲池的空間稱為塊共享區。

可以在快照區創建多個(顯式)快照。快照可以基于文件共享區所在的(隱式)邏輯卷,也可以基于在塊共享區上創建的(顯式)邏輯卷。快照和邏輯卷在同一個存儲池內。文件共享區還可以利用隱式邏輯卷的快照進行回滾。此外,可以為針對塊共享區邏輯卷創建的快照而創建目標器,通過iSCSI提供給備份服務器,執行備份操作。

系統可以在用戶進行文件備份、鏡像、復制等操作前,創建(隱式)快照保證上述操作的一致性,并在操作結束后刪除快照。對用戶來說,快照操作是透明的。

1.1.3 服務器部件

外置式磁盤設備或內置式磁盤通過存儲I/O總線或網絡I/O總線連接到服務器,而存儲I/O總線或網絡I/O總線的這一端為應用服務器的存儲或網絡適配器,它可以以存儲芯片方式嵌在主板上,或者以PCI適配卡方式安裝到服務器的PCI插槽中。

1.存儲適配器

如圖1-8所示,適配器按照所采用的存儲協議進一步細分為SCSI適配器、FC適配器、SATA適配器或SAS適配器等。從硬件角度,存儲適配器有兩個接口,一個連接到主機I/O總線,通常是PCI,另一個連接到存儲I/O,在圖1-8為SAS。此外,它需要有FLASH和EEPROM等器件。從軟件角度,存儲適配器包括固件(Firmware)和驅動(Driver),其中驅動又包括操作系統驅動,以及BIOS驅動等,適配器硬件、固件以及驅動之間的關系如圖1-9所示。注意這里所講的BIOS和主板BIOS是不同的概念,它是存儲適配器驅動的一個組成部分。

圖1-8 SAS主機適配器框圖

圖1-9 適配器硬件、固件及驅動之間的關系

存儲適配器BIOS驅動和Firmware被燒錄到存儲適配器的FLASH中。在存儲適配器上電后,Firmware獨立于應用服務器運行,而BIOS驅動在開機時被主板BIOS“映射”到特定的內存空間執行,根據需要,可以跳過存儲適配器BIOS驅動的執行。如果存儲適配器BIOS驅動的執行過程中,有任何配置的修改,都可以保存在EEPROM中。

一般在提供RAID功能的存儲適配器,都需要實現BIOS驅動,以實現在進入操作系統之前進行RAID設備的創建和維護。而對于不提供RAID功能的存儲適配器,并不一定要求開發BIOS驅動,但是要支持從連接到存儲適配器的磁盤上引導進入操作系統,則BIOS驅動是不可繞過的。從連接到存儲適配器的磁盤引導進入操作系統需要BIOS驅動和Windows/Linux驅動協同配合完成。

操作系統與存儲適配器的通信,是借助于存儲適配器的操作系統驅動來實現的,存儲適配器驅動被編譯進操作系統內核或者作為模塊在操作系統運行過程中加載。存儲適配器驅動通過特定的消息傳遞接口和存儲適配器Firmware進行交互,完成拓撲發現和I/O處理,同時通過IOCTL等向管理軟件提供接口支持,實現狀態查詢和存儲管理之目的。

2.網絡適配器和iSCSI適配器

為了訪問iSCSI存儲,應用服務器需要連接到以太網上并安裝iSCSI啟動器。應用服務器可以采用三種方式來支持iSCSI啟動器,如圖1-10所示:

? 使用軟件實現的啟動器,以及標準的以太網絡接口卡;

? 使用軟件實現的啟動器,以及帶有TCP卸載引擎(TCP Offload Engine,TOE)的網卡;

? 使用iSCSI主機適配器,即硬件方式的iSCSI卡。

圖1-10 網絡適配器、TOE網絡適配器和iSCSI適配器

TOE卡是一個集成芯片或者一塊PCI卡,可以獨立處理TCP協議棧(包括TCP校驗和、分段、重發、擁塞控制、快速重發等)而無需利用主機CPU的資源。TOE卡從CPU卸載以太網處理,使得應用服務器可以更好地響應網絡應用,如文件服務等。

iSCSI適配器還能承擔iSCSI存儲協議的處理,盡管iSCSI適配器并非是iSCSI操作的必備部件,它可以讓應用服務器從iSCSI存儲設備上遠程引導。這些應用服務器可以是不含本地硬盤的刀片服務器,或者是只有啟動硬盤的服務器。

1.1.4 存儲軟件

在整個存儲系統中,存儲軟件的比重不斷增大。當今業界份量最重的存儲公司無一不號稱自己是存儲軟件公司。它們將存儲硬件的生產,甚至包括設計外包(OEM/ODM)給其他公司,專注于存儲軟件的開發和完善,因此得以長期雄踞在存儲產業鏈金字塔的最頂端。

存儲軟件包括系統軟件和管理軟件,粗略來看,存儲系統軟件是指驅動、固件等需要和存儲硬件密切交互的部分;存儲管理軟件則是如存儲控制臺等應用程序。存儲軟件的復雜性遠非往日可比,一個概念的理解相對容易,但要深入透析其技術原理,需要長期的累積。在開源社區中有非常多優秀的存儲軟件產品,比如筆者一位朋友極為推薦的ZFS,體現了人類智慧的結晶,也是人類勤勞的結果。設計一個完善的存儲軟件,需要對存儲應用、存儲架構,甚至是操作系統本質有著深厚的理解。

主站蜘蛛池模板: 金门县| 静海县| 环江| 哈巴河县| 谷城县| 临西县| 德清县| 红原县| 台中县| 榆树市| 咸丰县| 古浪县| 定西市| 凤翔县| 肃宁县| 时尚| 兴国县| 乐平市| 桦川县| 遵化市| 青龙| 琼海市| 浠水县| 锡林郭勒盟| 襄樊市| 台东县| 亳州市| 台湾省| 日照市| 玉门市| 丰台区| 西和县| 马公市| 昌黎县| 左权县| 汝南县| 周至县| 依兰县| 上饶县| 保山市| 刚察县|