摘要:基于冗余磁盤陣列的IP存儲技術成為當前存儲技術研究的熱點,通過介紹RAID技術,提出了一整套磁盤陣列系統的管理方案。邏輯卷管理的實現和iSCSI協議的實現是重點,通過介紹邏輯卷管理的架構,分析Linux如何通過設備映射機制將物理卷轉換為邏輯卷這一過程,然后分析iSCSI協議,提出實現iSCSI目標端的方案。整個系統運行于Linux環境,采用層次化的模塊結構設計,保證了系統的設備無關性。
關鍵詞:冗余磁盤陣列;邏輯卷管理;設備映射
中圖分類號:TP334文獻標識碼:A文章編號:1009-3044(2008)32-1049-03
The Research of RAID Management Software Based on iSCSI Protocol
ZHOU Jian
(Changshu Institute of Technology School of Computer Science and Engineerting, Changshu 215500, China)
Abstract: The IP storage technology based on iSCSI protocol becomes a hot issue in storage technology research.Introducing RAID technology,the author gives a RAID management software solution.The realization of logical volume management and iSCSI protocol are the key point in the scheme.Through explaining the logical volume in architecture,the author analyses the process of physical volume mapped to logical volume using device mapper mechanism in Linux.Then,the iSCSI protocol is studied.Based on this,an iSCSI target is designed and realized.The system runs in Linux system environment and designs by means of hierarchal module,which assures the least of independent of physical devices.
Key words: RAID;iSCSI;logical Volume Management Device Mapper
1 RAID管理軟件的體系結構
RAID管理軟件是一套對磁盤陣列的使用和配置進行管理的軟件,它采用服務器/瀏覽器方式,服務器端對磁盤陣列進行控制及監視,客戶可以使用瀏覽器與服務器端連接,從而對磁盤陣列進行監視和控制操作(遠程操作)。
RAID管理軟件的設計采用了分層的思想,在每一層上實現不同的功能。按每一層功能的不同,分為三層:
Web層:該層主要是提供給用戶一個友好的操作界面,該層的主要功能是讓用戶通過瀏覽器進行RAID的管理操作;
應用層:該層實現兩個功能,一個是將Web層的操作轉換成系統可以執行的命令,另一個是將命令執行的結果即系統產生的變化反饋給Web層。這兩個功能我們使用兩個模塊來完成,前者是一個命令模塊稱之為CMD_lib,后者是一個守護進程模塊稱之為Daemon。
系統層:該層主要是實現用戶的配置操作,如系統設置、資源管理等。其中存儲資源管理即邏輯卷管理是重要的一部分,簡單的說,是調用操作系統的模塊或系統調用將整個存儲系統中的硬件資源按照用戶的配置進行設置后提供給用戶使用。
使用分層和模塊調用的方式,使得各部分的功能相對獨立,降低了整個系統的耦合性。上層的應用通過對下層的封裝來實現,使得RAID管理軟件有較好的實用性,并且可以方便的實現其跨平臺、多用戶操作功能,這樣使得整個系統的開發、調試和維護也更加容易。整個系統的架構模型如圖1所示。
2 RAID管理軟件的實現
整個系統被劃分為三層,可以劃分為四個模塊:Web模塊、命令解析模塊(Cmd_lib)、系統監控模塊(Daemon)和卷模塊(Volume)。其中Web模塊是個管理接口,提供給用戶管理操作,主要有陣列管理、邏輯卷管理、用戶管理和系統管理等組成。
2.1 Web模塊
該模塊使得用戶可以通過瀏覽器對整個系統的資源進行分配、管理和監視,它是整個RAID系統對外的接口,其應具有以下幾部分功能,其中每一部分功能都是通過調用Cmd_lib的相應命令來實現的,陣列管理包括各級別RAID的 創建、刪除和擴容等,卷管理包括邏輯卷的創建、刪除、擴容和映射,用戶管理包括用戶的添加和修改,系統管理包括設置網絡、配置備份等。
2.2 命令解析模塊
該模塊是用戶Web操作和操作系統之間的一個中間層,負責解釋操作,并調用底層模塊或系統命令來執行用戶進行的操作,完成后返回相應的操作結果。
命令模塊也分塊實現,主要包括陣列管理命令、卷管理命令和系統管理命令。
2.3 系統監控模塊
該模塊銜接了RAID系統和用戶,負責監控整個系統的運行狀態,對于用戶發出的操作指令,將系統信息的變化反饋給用戶。當陣列在無人值守狀態時,除了充當日志功能之外,還會將系統的異常信息通過E-mail的方式通知管理員。
該部分的設計也是通過分塊的方式,使用xml文檔結構保存信息。該部分的總控模塊是receiver,它是一個守護進程,負責監聽Cmd_lib的執行情況,Cmd_lib和Daemon兩者之間通過消息隊列進行通信。
2.4 卷模塊
2.4.1 分區的實現
采用LVM的方式進行存儲管理,它將分散的物理卷數據映射到統一的邏輯卷視圖中,可以更加有效的、更加靈活的對存儲資源進行管理。通過這一層隔離硬件和軟件,將來也能做到更換硬件而對上層的軟件不造成影響,提高了存儲系統的可擴展性和易用性。
LVM的實現采用分層的思想。最底層物理存儲單元是塊設備,這些塊設備被初始化為物理卷,將多個物理卷組成一個卷組,卷組就是一個大的存儲池,可以通過添加或減少物理卷的數量增加或者減少卷組的容量。
PV和LV之間的對應關系是通過PE和LE來實現的。PE是物理卷上所能尋址的最小單元,LE是邏輯卷上所能尋址的最小單元,LVM之所以能實現卷容量的動態管理,實際上就是LE數量的動態改變。在同一個VG中,LE與PE是一一對應的。LE與PE的這種一一對應關系我們稱之為映射,這種關系的建立和維護由底層驅動來提供。當在LVM中改變LV的屬性時,底層驅動相應的更新由LE組成的LV和由PE組成的PV之間的映射關系,以此來實現LV管理的靈活性。
VG實際上是由很多的PE組成,這些PE屬于不同的PV。當創建LV的時候,就從這些PE當中拿出一定數量的PE來組成LV,同時建立LV中LE和這些指定PE之間的映射關系。至于選擇由哪些PE來組成LV,這是由LVM的分配策略來決定的。
LVM屏蔽了底層的物理硬件,提供給用戶一個靈活的對硬件管理的工具,實際上,LVM是提供了在LV和PV之間建立了某種聯系的策略,而這種策略的實現和維護是由Linux內核中的device mapper機制來實現的。
2.4.2 映射的實現
當前存儲的發展趨勢是網絡化,使用網絡可以更加靈活的構建存儲解決方案,因此,RAID系統也通常是接入網絡當作一個存儲子系統來使用,將配置好的RAID通過網絡呈現在用戶面前的這一過程,稱之為映射。
Target端[5]的設計方式很大程度上決定了整個系統的性能,影響整個磁盤陣列系統性能的因素很多,這里采用分層的思想,便于實現和擴展,也有利于提高iSCSI協議的效率。設計分為兩層:底層的前端目標驅動FETD(Front-end Target Driver)和上層的SCSI目標中間層STML(SCSI Target Mid-Level)。
FETD層負責處理與iSCSI協議相關的事務,如接收iSCSI Initiator發送過來的PDU,解析出SCSI的命令描述塊,傳給SCSI Target;接受來自SCSI Target的應答和數據信息,通過網絡傳給iSCSI Initiator等。本文的FETD是針對iSCSI協議的,這一層是可以靈活變換的,在不同的環境下可以改變,例如在FC(光纖通道)中使用的陣列,在這一層實現的就是FC協議。
STML層是個中間層,它與設備無關,具有通用性,該層負責處理來自FETD的SCSI命令,然后轉換為相應的I/O請求操作給存儲子系統,再通過相應的驅動訪問物理設備。或者把存儲子系統的操作結果封裝成PDU,把數據和應答交給FETD處理。
Target端模塊運行在內核空間,因此系統提供了一個vdisk模塊,在系統中增加了一個虛擬磁盤,通過proc文件系統提供給用戶空間一個接口,使得Target端用戶可以直接對Target端存儲資源進行操作。
3 系統測試與分析
測試主要測試磁盤陣列的存儲性能,具體就是在使用中讀寫操作時的數據傳輸率,這可以反映系統的數據吞吐量。為了說明整個系統的性能,在相同條件下測試以下項目:100M以太網環境下客戶端讀寫性能測試和1000M以太網環境下客戶端讀寫性能測試。
測試環境及測試設備配置如下:
1) iSCSI磁盤陣列配置:處理器 Intel 80331,內存 1GB ECC DDR,陣列磁盤 Seagate Barracuda ES 250G,RAID5
2) 服務器配置:IBM system X3650,處理器 Xeon 2.0G,內存 1GB ECC DDR
3) 軟件環境:Windows Server 2003 Enterprise edition R2 Service Pack2,Internet Explore 6.0,Iometer 2006.07.27,Microsoft Initiator 1.06
陣列分別通過百兆和千兆網與測試服務器相連,陣列的管理操作使用Internet Explore 6.0進行,使用Microsoft Initiator 1.06與配置的RAID系統進行連接,用Iometer 2006.07.27進行性能測試。
在Iometer分別使用順序讀、順序寫、隨機讀、隨機寫和混合讀寫五種方式來測試存儲性能,結果如下(其中IOps代表IO速率,單位為個/秒,MBps代表數據傳輸速率,單位為MB/秒):
3.1 請求數據塊大小對系統性能的影響
從圖2中可以看出,隨著請求數據塊的增大,整個系統的IOps越來越低,這是由于系統讀取大塊請求數據時所耗費的時間較長,因此,整體IOps呈下降趨勢。
但從圖3中可以看出,大的數據塊請求可以提高系統的傳輸速率,這是由于進行大塊數據請求時,在RAID算法中比小塊數據請求進行了較少的操作,從而增加了整個系統的吞吐量。
3.2 網絡環境對系統性能的影響
從實驗結果可以看出,1000M網絡環境下的性能遠遠高于100M下的性能。這是由于在100M網絡環境下,網絡的傳輸帶寬成了整個系統的瓶頸,100M的網絡環境其數據傳輸速率理論最大值只有12.5MB/s。因此,使用1000M網絡后,數據傳輸速率大大提高。改善網絡環境能大大提高iSCSI磁盤陣列的性能,這也是iSCSI磁盤陣列隨著10Gb以太網的逐漸成熟有更大的發展前景的原因。
4 方法及系統的展望和改進
在理論研究和工程實現上還需要進一步的改進和完善,根據實際應用的需求,以后將在以下幾個方面努力:
1)進一步研究iSCSI Target端的實現,在整個系統上實現多網口傳輸的綁定或者負載均衡;
2)實現多個陣列系統的級聯。當單個系統的存儲容量不能滿足需求時,可以額外添加系統實現存儲容量的增加,這是當今飛速增長的信息量存儲的要求,也是系統具有更好擴展性的要求。
參考文獻:
[1] IBM Tech report.Trends in Storage Infrastructure,2002,23-34.
[2] 付長冬,舒繼武,沈美明,等.網絡存儲體系結構的發展和研究[J].小型微型計算機系統,2004,25(4):485-489.
[3] Satran J, Sapuntzakis C, Zeidner E,et al.Internet SCSI(iSCSI).http://www.ietf.org/internet-drafts/draft-ietf-ips-iSCSI-20.pdf,2003-03.
[4] 朱立谷,趙春梅,梁哲偉,等.iSCSI協議的研究[J].計算機工程與應用,2002,38(15):43-46.
[5] Gerasimov I, Zhuravlev A, Pershin M.Design and implementation of a block storage multi-protocol converter[C].In Proceeding of the 20th IEEE/11th NASA Goddard Conference on MSST.College Park,Maryland.April 2003.183-188.