基于SAN的網(wǎng)絡(luò )存儲共享系統
隨著(zhù)科學(xué)實(shí)驗的不斷開(kāi)展,信息化的發(fā)展與多媒體網(wǎng)絡(luò )技術(shù)的推廣應用,數據量變得越來(lái)越復雜與繁多。特別是電子商務(wù)的廣泛應用,信息化的政務(wù)以及各行各業(yè)的網(wǎng)絡(luò )應用,數據已成為一種無(wú)形的戰略資產(chǎn),如何利用現有的存儲結構進(jìn)行數據存儲、共享變得越來(lái)越重要。數據存儲從單一的系統轉向網(wǎng)絡(luò )化方面發(fā)展,利用網(wǎng)絡(luò )的海量存儲能力與讀取的方便性,把數據進(jìn)行網(wǎng)絡(luò )存儲共享已經(jīng)成為數據存儲共享的一種趨勢,而傳統的SCSI存儲方案與目前應用廣泛的NAS數據存儲共享方案均有不盡人意之處。因此希望有一種優(yōu)秀的解決方案來(lái)適應當今數據存儲共享的要求。
1 當前數據存儲共享的方案分析
1.1 SCSI的數據存儲共享方案
SCSI存儲結構也就是最早使用的存儲方案,另一種說(shuō)法是DAS存儲,他的體系結構如圖1所示。
其核心思想是存儲介質(zhì)以SCSI協(xié)議連接在服務(wù)器后面,服務(wù)器為數據存儲共享的中轉接點(diǎn)。存儲介質(zhì)通過(guò)SCSI協(xié)議與服務(wù)器相連,SCSI結構采用的連接端口與連接線(xiàn)長(cháng)度都十分有限。因此能提供的存儲容量十分有限,當需要增加存儲容量時(shí)就要增加SCSI的HUB用以進(jìn)行連接,但他們的數據量增加到一定的數量時(shí)會(huì )出現性能瓶頸,因此對于大數據量的存儲使用多個(gè)DAS系統,存在著(zhù)信息孤島現象,與數據的不統一現象,這對于合理的管理數據是十分的不利的。因此,此方案不利于進(jìn)行海量的數據存儲共享。
SCSI方案是以服務(wù)器為中心的數據傳送方式,發(fā)展比較早,結構簡(jiǎn)單,便于實(shí)現與理解,在小規模數據存儲情況下運行較好。但他沒(méi)有獨立的存儲操作系統,數據共享與管理復雜,維護成本高。在SCSI存儲方案中還可能存在有大量相互獨立的、沒(méi)有統一控制的數據,他們會(huì )浪費系統的存儲資源,影響數據的一致性。SCSI存儲方案中接口連接設備數量與距離受限,存儲容量有限,當要進(jìn)行擴容時(shí)不得不使用HUB進(jìn)行配置,而且可配置擴容的能力相當有限,隨著(zhù)共享數據容量的增加,存在因大量數據存取引起延遲的性能瓶頸,更有甚當關(guān)鍵點(diǎn)服務(wù)器故障時(shí)會(huì )造成整個(gè)系統癱瘓,因此基于SCSI存儲方案構建的網(wǎng)絡(luò )數據共享存儲不是一種理想的方案,他不適應對數據的可管理性,海量與共享的要求。

1.2 NAS存儲方案的數據共享方案
NAS存儲是應中目前數據存儲的熱點(diǎn)存儲方案,他的思想是以?xún)惹兜腘AS服務(wù)器為中心的數據存儲,其結構如圖2所示。

在此方案之中希望利用網(wǎng)絡(luò )進(jìn)行以數據為中心的存儲管理,在構成上他從服務(wù)器的后面去掉存儲器,將存儲器連接布置在LAN中。NAS通常被理解為專(zhuān)用數據存儲服務(wù)器,包括存儲設備和內嵌系統軟件。NAS通常被布置在LAN上某個(gè)特定的節點(diǎn)上,允許用戶(hù)在網(wǎng)絡(luò )上存取數據,NAS設備支持NFS與CIFS兩種文件系統,因此兼容了Windows文件系統與Unix文件系統進(jìn)行數據的共享存儲,提供跨平臺文件共享功能。由于NAS可以集中管理和處理網(wǎng)絡(luò )上的所有數據,數據以文件的形式按照網(wǎng)絡(luò )協(xié)議在客戶(hù)機與存儲設備之間流動(dòng),他可以利用NFS實(shí)現異構平臺的客戶(hù)機對數據的共享,集成在存儲設備內的專(zhuān)用文件服務(wù)器提高了文件的I/O速度。
{{分頁(yè)}}
NAS解決SCSI數據存儲方案之中的擴容困難,配置復雜,不提供集中數據管理與跨平臺數據共享的不足。NAS已經(jīng)成為一個(gè)可以自尋址的特殊服務(wù)器,存儲陣列完全從單個(gè)的服務(wù)器中解放出來(lái),那么通過(guò)網(wǎng)絡(luò )取得存儲設備上的數據而不消耗服務(wù)器資源的設想就可以實(shí)現了。
雖然克服了并行SCSI結構的許多缺點(diǎn),但是NAS也存在很明顯的缺點(diǎn),這就是對LAN網(wǎng)絡(luò )帶寬的消耗。在NAS中,磁盤(pán)陣列的數據流也是通過(guò)網(wǎng)絡(luò )流動(dòng)的。使用UDP協(xié)議或者TCP/IP協(xié)議對用戶(hù)數據進(jìn)行打包傳送對一般的LAN或WAN事務(wù)是可以接受的;但是,對磁盤(pán)訪(fǎng)問(wèn)事務(wù)進(jìn)行打包傳送,即使是1 000 Mb/s的以太網(wǎng),當組建了大型網(wǎng)絡(luò )數據共享系統時(shí)也很難提供足夠的帶寬,特別是進(jìn)行多媒體應用與高數據流量的實(shí)時(shí)數據共享應用來(lái)說(shuō)存在著(zhù)幾乎不可容忍的不足;或者當外界與NAS建立連接消耗大量帶寬時(shí)也會(huì )造成網(wǎng)絡(luò )性能急劇下降,因此對于組建海量存儲共享系統來(lái)說(shuō),基于NAS的系統并不是一種理想的系統。
1.3 SAN的數據存儲
SAN是目前正在流行的前沿數據存儲方案,他的核心思想是用存儲區域網(wǎng)進(jìn)行數據的存儲,他的結構特點(diǎn)如圖3所示。

他的主要思路是利用成熟的網(wǎng)絡(luò )技術(shù),把服務(wù)器與存儲分離,使用一個(gè)專(zhuān)用的網(wǎng)絡(luò )進(jìn)行存儲(也稱(chēng)SAN網(wǎng)絡(luò )),服務(wù)器以FC協(xié)議通過(guò)專(zhuān)用的集線(xiàn)器、交換機和網(wǎng)關(guān)建立服務(wù)器(Server)和磁盤(pán)陣列(Storage)之間的直接連接,將LAN上的存儲事務(wù)轉換到主要由存儲設備組成的SAN上。從構成本質(zhì)上看SAN并非一種產(chǎn)品,他是配置網(wǎng)絡(luò )化存儲的一種方法,這種網(wǎng)絡(luò )技術(shù)支持遠距離通信,并允許存儲設備真正與服務(wù)器隔離,使存儲設備不再單獨屬于某個(gè)專(zhuān)用的服務(wù)器,服務(wù)器可以對存儲設備中的任何單個(gè)設備進(jìn)行連接。SAN網(wǎng)絡(luò )中的存儲如磁帶庫與磁盤(pán)陣列等設備可以不通過(guò)服務(wù)器直接進(jìn)行相互之間的協(xié)作。
SAN從結構上解決了NAS數據訪(fǎng)問(wèn)對網(wǎng)絡(luò )帶寬占用的問(wèn)題,如果建立合適的存儲系統數據的訪(fǎng)問(wèn)、備份和恢復不影響LAN的性能,在有大量數據訪(fǎng)問(wèn)時(shí),不會(huì )大幅度降低網(wǎng)絡(luò )性能。在SAN架構中,Server/Storage間的通訊采用SAN,而Client/Server間的通訊采用的是LAN。采用SAN適合Setver/Storage間大容量數據傳送,而Cli-ent/Server間的數據交換,LAN又可以發(fā)揮其靈活的優(yōu)勢。
在SAN存儲方案中:存儲網(wǎng)中物理上分散的存儲設備在邏輯上完全一體,具有邏輯上的統一性;適合對數據進(jìn)行統一管理,降低了管理費用;使用獨立的存儲網(wǎng)絡(luò )后,容易進(jìn)行海量存儲擴充;具有很高的容錯能力,如果出現某個(gè)存儲局部點(diǎn)故障,則可以利用網(wǎng)絡(luò )的可容單點(diǎn)故障進(jìn)行錯誤糾正,提高了系統的可靠性;以光纖網(wǎng)絡(luò )為傳輸介質(zhì),充分利用網(wǎng)絡(luò )帶寬提高了存取速度。具有在線(xiàn)擴充的能力,能滿(mǎn)足網(wǎng)絡(luò )存儲中數據的快速增長(cháng)存儲需要,存儲網(wǎng)絡(luò )還具有很大的靈活性,能滿(mǎn)足在Internet計算大環(huán)境下各種計算變化對存儲的要求。
{{分頁(yè)}}
當然要利用好SAN存儲的優(yōu)秀從邏輯角度上來(lái)說(shuō),一個(gè)SAN的邏輯運行要求有應用程序和管理工具的參與,這些工具能夠對多個(gè)主機系統中的存儲資源進(jìn)行管理。這種邏輯管理體系結構包括從數據管理應用程序到設備管理在內的幾個(gè)層次,以及每一層中的管理控制。
正因為SAN具有海量的擴充能力,不受帶寬的限制,適應網(wǎng)絡(luò )化環(huán)境下數據快速增長(cháng)與多樣性的要求。對于設計一種高效'的網(wǎng)絡(luò )數據存儲共享系統來(lái)說(shuō),基于SAN存儲平臺是一種理想的選擇。
2 基于SAN的存儲共享方案構造
2.1基于SAN的存儲共享的思想
利用網(wǎng)絡(luò )技術(shù),高效的存儲共享數據是一種必然,但網(wǎng)絡(luò )的帶寬是有限的,當大量的數據在網(wǎng)上傳遞時(shí),會(huì )造成網(wǎng)絡(luò )響應時(shí)間過(guò)長(cháng),不能滿(mǎn)足人們的需求。同時(shí),傳統的分散式存儲結構由于分散數據的格式不統一、數據傳輸中的網(wǎng)絡(luò )擁擠等自身的局限性,很難從根本上解決數據共享的問(wèn)題。
存儲局域網(wǎng)SAN(Storage Aiea Network)為此提供了一種解決思路。SAN的主要思想是將LAN上的存儲轉換到主要由存儲設備組成的SAN上,使得數據的訪(fǎng)問(wèn)、備份和恢復不影響LAN的性能,在有大量數據訪(fǎng)問(wèn)時(shí),不會(huì )大幅度降低網(wǎng)絡(luò )性能,同時(shí)具有海量擴充的能力,很適應數據量爆炸性增加的存儲共享形勢。 SAN由存儲設備和聯(lián)網(wǎng)設備組成,可以使磁盤(pán)陣列、磁帶庫等存儲設備以高傳輸速率與多服務(wù)器相連,這樣就為基于Cilent/Serve:架構下的集群技術(shù)的應用奠定了硬件基礎。從軟件層次上看,SAN還需要一個(gè)異構系統數據存儲和共享系統來(lái)管理這個(gè)存儲網(wǎng)絡(luò )。
在軟件角度上看Unix系統具有較強的靈活性強、應用軟件豐富、應用廣泛的優(yōu)勢;大型機系統具有高可靠性、高可用性、高服務(wù)能力(Reliability,Availability,service-ability),以及強大的I/O處理能力等不可替代的優(yōu)點(diǎn),并且長(cháng)期以來(lái)積聚了大量豐富的信息資源。大型機系統通常承擔關(guān)鍵性的大數據量信息處理的工作,而Unix服務(wù)器、Windows服務(wù)器等開(kāi)放系統通常作為服務(wù)器來(lái)提供與客戶(hù)相關(guān)的前端服務(wù)。在數據存儲領(lǐng)域,研究如何如何將他們結合起來(lái),以充分利用兩類(lèi)機器的優(yōu)勢,降低數據存儲成本,并在存儲整合基礎上實(shí)現異構系統的計算資源整合是目前的一大難點(diǎn)與熱點(diǎn)。
所要設計的新系統就是要設計并實(shí)現這樣一個(gè)基于SAN的存儲共享軟件系統,用來(lái)實(shí)現大型機、Unix工作站、Windows NT工作站對磁盤(pán)陣列的共享存儲,并提供一組統一的應用編程接口(APplication programming In-terface,API),供上層應用程序使用。
2.2基于SAN的共享存儲系統總體設計
本系統的核心思想是基于SAN架構,利用大型機的高性能與豐富的軟件支持進(jìn)行應用數據處理,通過(guò)共享的磁盤(pán)陣列與通用系統進(jìn)行數據訪(fǎng)問(wèn)?;赨nix或者Windows平臺,兩者的原理相同??紤]到Unix的豐富資源,在Unix上進(jìn)行本系統的設計。
整個(gè)系統分為大型機端與Unix端2部分,如圖4所示。

2.2.1 大型機端部分
大型機端Server部分負責和Unix端進(jìn)行通信,控制Unix端對共享磁盤(pán)陣列的訪(fǎng)問(wèn),并對各個(gè)Unix端的Serve進(jìn)行管理。大型機端可以運行多個(gè)Server,也可以有多臺大型機,各自運行多個(gè)Server,在Unix端看來(lái),這些Server的功能相同,地位并列,Unix端Server可以任意選擇其中之一與之通信實(shí)現應有的功能,以如何響應時(shí)間最短為選擇標準。
2.2.2 Unix端部分
UnIx端包括Server部分、動(dòng)態(tài)鏈接庫部分及Com-mand群部分。Server部分是運行在通用系統即Unix或Windows上的daemon程序,他負責管理host,Path,media,AP等資源,轉發(fā)動(dòng)態(tài)庫的各種文件操作請求。其中host。指大型機端不同的Server,每個(gè)Server認為是一個(gè)host;media被定義為共享LD。Path被定義為media所映射而成的本地設備文件;AP則是本地進(jìn)程。
Library(動(dòng)態(tài)鏈接庫)是一組函數,其中包括提供給用戶(hù)的一組API和一些I/O操作的中間處理函數。利用該模塊提供的API,Unix端就可以實(shí)現對共享磁盤(pán)陣列的訪(fǎng)問(wèn)。
Command群是提供給用戶(hù)使用的一組命令,可以實(shí)現對系統的管理、控制功能以及對共享文件訪(fǎng)問(wèn)的管理和控制。
2.3基于SAN網(wǎng)絡(luò )存儲共享系統的關(guān)鍵設計
對Unix端要設計如下一些功能進(jìn)程:Unix的Server部分如圖5所示。

父進(jìn)程 也成為總體進(jìn)程,控制整個(gè)系統的其他進(jìn)程,創(chuàng )建其他的進(jìn)程。
監視進(jìn)程他用于對整個(gè)系統的進(jìn)程的監視,以判別他們是否工作正常。
控制進(jìn)程 對磁盤(pán)進(jìn)行管理,管理磁盤(pán)上面的共享數據,對大型機的請求進(jìn)行響應。 通信進(jìn)程 對Unix與大型機進(jìn)行TCP/IP通信。
命令管理進(jìn)程該進(jìn)程主要是提供一組命令,通過(guò)此命令進(jìn)行啟動(dòng)或者停止Unix端的Server命令。激活與大型機的聯(lián)系,激活與磁盤(pán)陣列的聯(lián)系。
{{分頁(yè)}}
2.3.1 Unix端下的Server要完成的功能
共享磁盤(pán)文件資源控制功能;用戶(hù)名的轉換功能;對訪(fǎng)問(wèn)共享文件的AP的監視功能;共享磁盤(pán)的構成管理功能;與大型機端Server通信的功能;共享文件的訪(fǎng)問(wèn)閉塞功能;處理管理命令的功能。
2.3.2 Unix端的Library(動(dòng)態(tài)鏈接庫)設計
Library實(shí)際上是一個(gè)函數庫,是Unix部分主體功能的實(shí)現者。其中包括面向用戶(hù)使用戶(hù)能夠用來(lái)訪(fǎng)問(wèn)大型機管理下的共享盤(pán)的API,以及對用戶(hù)不公開(kāi)的其他處理函數。Library被設計成如圖6所示的功能模塊。

應用程序接口(API)部分 該模塊是面向用戶(hù)的函數接口,他們就像一個(gè)個(gè)普通的C函數一樣,用戶(hù)可以在自己編寫(xiě)的C/C++程序中調用這些的函數來(lái)實(shí)現共享磁盤(pán)文件訪(fǎng)問(wèn)和管理的功能。
Fprc部分 該模塊主要完成與Unix端Server通信獲取文件信息,文件打開(kāi)、關(guān)閉等,及其他前期準備和后續處理工作(構造/銷(xiāo)毀各種文件訪(fǎng)問(wèn)控制表,分配/釋放內存空間等)。
Fseq部分 此模塊是各種文件訪(fǎng)問(wèn)函數的核心部分,他是對大型機文件的數據進(jìn)行訪(fǎng)問(wèn)的主要處理部分。 虛擬訪(fǎng)問(wèn)接口(Virtual Access Interface,VAI)部分此模塊位于Library的最底層,所有的磁盤(pán)訪(fǎng)問(wèn)任務(wù)最終都要通過(guò)VAI來(lái)實(shí)現,他可以對大型機的共享文件進(jìn)行存取訪(fǎng)問(wèn)。
2.4基于SAN網(wǎng)絡(luò )存儲共享系統的工作原理
基于SAN的數據存儲共享系統工作時(shí),大型機端運行的文件共享Server是運行在大型機上的服務(wù)程序,運行的操作系統是大型機上的專(zhuān)用操作系統。他負責與UnixServer連接并接收文件訪(fǎng)問(wèn)請求,再利用大型機的API進(jìn)行文件操作(非數據訪(fǎng)問(wèn)),之后把文件信息通過(guò)TCP/IP返回給Unix端Server,最終通過(guò)Unix端的動(dòng)態(tài)庫函數進(jìn)行處理。從本質(zhì)上看Unix端Server相對于本地的AP而言是一個(gè)服務(wù)程序,而相對于大型機端Server而言,他又相當于一個(gè)客戶(hù)端,所以有時(shí)也將他叫作中間Server。
大型機端Server與Unix端Server進(jìn)行通信時(shí),使用的是Socket連接,通過(guò)TCP/IP網(wǎng)絡(luò )進(jìn)行信息的交互。而在訪(fǎng)問(wèn)磁盤(pán)數據時(shí),無(wú)論是Unix端還是大型機端,都是通過(guò)SAN直接訪(fǎng)問(wèn)磁盤(pán)。另外,大型機端Server還負責管理各Unix端Server。
對于Unix等通用系統而言,雖然disk array與普通本地硬盤(pán)不同,但一旦連接到系統則對應用程序而言都是disk設備,訪(fǎng)問(wèn)方式完全一樣。在磁盤(pán)陣列上存放的是可共享的數據,他的格式是大型機操作系統的文件系統。倘若Unix直接訪(fǎng)問(wèn)這些數據,由于文件系統的不同,所讀出的數據必然是亂碼,所寫(xiě)入的,也將不是正確的大型機文件系統的文件格式。因此,當利用通用系統進(jìn)行文件讀寫(xiě)時(shí),必須首先通過(guò)動(dòng)態(tài)庫提供的對大型機格式的文件的訪(fǎng)問(wèn)函數,從大型機端Server取得文件信息并獲得文件控制權,這些請求全部經(jīng)消息隊列發(fā)送到通用機端Server,再由通用機端Server將返回結果傳遞給動(dòng)態(tài)庫讀寫(xiě)函數,直接打開(kāi)物理盤(pán),進(jìn)行文件的讀寫(xiě)。
從大型機端的返回的文件信息,包括文件的屬性及地址分布、需要訪(fǎng)問(wèn)長(cháng)度等。通用機端得到這些信息后,將不再需要大型機的介入而直接根據這些文件信息進(jìn)行訪(fǎng)問(wèn)。這種訪(fǎng)問(wèn)是用被稱(chēng)為raw disk access的方式進(jìn)行的。raw disk access是將disk看成連續Sector,以byte offset方式訪(fǎng)問(wèn)disk的數據。這種訪(fǎng)問(wèn)方式直接使用disk driv-er進(jìn)行I/O,由于OS沒(méi)有參與讀寫(xiě)過(guò)程,因此效率較高。另外,由于磁盤(pán)陣列上的文件系統不能被通用Server識別,也只能用raw disk的方式進(jìn)行數據訪(fǎng)問(wèn)。
磁盤(pán)陣列上的各個(gè)邏輯盤(pán)將會(huì )通過(guò)光纖網(wǎng)絡(luò )映射為Unix系統的硬盤(pán)設備。邏輯盤(pán)Lgicai Disk(LD)是diskarray的概念,他可以由多個(gè)物理disk(各物理disk的一部分或全部)按照一定的RAID方式構成,可以進(jìn)行并行訪(fǎng)問(wèn)或存儲冗余數據。LD可以叫volume,或media,在OS看來(lái)這就是一個(gè)raw disk,與普通物理硬盤(pán)一樣。因為Unix上的設備都被看作特殊文件,訪(fǎng)問(wèn)設備類(lèi)似于文件訪(fǎng)問(wèn),設備驅動(dòng)程序都提供打開(kāi)和讀寫(xiě)接口來(lái)操作真正的硬件,另外還提供I/O control接口來(lái)進(jìn)行特殊的設備控制或從設備獲取信息。與disk相關(guān)的special file都在/dev/dsk或/dev/rdsk目錄下,dsk目錄與rdsk目錄的差別是打開(kāi)rdsk disk設備后,read/write/ioctl等調用將直接發(fā)送給硬件,而dsk目錄的設備則還經(jīng)過(guò)OS的中間處理。
通過(guò)此過(guò)程,基于SAN的數據存儲共享系統能很好地進(jìn)行高效的數據存儲共享,能夠提供跨平臺的文件共享服務(wù),利用SAN的海量擴充潛力,能提供不斷增長(cháng)的數據存儲服務(wù)。
3 結 語(yǔ)
目前已經(jīng)在實(shí)驗室建成以?xún)膳_Unix端,一臺HP服務(wù)器模擬的大型機,一個(gè)小型光纖網(wǎng)建立的基于SAN的網(wǎng)絡(luò )數據存儲共享存儲系統。通過(guò)模擬運行數據海量增長(cháng)情況與數據的跨平臺共享表明本系統具有:實(shí)現了大型機與Windows及Unix平臺對磁盤(pán)陣列的共享訪(fǎng)問(wèn),跨平臺性好、接口簡(jiǎn)單、擴容簡(jiǎn)單??朔藗鹘y的SCSI存儲方案中的擴容有限,數據管理復雜,不直接支持跨平臺的數據共享,同時(shí)也克服了NAS存儲方案中數據仿問(wèn)量增大時(shí)造成整個(gè)網(wǎng)絡(luò )性能急劇惡化的不足,能很好地適應當前網(wǎng)絡(luò )成熟,數據量急劇增長(cháng)時(shí)用戶(hù)對數據存儲共享的需要,是一種很有應用價(jià)值的先進(jìn)數據存儲共享解決方案。
c++相關(guān)文章:c++教程
交換機相關(guān)文章:交換機工作原理
存儲器相關(guān)文章:存儲器原理
評論