Linux and storage environment

一種靈活存儲的開放平臺

Linux 就像是文件系統的瑞士軍刀,它還爲桌面系統和服務器提供廣泛的存儲技術。除了文件系統,Linux 結合了世界級的 NAS 和 SAN 技術、數據保護、存儲管理、雲支持以及固態存儲。瞭解有關 Linux 存儲生態系統的更多信息以及爲何它能成爲服務器市場霸主。



Linux 意味着許多事情,它的力量在於它能夠靈活地支持截然不同的使用模式。但是 Linux 最重要的優勢之一是作爲存儲領域的主力。關於 Linux 和存儲通常讓人想到直接附加存儲或最新的文件系統,但是關於存儲和 Linux 還有比所看到的多得多的東西。Linux 中的元素不僅穩定而且高端。

本文探討了使 Linux 處於存儲領域中心的各種存儲技術。讓我們從底部開始 — 即存儲架構 —,然後逐步將堆棧發展爲功能、文件系統和待執行計劃(請參考圖 1)。

圖 1. 本文中探索的存儲堆棧

wKioL1NVWKbxuiAbAABKKDNIVsE888.jpg

存儲架構

存儲如何附加到平臺是整體存儲架構的關鍵。三個常見的架構涵蓋了絕大多數模型:

  • 直接附加存儲(Direct-attached storage,DAS)

  • 存儲區域網絡(Storage area networks,SAN)

  • 網絡附加存儲(Network-attached storage,NAS)

當然,Linux 支持所有三種模型並通過與這些模型一起發生的變更而發展。

圖 2. 主要存儲架構

wKiom1NVWS-BMYtRAADW6P35lpk123.jpg

其他存儲介質;雖然本文主要側重於磁盤存儲,但是很難忽略 Linux 中支持的其他設備。從快速消失的軟盤驅動器、CD-ROM 和 DVD 讀取器和編寫器甚至企業磁帶系統,在談到大量存儲設備支持時,Linux 是很難被戰勝的。圖 2 說明了這些模型,側重於文件系統和存儲的位置。DAS 模型包含到平臺的直接存儲附件,代表了絕大多數的存儲使用。SAN 將存儲從平臺中分離出來並使其可通過塊存儲協議中的一個進行訪問。最後,NAS 提供與 SAN 類似的架構,但是在文件級上進行操作。

直接附加的存儲

Linux 支持種類繁多的 DAS 界面,包括像並行高級技術附件(Advanced Technology Attachment,ATA)的舊標準 — 電子集成驅動器 [IDE](Integrated Drive Electronics [IDE])/ATA — 並行 SCSI 和光纖通道 (Fibre Channel) 以及新的存儲界面,例如串行連接的 SCSI(Serial Attached SCSI,SAS)、串行 ATA(Serial ATA,SATA)和外部 SATA(external SATA,eSATA)。您還將發現高級存儲技術,例如 USB3(可擴展的主機控制器界面,Extensible Host Controller Interface [xHCI])和 Firewire (Institute of Electrical and Electronics Engineers 1394)。

存儲區域網絡

SAN 提供塊級存儲合併,以便在一些服務器中共享它。存儲對服務器顯示爲是本地的,其中端點存儲設備可以爲客戶端設備實現附加服務(例如備份和複製)。

SAN 的協議和界面是廣泛和多樣的。您可以在 Linux 中發現典型的 SAN 協議,例如光纖通道以及其通過 IP 的擴展 (iFCP)。還存在更新的協議,例如 SAS、以太網光纖通道(Fibre Channel over Ethernet,FCoE)以及 Internet SCSI (iSCSI),更多域特定協議,例如適用於遠程直接內存訪問 (RDMA-iSER) 和 SCSI RDMA 協議(SCSI RDMA Protocol,SRP),其通過 Infiniband 的 RDMA 擴展 SCSI。

作爲存儲協議出現的以太網已經在 Linux 中完全實現,其說明了這些方法的力量和靈活性。此外,Linux 中完全支持 10 千兆位以太網(10-gigabit Ethernet,10GbE),並允許構造高性能 SAN。您還可以發現類似 ATA over Ethernet (ATAoE) 的協議,其通過無所不在的以太網協議擴展 ATA 協議。

網絡附加存儲

最後但同樣重要的是 NAS。NAS 是通過網絡的存儲合併,以便不同類型客戶端在文件級別進行訪問。Linux 中完全支持的兩種最流行協議是網絡文件系統(Network File System,NFS)和服務器消息塊/通用互聯網文件系統(Server Message Block/Common Internet File System,SMB/CIFS)。

雖然原始的 SMB 實現是專有的,但是它被逆向設計以便在 Linux 中受到支持。後來的 SMB 修訂版被公開記錄以便允許在 Linux 中進行更簡單的開發。

Linux 繼續發展針對 NFS 的各種增強和擴展。NFS 現在是一個狀態協議幷包括對數據和元數據分離的優化以及數據訪問並行。

其他存儲架構

不是所有的存儲架構都非常適合 DAS、SAN 和 NAS 存儲器。因爲 Linux 是開放的,所以更容易在其內部開發新的技術,這就是爲什麼您可以在 Linux 中發現最新尖端技術的原因。

一個值得一提的存儲架構是對象存儲架構,儘管不是新功能,但是它很有趣。對象存儲架構將文件從其元數據中分離出來並獨立存儲它們(在其各自的數據和元數據服務器上)。此分離提供了一些優勢,例如最大程度降低了元數據的瓶頸(因爲與此服務器交互只需要定位並打開文件)。還可以通過在多個數據服務器上分段數據進行並行訪問來增強性能。對象存儲在 Linux 內以各種方式來實現,包括對對象存儲設備(Object Storage Device,OSD)規範的支持,以及在 Linux clUSTER (Lustre) 和擴展對象文件系統(Extended Object File System,exofs)內以不同方式實現。

存在名爲內容尋址存儲(content-addressable storage,CAS)的類似技術,其使用數據散列值以便標識其名稱和地址。此技術還稱爲固定內容存儲(fixed-content storage,FCS),是非常有用的,因爲其容易識別重複數據:該散列之(如果足夠強)將是相同的且允許簡單的重複數據刪除。Venti 架構支持這種方法並存在於 Linux 內(除了貝爾實驗室的 Plan 9 版本之外)。




存儲服務:邏輯卷管理

雖然存儲虛擬化曾經是高端存儲系統的獨特功能,但是現在它是 Linux 的標準功能。Linux 中可用的一個最重要的服務是邏輯卷管理器(Logical Volume Manager,LVM)。LVM 是一個薄層,其位於基礎存儲架構中可用的物理存儲之上(附帶用戶空間工具),並將該存儲提取到一個或多個管理更簡單的邏輯卷中。例如,在物理磁盤不能調整大小時,可以調整邏輯卷大小以便從其中添加或刪除空間。

通過將物理設備提取到邏輯設備的能力,LVM 創建了一些其他存儲功能,例如卷的只讀和讀寫快照、跨卷的數據分段以便提高性能(獨立磁盤的冗餘陣列 [RAID]-0)、跨卷 (RAID-1) 的數據鏡像以及在物理設備之間的卷遷移(甚至聯機時)。

對於鏡像之外的數據保護來說,Linux 包括 md(其代表多個磁盤)並提供一系列豐富的 RAID 功能。此元素實現了軟件 RAID 功能,支持 RAID-4(通過校驗塊分段數據)、RAID-5(通過分佈式校驗塊分段數據)、RAID-6(通過分佈式和雙冗餘校驗塊分段數據)以及 RAID-10(分段並鏡像數據)。

LVM 依賴於另一個名爲設備映射器 的存儲組件,其提供(在其他功能中)多路徑功能。例如,在 SAN 環境中,通常有多個到 SAN 構造的存儲界面。多路徑是一種提供保護以避免給定路徑故障的功能,確保只要存在路徑來與端點通信,就仍然可以使用存儲。




存儲功能

在過去幾年中,項存儲堆棧添加了兩個相對簡單的功能,說明了存儲生態系統的發展:

  • 數據完整性

  • 支持固態磁盤(solid-state disks,SSDs)

數據完整性

第一個變更處理在企業存儲設置中使用商用驅動器。雖然企業級驅動器(如 SAS 驅動器)是可靠的,但是 SATA 驅動器是以不同要求以及成本作爲主要因素而創建的。由於這個原因,SATA 驅動器可能遭遇稱爲無提示數據損壞 的問題,即在從磁盤讀取數據時可能引入錯誤且無法檢測到這些錯誤。要在企業設置中解決此問題並支持 SATA 驅動器,需將數據完整性代碼添加到磁盤上的塊中(其中磁盤使用 520 字節扇區,而不是傳統的 512 字節塊)。此外,驅動器自身可以驗證正在寫入的數據,以便其完整性代碼與數據匹配。用這種方式,可以在錯誤被寫入磁盤時捕獲這些錯誤,而不是以後在無法對這些錯誤進行任何操作時檢測到它們。

這種機制被稱爲數據完整性字段(Data Integrity Field,DIF),如圖 3 所示,其代表一個在數據塊上包括循環冗餘校驗(Cyclic Redundancy Check,CRC)的 8 字節尾部、一個參考標記(通常是邏輯塊地址(Logical Block Addressing [LBA])的一部分)以及一個應用程序定義的應用程序標記。參考標記對於捕獲對不正確塊的錯誤寫入非常有用,其中應用程序標記可用於捕獲軟件堆棧中的其他錯誤。例如,如果寫入 PDF 文檔,那麼應用程序標記可設置爲用來指示特殊 PDF 標記的值。在讀取 PDF 時,可以檢查到每一個塊的應用程序標記,以便確保所有標記都指定該 PDF 標記。自從內核版本 2.6.27 以來,Linux 內支持 DIF。

圖 3. 適用於 512 字節扇區的 DIF 結構

wKioL1NVWb_Rea8TAABSTRTjaFc773.jpg


對 SSD 的增加支持

SSD 的引入正在以一些方式改變着存儲的生態系統。這些磁盤刪除了在旋轉磁盤中的一些比較大的延時,因此其提供了一種維護與 CPU 之間的數據流的方式。但是 SSD 不同於硬盤驅動器(Hard Disk Drive,HDD),因爲它們是可以消耗掉的。SSD 內存儲的編寫次數是有限的(取決於技術);因此,在編寫數據時要儘可能的有效是非常重要的。更糟的是,SSD 必須內部切換數據以便儘可能減低在稱爲垃圾收集耗損均衡 的進程中引入錯誤的可能。此進程會導致寫入到可消耗的存儲,因此應儘量減少。

使用 SSD 和傳統存儲的另一個問題是 HDD 不關心磁盤上的數據是否有效。如果文件系統使數據無效,則該數據可保留在磁盤上且沒有任何不利之處。此限制不能與 SSD 同時存在因爲耗損均衡的要求。由於這個原因,Linux 現在支持文件系統將丟棄塊傳遞到 SSD 的功能(自內核版本 2.6.29 開始)。此功能允許 SSD 從耗損均衡進程刪除這些塊,並有助於增加驅動器的耐力。



文件系統

將 Linux 真正與其他操作系統分隔開的是其龐大的文件系統庫。在 Linux 中,您可以發現像第三擴展文件系統(third extended file system,ext3)和第四擴展文件系統(fourth extended file system,ext4)那樣的傳統客戶端文件系統,但是您還將發現先進的分佈式文件系統、集羣文件系統以及並行文件系統。您可以發現新的、高端的基於新理念的文件系統,以及在存儲域中處理新問題。

今天,在尖端文件系統方面,Linux 支持 ZFS 和 Butter FS (BTRFS)。這兩個文件系統互相競爭並共享即寫即拷語義的區別(這些塊從來沒有編寫到位)。此外,這兩個文件系統都支持數據重複刪除、內部數據保護(類 RAID 保護)、數據和元數據校驗和以及其他存儲功能(如快照)。

Linux 也是分佈式文件系統的產地。一個示例就是 Lustre,其是支持成千上萬節點並擴展到千兆兆存儲容量的大規模並行分佈式文件系統。Ceph 提供類似的功能並在去年被引入到 Linux 內核。Linux 中的其他的示例包括 GlusterFS 和通用並行文件系統(General Parallel File System,GPFS)。

您還可以在 Linux 中發現特定的文件系統,包括像新實現日誌結構文件系統(New Implementation Log Structure File System,NiLFS(2))那樣的日誌結構文件系統和像 exofs 那樣基於對象的文件系統。因爲在許多使用模式中 Linux 可發現其自身,所以您還將發現資源約束使用(如嵌入式系統)以及低延時應用程序(如高性能計算(high-performance computing,HPC))的文件系統。嵌入式領域中的文件系統包括 Yet Another Flash File System 第 2 版 (YAFFS2)、Journaling Flash File System 第 2 版 (JFFS2) 以及未分類塊圖像文件系統(Unsorted Block Image File System,UBIFS)。HPC 空間中的文件系統包括並行 NFS(Parallel NFS,pNFS)、Lustre 以及 GPFS。



Linux 存儲的未來

因爲其開放性和大量的開發人員,Linux 是且將繼續是文件系統和通用存儲研究的目標。

存儲的最新改變之一是使用遠程服務以便經濟有效地存儲歸檔數據。今天衆所周知的雲存儲,許多供應商都提供高效和透明的遠程訪問,具有不同服務等級協議(涵蓋像保護和寬帶那樣的功能)的集中存儲。兩個示例包括 Ubuntu One 和 Dropbo。另一個服務被稱爲 SpiderOak,可用於將您的本地用戶目錄備份到雲中,而只需很少的費用。

還有什麼功能可能會出現在 Linux 中?也許是對大扇區大小的支持(超過 512 字節扇區)、精簡配置以便避免保留但不使用的容量(其中已公佈的存儲超過了物理容量)、存儲重複刪除(以便最大化存儲可用性)以及更有效的存儲堆棧以便利用驅動器(例如 SSD)的新速度和效率?無論存儲生態系統如何發展,Linux 永遠是首當其衝的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章