天天看點

Linux and storage environment

一種靈活存儲的開放平台

Linux 就像是檔案系統的瑞士×××,它還為桌面系統和伺服器提供廣泛的存儲技術。除了檔案系統,Linux 結合了世界級的 NAS 和 SAN 技術、資料保護、存儲管理、雲支援以及固态存儲。了解有關 Linux 存儲生态系統的更多資訊以及為何它能成為伺服器市場霸主。

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

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

圖 1. 本文中探索的存儲堆棧
Linux and storage environment

存儲架構

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

  • 直接附加存儲(Direct-attached storage,DAS)
  • 存儲區域網絡(Storage area networks,SAN)
  • 網絡附加存儲(Network-attached storage,NAS)

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

圖 2. 主要存儲架構

Linux and storage environment

其他存儲媒體;雖然本文主要側重于磁盤存儲,但是很難忽略 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 結構
Linux and storage environment

對 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 是且将繼續是檔案系統和通用存儲研究的目标。

繼續閱讀