Linux 就像是文件系統(tǒng)的瑞士軍刀,它還為桌面系統(tǒng)和服務(wù)器提供廣泛的存儲(chǔ)技術(shù)。除了文件系統(tǒng),Linux 結(jié)合了世界級(jí)的 NAS 和 SAN 技術(shù)、數(shù)據(jù)保護(hù)、存儲(chǔ)管理、云支持以及固態(tài)存儲(chǔ)。了解有關(guān) Linux 存儲(chǔ)生態(tài)系統(tǒng)的更多信息以及為何它能成為服務(wù)器市場(chǎng)霸主。
Linux 意味著許多事情,它的力量在于它能夠靈活地支持截然不同的使用模式。但是 Linux 最重要的優(yōu)勢(shì)之一是作為存儲(chǔ)領(lǐng)域的主力。關(guān)于 Linux 和存儲(chǔ)通常讓人想到直接附加存儲(chǔ)或最新的文件系統(tǒng),但是關(guān)于存儲(chǔ)和 Linux 還有比所看到的多得多的東西。Linux 中的元素不僅穩(wěn)定而且高端。
本文探討了使 Linux 處于存儲(chǔ)領(lǐng)域中心的各種存儲(chǔ)技術(shù)。讓我們從底部開始 — 即存儲(chǔ)架構(gòu) —,然后逐步將堆棧發(fā)展為功能、文件系統(tǒng)和待執(zhí)行計(jì)劃(請(qǐng)參考圖 1)。
圖 1. 本文中探索的存儲(chǔ)堆棧
存儲(chǔ)架構(gòu)
存儲(chǔ)如何附加到平臺(tái)是整體存儲(chǔ)架構(gòu)的關(guān)鍵。三個(gè)常見的架構(gòu)涵蓋了絕大多數(shù)模型:
○直接附加存儲(chǔ)(Direct-attached storage,DAS)
○存儲(chǔ)區(qū)域網(wǎng)絡(luò)(Storage area networks,SAN)
○網(wǎng)絡(luò)附加存儲(chǔ)(Network-attached storage,NAS)
當(dāng)然,Linux 支持所有三種模型并通過與這些模型一起發(fā)生的變更而發(fā)展。
圖 2 說明了這些模型,側(cè)重于文件系統(tǒng)和存儲(chǔ)的位置。DAS 模型包含到平臺(tái)的直接存儲(chǔ)附件,代表了絕大多數(shù)的存儲(chǔ)使用。SAN 將存儲(chǔ)從平臺(tái)中分離出來并使其可通過塊存儲(chǔ)協(xié)議中的一個(gè)進(jìn)行訪問。最后,NAS 提供與 SAN 類似的架構(gòu),但是在文件級(jí)上進(jìn)行操作。
圖 2. 主要存儲(chǔ)架構(gòu)
直接附加的存儲(chǔ)
Linux 支持種類繁多的 DAS 界面,包括像并行高級(jí)技術(shù)附件(Advanced Technology Attachment,ATA)的舊標(biāo)準(zhǔn) — 電子集成驅(qū)動(dòng)器 [IDE](Integrated Drive Electronics [IDE])/ATA — 并行 SCSI 和光纖通道 (Fibre Channel) 以及新的存儲(chǔ)界面,例如串行連接的 SCSI(Serial Attached SCSI,SAS)、串行 ATA(Serial ATA,SATA)和外部 SATA(external SATA,eSATA)。您還將發(fā)現(xiàn)高級(jí)存儲(chǔ)技術(shù),例如 USB3(可擴(kuò)展的主機(jī)控制器界面,Extensible Host Controller Interface [xHCI])和 Firewire (Institute of Electrical and Electronics Engineers 1394)。
存儲(chǔ)區(qū)域網(wǎng)絡(luò)
SAN 提供塊級(jí)存儲(chǔ)合并,以便在一些服務(wù)器中共享它。存儲(chǔ)對(duì)服務(wù)器顯示為是本地的,其中端點(diǎn)存儲(chǔ)設(shè)備可以為客戶端設(shè)備實(shí)現(xiàn)附加服務(wù)(例如備份和復(fù)制)。
SAN 的協(xié)議和界面是廣泛和多樣的。您可以在 Linux 中發(fā)現(xiàn)典型的 SAN 協(xié)議,例如光纖通道以及其通過 IP 的擴(kuò)展 (iFCP)。還存在更新的協(xié)議,例如 SAS、以太網(wǎng)光纖通道(Fibre Channel over Ethernet,F(xiàn)CoE)以及 Internet SCSI (iSCSI),更多域特定協(xié)議,例如適用于遠(yuǎn)程直接內(nèi)存訪問 (RDMA-iSER) 和 SCSI RDMA 協(xié)議(SCSI RDMA Protocol,SRP),其通過 Infiniband 的 RDMA 擴(kuò)展 SCSI。
作為存儲(chǔ)協(xié)議出現(xiàn)的以太網(wǎng)已經(jīng)在 Linux 中完全實(shí)現(xiàn),其說明了這些方法的力量和靈活性。此外,Linux 中完全支持 10 千兆位以太網(wǎng)(10-gigabit Ethernet,10GbE),并允許構(gòu)造高性能 SAN。您還可以發(fā)現(xiàn)類似 ATA over Ethernet (ATAoE) 的協(xié)議,其通過無所不在的以太網(wǎng)協(xié)議擴(kuò)展 ATA 協(xié)議。
網(wǎng)絡(luò)附加存儲(chǔ)
最后但同樣重要的是 NAS。NAS 是通過網(wǎng)絡(luò)的存儲(chǔ)合并,以便不同類型客戶端在文件級(jí)別進(jìn)行訪問。Linux 中完全支持的兩種最流行協(xié)議是網(wǎng)絡(luò)文件系統(tǒng)(Network File System,NFS)和服務(wù)器消息塊/通用互聯(lián)網(wǎng)文件系統(tǒng)(Server Message Block/Common Internet File System,SMB/CIFS)。
雖然原始的 SMB 實(shí)現(xiàn)是專有的,但是它被逆向設(shè)計(jì)以便在 Linux 中受到支持。后來的 SMB 修訂版被公開記錄以便允許在 Linux 中進(jìn)行更簡(jiǎn)單的開發(fā)。
Linux 繼續(xù)發(fā)展針對(duì) NFS 的各種增強(qiáng)和擴(kuò)展。NFS 現(xiàn)在是一個(gè)狀態(tài)協(xié)議并包括對(duì)數(shù)據(jù)和元數(shù)據(jù)分離的優(yōu)化以及數(shù)據(jù)訪問并行。通過參考資料 中的鏈接可以閱讀有關(guān) NFS 發(fā)展的更多信息。正如基于以太網(wǎng)的 SAN,Linux 中對(duì) 10GbE 的支持允許高性能的 NAS 庫。
其他存儲(chǔ)架構(gòu)
不是所有的存儲(chǔ)架構(gòu)都非常適合 DAS、SAN 和 NAS 存儲(chǔ)器。因?yàn)?Linux 是開放的,所以更容易在其內(nèi)部開發(fā)新的技術(shù),這就是為什么您可以在 Linux 中發(fā)現(xiàn)最新尖端技術(shù)的原因。
一個(gè)值得一提的存儲(chǔ)架構(gòu)是對(duì)象存儲(chǔ)架構(gòu),盡管不是新功能,但是它很有趣。對(duì)象存儲(chǔ)架構(gòu)將文件從其元數(shù)據(jù)中分離出來并獨(dú)立存儲(chǔ)它們(在其各自的數(shù)據(jù)和元數(shù)據(jù)服務(wù)器上)。此分離提供了一些優(yōu)勢(shì),例如最大程度降低了元數(shù)據(jù)的瓶頸(因?yàn)榕c此服務(wù)器交互只需要定位并打開文件)。還可以通過在多個(gè)數(shù)據(jù)服務(wù)器上分段數(shù)據(jù)進(jìn)行并行訪問來增強(qiáng)性能。對(duì)象存儲(chǔ)在 Linux 內(nèi)以各種方式來實(shí)現(xiàn),包括對(duì)對(duì)象存儲(chǔ)設(shè)備(Object Storage Device,OSD)規(guī)范的支持,以及在 Linux clUSTER (Lustre) 和擴(kuò)展對(duì)象文件系統(tǒng)(Extended Object File System,exofs)內(nèi)以不同方式實(shí)現(xiàn)。
存在名為內(nèi)容尋址存儲(chǔ)(content-addressable storage,CAS)的類似技術(shù),其使用數(shù)據(jù)散列值以便標(biāo)識(shí)其名稱和地址。此技術(shù)還稱為固定內(nèi)容存儲(chǔ)(fixed-content storage,F(xiàn)CS),是非常有用的,因?yàn)槠淙菀鬃R(shí)別重復(fù)數(shù)據(jù):該散列之(如果足夠強(qiáng))將是相同的且允許簡(jiǎn)單的重復(fù)數(shù)據(jù)刪除。Venti 架構(gòu)支持這種方法并存在于 Linux 內(nèi)(除了貝爾實(shí)驗(yàn)室的 Plan 9 版本之外)。
#p#副標(biāo)題#e#
存儲(chǔ)服務(wù):邏輯卷管理
雖然存儲(chǔ)虛擬化曾經(jīng)是高端存儲(chǔ)系統(tǒng)的獨(dú)特功能,但是現(xiàn)在它是 Linux 的標(biāo)準(zhǔn)功能。Linux 中可用的一個(gè)最重要的服務(wù)是邏輯卷管理器(Logical Volume Manager,LVM)。LVM 是一個(gè)薄層,其位于基礎(chǔ)存儲(chǔ)架構(gòu)中可用的物理存儲(chǔ)之上(附帶用戶空間工具),并將該存儲(chǔ)提取到一個(gè)或多個(gè)管理更簡(jiǎn)單的邏輯卷中。例如,在物理磁盤不能調(diào)整大小時(shí),可以調(diào)整邏輯卷大小以便從其中添加或刪除空間。
通過將物理設(shè)備提取到邏輯設(shè)備的能力,LVM 創(chuàng)建了一些其他存儲(chǔ)功能,例如卷的只讀和讀寫快照、跨卷的數(shù)據(jù)分段以便提高性能(獨(dú)立磁盤的冗余陣列 [RAID]-0)、跨卷 (RAID-1) 的數(shù)據(jù)鏡像以及在物理設(shè)備之間的卷遷移(甚至聯(lián)機(jī)時(shí))。
對(duì)于鏡像之外的數(shù)據(jù)保護(hù)來說,Linux 包括 md(其代表多個(gè)磁盤)并提供一系列豐富的 RAID 功能。此元素實(shí)現(xiàn)了軟件 RAID 功能,支持 RAID-4(通過校驗(yàn)塊分段數(shù)據(jù))、RAID-5(通過分布式校驗(yàn)塊分段數(shù)據(jù))、RAID-6(通過分布式和雙冗余校驗(yàn)塊分段數(shù)據(jù))以及 RAID-10(分段并鏡像數(shù)據(jù))。
LVM 依賴于另一個(gè)名為設(shè)備映射器 的存儲(chǔ)組件,其提供(在其他功能中)多路徑功能。例如,在 SAN 環(huán)境中,通常有多個(gè)到 SAN 構(gòu)造的存儲(chǔ)界面。多路徑是一種提供保護(hù)以避免給定路徑故障的功能,確保只要存在路徑來與端點(diǎn)通信,就仍然可以使用存儲(chǔ)。
存儲(chǔ)功能
在過去幾年中,項(xiàng)存儲(chǔ)堆棧添加了兩個(gè)相對(duì)簡(jiǎn)單的功能,說明了存儲(chǔ)生態(tài)系統(tǒng)的發(fā)展:
○數(shù)據(jù)完整性
○支持固態(tài)磁盤(solid-state disks,SSDs)
數(shù)據(jù)完整性
第一個(gè)變更處理在企業(yè)存儲(chǔ)設(shè)置中使用商用驅(qū)動(dòng)器。雖然企業(yè)級(jí)驅(qū)動(dòng)器(如 SAS 驅(qū)動(dòng)器)是可靠的,但是 SATA 驅(qū)動(dòng)器是以不同要求以及成本作為主要因素而創(chuàng)建的。由于這個(gè)原因,SATA 驅(qū)動(dòng)器可能遭遇稱為無提示數(shù)據(jù)損壞 的問題,即在從磁盤讀取數(shù)據(jù)時(shí)可能引入錯(cuò)誤且無法檢測(cè)到這些錯(cuò)誤。要在企業(yè)設(shè)置中解決此問題并支持 SATA 驅(qū)動(dòng)器,需將數(shù)據(jù)完整性代碼添加到磁盤上的塊中(其中磁盤使用 520 字節(jié)扇區(qū),而不是傳統(tǒng)的 512 字節(jié)塊)。此外,驅(qū)動(dòng)器自身可以驗(yàn)證正在寫入的數(shù)據(jù),以便其完整性代碼與數(shù)據(jù)匹配。用這種方式,可以在錯(cuò)誤被寫入磁盤時(shí)捕獲這些錯(cuò)誤,而不是以后在無法對(duì)這些錯(cuò)誤進(jìn)行任何操作時(shí)檢測(cè)到它們。
這種機(jī)制被稱為數(shù)據(jù)完整性字段(Data Integrity Field,DIF),如圖 3 所示,其代表一個(gè)在數(shù)據(jù)塊上包括循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check,CRC)的 8 字節(jié)尾部、一個(gè)參考標(biāo)記(通常是邏輯塊地址(Logical Block Addressing [LBA])的一部分)以及一個(gè)應(yīng)用程序定義的應(yīng)用程序標(biāo)記。參考標(biāo)記對(duì)于捕獲對(duì)不正確塊的錯(cuò)誤寫入非常有用,其中應(yīng)用程序標(biāo)記可用于捕獲軟件堆棧中的其他錯(cuò)誤。例如,如果寫入 PDF 文檔,那么應(yīng)用程序標(biāo)記可設(shè)置為用來指示特殊 PDF 標(biāo)記的值。在讀取 PDF 時(shí),可以檢查到每一個(gè)塊的應(yīng)用程序標(biāo)記,以便確保所有標(biāo)記都指定該 PDF 標(biāo)記。自從內(nèi)核版本 2.6.27 以來,Linux 內(nèi)支持 DIF。
圖 3. 適用于 512 字節(jié)扇區(qū)的 DIF 結(jié)構(gòu)
對(duì) SSD 的增加支持
SSD 的引入正在以一些方式改變著存儲(chǔ)的生態(tài)系統(tǒng)。這些磁盤刪除了在旋轉(zhuǎn)磁盤中的一些比較大的延時(shí),因此其提供了一種維護(hù)與 CPU 之間的數(shù)據(jù)流的方式。但是 SSD 不同于硬盤驅(qū)動(dòng)器(Hard Disk Drive,HDD),因?yàn)樗鼈兪强梢韵牡舻?。SSD 內(nèi)存儲(chǔ)的編寫次數(shù)是有限的(取決于技術(shù));因此,在編寫數(shù)據(jù)時(shí)要盡可能的有效是非常重要的。更糟的是,SSD 必須內(nèi)部切換數(shù)據(jù)以便盡可能減低在稱為垃圾收集 或耗損均衡 的進(jìn)程中引入錯(cuò)誤的可能。此進(jìn)程會(huì)導(dǎo)致寫入到可消耗的存儲(chǔ),因此應(yīng)盡量減少。
使用 SSD 和傳統(tǒng)存儲(chǔ)的另一個(gè)問題是 HDD 不關(guān)心磁盤上的數(shù)據(jù)是否有效。如果文件系統(tǒng)使數(shù)據(jù)無效,則該數(shù)據(jù)可保留在磁盤上且沒有任何不利之處。此限制不能與 SSD 同時(shí)存在因?yàn)楹膿p均衡的要求。由于這個(gè)原因,Linux 現(xiàn)在支持文件系統(tǒng)將丟棄塊傳遞到 SSD 的功能(自內(nèi)核版本 2.6.29 開始)。此功能允許 SSD 從耗損均衡進(jìn)程刪除這些塊,并有助于增加驅(qū)動(dòng)器的耐力。
文件系統(tǒng)
將 Linux 真正與其他操作系統(tǒng)分隔開的是其龐大的文件系統(tǒng)庫。在 Linux 中,您可以發(fā)現(xiàn)像第三擴(kuò)展文件系統(tǒng)(third extended file system,ext3)和第四擴(kuò)展文件系統(tǒng)(fourth extended file system,ext4)那樣的傳統(tǒng)客戶端文件系統(tǒng),但是您還將發(fā)現(xiàn)先進(jìn)的分布式文件系統(tǒng)、集群文件系統(tǒng)以及并行文件系統(tǒng)。您可以發(fā)現(xiàn)新的、高端的基于新理念的文件系統(tǒng),以及在存儲(chǔ)域中處理新問題。
今天,在尖端文件系統(tǒng)方面,Linux 支持 ZFS 和 Butter FS (BTRFS)。這兩個(gè)文件系統(tǒng)互相競(jìng)爭(zhēng)并共享即寫即拷語義的區(qū)別(這些塊從來沒有編寫到位)。此外,這兩個(gè)文件系統(tǒng)都支持?jǐn)?shù)據(jù)重復(fù)刪除、內(nèi)部數(shù)據(jù)保護(hù)(類 RAID 保護(hù))、數(shù)據(jù)和元數(shù)據(jù)校驗(yàn)和以及其他存儲(chǔ)功能(如快照)。
Linux 也是分布式文件系統(tǒng)的產(chǎn)地。一個(gè)示例就是 Lustre,其是支持成千上萬節(jié)點(diǎn)并擴(kuò)展到千兆兆存儲(chǔ)容量的大規(guī)模并行分布式文件系統(tǒng)。Ceph 提供類似的功能并在去年被引入到 Linux 內(nèi)核。Linux 中的其他的示例包括 GlusterFS 和通用并行文件系統(tǒng)(General Parallel File System,GPFS)。
您還可以在 Linux 中發(fā)現(xiàn)特定的文件系統(tǒng),包括像新實(shí)現(xiàn)日志結(jié)構(gòu)文件系統(tǒng)(New Implementation Log Structure File System,NiLFS(2))那樣的日志結(jié)構(gòu)文件系統(tǒng)和像 exofs 那樣基于對(duì)象的文件系統(tǒng)。因?yàn)樵谠S多使用模式中 Linux 可發(fā)現(xiàn)其自身,所以您還將發(fā)現(xiàn)資源約束使用(如嵌入式系統(tǒng))以及低延時(shí)應(yīng)用程序(如高性能計(jì)算(high-performance computing,HPC))的文件系統(tǒng)。嵌入式領(lǐng)域中的文件系統(tǒng)包括 Yet Another Flash File System 第 2 版 (YAFFS2)、Journaling Flash File System 第 2 版 (JFFS2) 以及未分類塊圖像文件系統(tǒng)(Unsorted Block Image File System,UBIFS)。HPC 空間中的文件系統(tǒng)包括并行 NFS(Parallel NFS,pNFS)、Lustre 以及 GPFS。
Linux 存儲(chǔ)的未來
因?yàn)槠溟_放性和大量的開發(fā)人員,Linux 是且將繼續(xù)是文件系統(tǒng)和通用存儲(chǔ)研究的目標(biāo)。
存儲(chǔ)的最新改變之一是使用遠(yuǎn)程服務(wù)以便經(jīng)濟(jì)有效地存儲(chǔ)歸檔數(shù)據(jù)。今天眾所周知的云存儲(chǔ),許多供應(yīng)商都提供高效和透明的遠(yuǎn)程訪問,具有不同服務(wù)等級(jí)協(xié)議(涵蓋像保護(hù)和寬帶那樣的功能)的集中存儲(chǔ)。兩個(gè)示例包括 Ubuntu One 和 Dropbo。另一個(gè)服務(wù)被稱為 SpiderOak,可用于將您的本地用戶目錄備份到云中,而只需很少的費(fèi)用。
還有什么功能可能會(huì)出現(xiàn)在 Linux 中?也許是對(duì)大扇區(qū)大小的支持(超過 512 字節(jié)扇區(qū))、精簡(jiǎn)配置以便避免保留但不使用的容量(其中已公布的存儲(chǔ)超過了物理容量)、存儲(chǔ)重復(fù)刪除(以便最大化存儲(chǔ)可用性)以及更有效的存儲(chǔ)堆棧以便利用驅(qū)動(dòng)器(例如 SSD)的新速度和效率?無論存儲(chǔ)生態(tài)系統(tǒng)如何發(fā)展,Linux 永遠(yuǎn)是首當(dāng)其沖的。
原文:http://www.ibm.com/developerworks/cn/linux/l-linux-storage/index.html?ca=drs-