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

存儲架構

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

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

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

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

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

圖2說明了這些模型,側重于文件系統和存儲的位置。DAS模型包含到平臺的直接存儲附件,代表了絕大多數的存儲使用。SAN將存儲從平臺中分離出來并使其可通過塊存儲協議中的一個進行訪問。最后,NAS提供與SAN類似的架構,但是在文件級上進行操作。

圖2. 主要存儲架構

直接附加的存儲

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 現在是一個狀態協議并包括對數據和元數據分離的優化以及數據訪問并行。通過參考資料 中的鏈接可以閱讀有關 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 創建了一些其他存儲功能,例如卷的只讀和讀寫快照、跨卷的數據分段以便提高性能(獨立磁盤的冗余陣列 [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 結構

對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 永遠是首當其沖的。

關于作者

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 工作。

未經允許不得轉載:存儲在線-存儲專業媒體 » 存儲領域主力:Linux存儲生態系統
分享到

jianglily

相關推薦

精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走