作為存儲協議出現的以太網已經在 Linux 中完全實現,其說明了這些方法的力量和靈活性。此外,Linux中完全支持 10 千兆位以太網(10-gigabit Ethernet,10GbE),并允許構造高性能 SAN.您還可以發現類似 ATA over Ethernet (ATAoE) 的協議,其通過無所不在的以太網協議擴展 ATA 協議。
雖然原始的 SMB 實現是專有的,但是它被逆向設計以便在 Linux 中受到支持。后來的 SMB 修訂版被公開記錄以便允許在 Linux 中進行更簡單的開發。
Linux 繼續發展針對 NFS 的各種增強和擴展。NFS 現在是一個狀態協議并包括對數據和元數據分離的優化以及數據訪問并行。通過參考資料 中的鏈接可以閱讀有關 NFS 發展的更多信息。正如基于以太網的 SAN,Linux 中對 10GbE 的支持允許高性能的 NAS 庫。
其他存儲架構
不是所有的存儲架構都非常適合 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 依賴于另一個名為設備映射器 的存儲組件,其提供(在其他功能中)多路徑功能。例如,在 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 結構
對SSD的增加支持
SSD 的引入正在以一些方式改變著存儲的生態系統。這些磁盤刪除了在旋轉磁盤中的一些比較大的延時,因此其提供了一種維護與 CPU 之間的數據流的方式。但是 SSD 不同于硬盤驅動器(Hard Disk Drive,HDD),因為它們是可以消耗掉的。SSD 內存儲的編寫次數是有限的(取決于技術);因此,在編寫數據時要盡可能的有效是非常重要的。更糟的是,SSD 必須內部切換數據以便盡可能減低在稱為垃圾收集 或耗損均衡 的進程中引入錯誤的可能。此進程會導致寫入到可消耗的存儲,因此應盡量減少。
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 永遠是首當其沖的。
關于作者
M. Tim Jones 是一位嵌入式固件架構師,他是 Artificial Intelligence: A Systems Approach、GNU/Linux Application Programming(現在是第二版)、AI Application Programming(第二版)以及 BSD Sockets Programming from a Multilanguage Perspe等書的作者。他的工程背景非常廣泛,從同步宇宙飛船的內核開發到嵌入式架構設計,再到網絡協議的開發。Tim 在位于科羅拉多州 Longmont 的 Intel 工作。