基于SAN的網(wǎng)絡(luò)存儲共享系統(tǒng)
隨著科學(xué)實驗的不斷開展,信息化的發(fā)展與多媒體網(wǎng)絡(luò)技術(shù)的推廣應(yīng)用,數(shù)據(jù)量變得越來越復(fù)雜與繁多。特別是電子商務(wù)的廣泛應(yīng)用,信息化的政務(wù)以及各行各業(yè)的網(wǎng)絡(luò)應(yīng)用,數(shù)據(jù)已成為一種無形的戰(zhàn)略資產(chǎn),如何利用現(xiàn)有的存儲結(jié)構(gòu)進行數(shù)據(jù)存儲、共享變得越來越重要。數(shù)據(jù)存儲從單一的系統(tǒng)轉(zhuǎn)向網(wǎng)絡(luò)化方面發(fā)展,利用網(wǎng)絡(luò)的海量存儲能力與讀取的方便性,把數(shù)據(jù)進行網(wǎng)絡(luò)存儲共享已經(jīng)成為數(shù)據(jù)存儲共享的一種趨勢,而傳統(tǒng)的SCSI存儲方案與目前應(yīng)用廣泛的NAS數(shù)據(jù)存儲共享方案均有不盡人意之處。因此希望有一種優(yōu)秀的解決方案來適應(yīng)當(dāng)今數(shù)據(jù)存儲共享的要求。
1 當(dāng)前數(shù)據(jù)存儲共享的方案分析
1.1 SCSI的數(shù)據(jù)存儲共享方案
SCSI存儲結(jié)構(gòu)也就是最早使用的存儲方案,另一種說法是DAS存儲,他的體系結(jié)構(gòu)如圖1所示。
其核心思想是存儲介質(zhì)以SCSI協(xié)議連接在服務(wù)器后面,服務(wù)器為數(shù)據(jù)存儲共享的中轉(zhuǎn)接點。存儲介質(zhì)通過SCSI協(xié)議與服務(wù)器相連,SCSI結(jié)構(gòu)采用的連接端口與連接線長度都十分有限。因此能提供的存儲容量十分有限,當(dāng)需要增加存儲容量時就要增加SCSI的HUB用以進行連接,但他們的數(shù)據(jù)量增加到一定的數(shù)量時會出現(xiàn)性能瓶頸,因此對于大數(shù)據(jù)量的存儲使用多個DAS系統(tǒng),存在著信息孤島現(xiàn)象,與數(shù)據(jù)的不統(tǒng)一現(xiàn)象,這對于合理的管理數(shù)據(jù)是十分的不利的。因此,此方案不利于進行海量的數(shù)據(jù)存儲共享。
SCSI方案是以服務(wù)器為中心的數(shù)據(jù)傳送方式,發(fā)展比較早,結(jié)構(gòu)簡單,便于實現(xiàn)與理解,在小規(guī)模數(shù)據(jù)存儲情況下運行較好。但他沒有獨立的存儲操作系統(tǒng),數(shù)據(jù)共享與管理復(fù)雜,維護成本高。在SCSI存儲方案中還可能存在有大量相互獨立的、沒有統(tǒng)一控制的數(shù)據(jù),他們會浪費系統(tǒng)的存儲資源,影響數(shù)據(jù)的一致性。SCSI存儲方案中接口連接設(shè)備數(shù)量與距離受限,存儲容量有限,當(dāng)要進行擴容時不得不使用HUB進行配置,而且可配置擴容的能力相當(dāng)有限,隨著共享數(shù)據(jù)容量的增加,存在因大量數(shù)據(jù)存取引起延遲的性能瓶頸,更有甚當(dāng)關(guān)鍵點服務(wù)器故障時會造成整個系統(tǒng)癱瘓,因此基于SCSI存儲方案構(gòu)建的網(wǎng)絡(luò)數(shù)據(jù)共享存儲不是一種理想的方案,他不適應(yīng)對數(shù)據(jù)的可管理性,海量與共享的要求。
1.2 NAS存儲方案的數(shù)據(jù)共享方案
NAS存儲是應(yīng)中目前數(shù)據(jù)存儲的熱點存儲方案,他的思想是以內(nèi)嵌的NAS服務(wù)器為中心的數(shù)據(jù)存儲,其結(jié)構(gòu)如圖2所示。
在此方案之中希望利用網(wǎng)絡(luò)進行以數(shù)據(jù)為中心的存儲管理,在構(gòu)成上他從服務(wù)器的后面去掉存儲器,將存儲器連接布置在LAN中。NAS通常被理解為專用數(shù)據(jù)存儲服務(wù)器,包括存儲設(shè)備和內(nèi)嵌系統(tǒng)軟件。NAS通常被布置在LAN上某個特定的節(jié)點上,允許用戶在網(wǎng)絡(luò)上存取數(shù)據(jù),NAS設(shè)備支持NFS與CIFS兩種文件系統(tǒng),因此兼容了Windows文件系統(tǒng)與Unix文件系統(tǒng)進行數(shù)據(jù)的共享存儲,提供跨平臺文件共享功能。由于NAS可以集中管理和處理網(wǎng)絡(luò)上的所有數(shù)據(jù),數(shù)據(jù)以文件的形式按照網(wǎng)絡(luò)協(xié)議在客戶機與存儲設(shè)備之間流動,他可以利用NFS實現(xiàn)異構(gòu)平臺的客戶機對數(shù)據(jù)的共享,集成在存儲設(shè)備內(nèi)的專用文件服務(wù)器提高了文件的I/O速度。
{{分頁}}
NAS解決SCSI數(shù)據(jù)存儲方案之中的擴容困難,配置復(fù)雜,不提供集中數(shù)據(jù)管理與跨平臺數(shù)據(jù)共享的不足。NAS已經(jīng)成為一個可以自尋址的特殊服務(wù)器,存儲陣列完全從單個的服務(wù)器中解放出來,那么通過網(wǎng)絡(luò)取得存儲設(shè)備上的數(shù)據(jù)而不消耗服務(wù)器資源的設(shè)想就可以實現(xiàn)了。
雖然克服了并行SCSI結(jié)構(gòu)的許多缺點,但是NAS也存在很明顯的缺點,這就是對LAN網(wǎng)絡(luò)帶寬的消耗。在NAS中,磁盤陣列的數(shù)據(jù)流也是通過網(wǎng)絡(luò)流動的。使用UDP協(xié)議或者TCP/IP協(xié)議對用戶數(shù)據(jù)進行打包傳送對一般的LAN或WAN事務(wù)是可以接受的;但是,對磁盤訪問事務(wù)進行打包傳送,即使是1 000 Mb/s的以太網(wǎng),當(dāng)組建了大型網(wǎng)絡(luò)數(shù)據(jù)共享系統(tǒng)時也很難提供足夠的帶寬,特別是進行多媒體應(yīng)用與高數(shù)據(jù)流量的實時數(shù)據(jù)共享應(yīng)用來說存在著幾乎不可容忍的不足;或者當(dāng)外界與NAS建立連接消耗大量帶寬時也會造成網(wǎng)絡(luò)性能急劇下降,因此對于組建海量存儲共享系統(tǒng)來說,基于NAS的系統(tǒng)并不是一種理想的系統(tǒng)。
1.3 SAN的數(shù)據(jù)存儲
SAN是目前正在流行的前沿數(shù)據(jù)存儲方案,他的核心思想是用存儲區(qū)域網(wǎng)進行數(shù)據(jù)的存儲,他的結(jié)構(gòu)特點如圖3所示。
他的主要思路是利用成熟的網(wǎng)絡(luò)技術(shù),把服務(wù)器與存儲分離,使用一個專用的網(wǎng)絡(luò)進行存儲(也稱SAN網(wǎng)絡(luò)),服務(wù)器以FC協(xié)議通過專用的集線器、交換機和網(wǎng)關(guān)建立服務(wù)器(Server)和磁盤陣列(Storage)之間的直接連接,將LAN上的存儲事務(wù)轉(zhuǎn)換到主要由存儲設(shè)備組成的SAN上。從構(gòu)成本質(zhì)上看SAN并非一種產(chǎn)品,他是配置網(wǎng)絡(luò)化存儲的一種方法,這種網(wǎng)絡(luò)技術(shù)支持遠距離通信,并允許存儲設(shè)備真正與服務(wù)器隔離,使存儲設(shè)備不再單獨屬于某個專用的服務(wù)器,服務(wù)器可以對存儲設(shè)備中的任何單個設(shè)備進行連接。SAN網(wǎng)絡(luò)中的存儲如磁帶庫與磁盤陣列等設(shè)備可以不通過服務(wù)器直接進行相互之間的協(xié)作。
SAN從結(jié)構(gòu)上解決了NAS數(shù)據(jù)訪問對網(wǎng)絡(luò)帶寬占用的問題,如果建立合適的存儲系統(tǒng)數(shù)據(jù)的訪問、備份和恢復(fù)不影響LAN的性能,在有大量數(shù)據(jù)訪問時,不會大幅度降低網(wǎng)絡(luò)性能。在SAN架構(gòu)中,Server/Storage間的通訊采用SAN,而Client/Server間的通訊采用的是LAN。采用SAN適合Setver/Storage間大容量數(shù)據(jù)傳送,而Cli-ent/Server間的數(shù)據(jù)交換,LAN又可以發(fā)揮其靈活的優(yōu)勢。
在SAN存儲方案中:存儲網(wǎng)中物理上分散的存儲設(shè)備在邏輯上完全一體,具有邏輯上的統(tǒng)一性;適合對數(shù)據(jù)進行統(tǒng)一管理,降低了管理費用;使用獨立的存儲網(wǎng)絡(luò)后,容易進行海量存儲擴充;具有很高的容錯能力,如果出現(xiàn)某個存儲局部點故障,則可以利用網(wǎng)絡(luò)的可容單點故障進行錯誤糾正,提高了系統(tǒng)的可靠性;以光纖網(wǎng)絡(luò)為傳輸介質(zhì),充分利用網(wǎng)絡(luò)帶寬提高了存取速度。具有在線擴充的能力,能滿足網(wǎng)絡(luò)存儲中數(shù)據(jù)的快速增長存儲需要,存儲網(wǎng)絡(luò)還具有很大的靈活性,能滿足在Internet計算大環(huán)境下各種計算變化對存儲的要求。
{{分頁}}
當(dāng)然要利用好SAN存儲的優(yōu)秀從邏輯角度上來說,一個SAN的邏輯運行要求有應(yīng)用程序和管理工具的參與,這些工具能夠?qū)Χ鄠€主機系統(tǒng)中的存儲資源進行管理。這種邏輯管理體系結(jié)構(gòu)包括從數(shù)據(jù)管理應(yīng)用程序到設(shè)備管理在內(nèi)的幾個層次,以及每一層中的管理控制。
正因為SAN具有海量的擴充能力,不受帶寬的限制,適應(yīng)網(wǎng)絡(luò)化環(huán)境下數(shù)據(jù)快速增長與多樣性的要求。對于設(shè)計一種高效'的網(wǎng)絡(luò)數(shù)據(jù)存儲共享系統(tǒng)來說,基于SAN存儲平臺是一種理想的選擇。
2 基于SAN的存儲共享方案構(gòu)造
2.1基于SAN的存儲共享的思想
利用網(wǎng)絡(luò)技術(shù),高效的存儲共享數(shù)據(jù)是一種必然,但網(wǎng)絡(luò)的帶寬是有限的,當(dāng)大量的數(shù)據(jù)在網(wǎng)上傳遞時,會造成網(wǎng)絡(luò)響應(yīng)時間過長,不能滿足人們的需求。同時,傳統(tǒng)的分散式存儲結(jié)構(gòu)由于分散數(shù)據(jù)的格式不統(tǒng)一、數(shù)據(jù)傳輸中的網(wǎng)絡(luò)擁擠等自身的局限性,很難從根本上解決數(shù)據(jù)共享的問題。
存儲局域網(wǎng)SAN(Storage Aiea Network)為此提供了一種解決思路。SAN的主要思想是將LAN上的存儲轉(zhuǎn)換到主要由存儲設(shè)備組成的SAN上,使得數(shù)據(jù)的訪問、備份和恢復(fù)不影響LAN的性能,在有大量數(shù)據(jù)訪問時,不會大幅度降低網(wǎng)絡(luò)性能,同時具有海量擴充的能力,很適應(yīng)數(shù)據(jù)量爆炸性增加的存儲共享形勢。 SAN由存儲設(shè)備和聯(lián)網(wǎng)設(shè)備組成,可以使磁盤陣列、磁帶庫等存儲設(shè)備以高傳輸速率與多服務(wù)器相連,這樣就為基于Cilent/Serve:架構(gòu)下的集群技術(shù)的應(yīng)用奠定了硬件基礎(chǔ)。從軟件層次上看,SAN還需要一個異構(gòu)系統(tǒng)數(shù)據(jù)存儲和共享系統(tǒng)來管理這個存儲網(wǎng)絡(luò)。
在軟件角度上看Unix系統(tǒng)具有較強的靈活性強、應(yīng)用軟件豐富、應(yīng)用廣泛的優(yōu)勢;大型機系統(tǒng)具有高可靠性、高可用性、高服務(wù)能力(Reliability,Availability,service-ability),以及強大的I/O處理能力等不可替代的優(yōu)點,并且長期以來積聚了大量豐富的信息資源。大型機系統(tǒng)通常承擔(dān)關(guān)鍵性的大數(shù)據(jù)量信息處理的工作,而Unix服務(wù)器、Windows服務(wù)器等開放系統(tǒng)通常作為服務(wù)器來提供與客戶相關(guān)的前端服務(wù)。在數(shù)據(jù)存儲領(lǐng)域,研究如何如何將他們結(jié)合起來,以充分利用兩類機器的優(yōu)勢,降低數(shù)據(jù)存儲成本,并在存儲整合基礎(chǔ)上實現(xiàn)異構(gòu)系統(tǒng)的計算資源整合是目前的一大難點與熱點。
所要設(shè)計的新系統(tǒng)就是要設(shè)計并實現(xiàn)這樣一個基于SAN的存儲共享軟件系統(tǒng),用來實現(xiàn)大型機、Unix工作站、Windows NT工作站對磁盤陣列的共享存儲,并提供一組統(tǒng)一的應(yīng)用編程接口(APplication programming In-terface,API),供上層應(yīng)用程序使用。
2.2基于SAN的共享存儲系統(tǒng)總體設(shè)計
本系統(tǒng)的核心思想是基于SAN架構(gòu),利用大型機的高性能與豐富的軟件支持進行應(yīng)用數(shù)據(jù)處理,通過共享的磁盤陣列與通用系統(tǒng)進行數(shù)據(jù)訪問。基于Unix或者Windows平臺,兩者的原理相同??紤]到Unix的豐富資源,在Unix上進行本系統(tǒng)的設(shè)計。
整個系統(tǒng)分為大型機端與Unix端2部分,如圖4所示。
2.2.1 大型機端部分
大型機端Server部分負責(zé)和Unix端進行通信,控制Unix端對共享磁盤陣列的訪問,并對各個Unix端的Serve進行管理。大型機端可以運行多個Server,也可以有多臺大型機,各自運行多個Server,在Unix端看來,這些Server的功能相同,地位并列,Unix端Server可以任意選擇其中之一與之通信實現(xiàn)應(yīng)有的功能,以如何響應(yīng)時間最短為選擇標(biāo)準(zhǔn)。
2.2.2 Unix端部分
UnIx端包括Server部分、動態(tài)鏈接庫部分及Com-mand群部分。Server部分是運行在通用系統(tǒng)即Unix或Windows上的daemon程序,他負責(zé)管理host,Path,media,AP等資源,轉(zhuǎn)發(fā)動態(tài)庫的各種文件操作請求。其中host。指大型機端不同的Server,每個Server認為是一個host;media被定義為共享LD。Path被定義為media所映射而成的本地設(shè)備文件;AP則是本地進程。
Library(動態(tài)鏈接庫)是一組函數(shù),其中包括提供給用戶的一組API和一些I/O操作的中間處理函數(shù)。利用該模塊提供的API,Unix端就可以實現(xiàn)對共享磁盤陣列的訪問。
Command群是提供給用戶使用的一組命令,可以實現(xiàn)對系統(tǒng)的管理、控制功能以及對共享文件訪問的管理和控制。
2.3基于SAN網(wǎng)絡(luò)存儲共享系統(tǒng)的關(guān)鍵設(shè)計
對Unix端要設(shè)計如下一些功能進程:Unix的Server部分如圖5所示。
父進程 也成為總體進程,控制整個系統(tǒng)的其他進程,創(chuàng)建其他的進程。
監(jiān)視進程他用于對整個系統(tǒng)的進程的監(jiān)視,以判別他們是否工作正常。
控制進程 對磁盤進行管理,管理磁盤上面的共享數(shù)據(jù),對大型機的請求進行響應(yīng)。 通信進程 對Unix與大型機進行TCP/IP通信。
命令管理進程該進程主要是提供一組命令,通過此命令進行啟動或者停止Unix端的Server命令。激活與大型機的聯(lián)系,激活與磁盤陣列的聯(lián)系。
{{分頁}}
2.3.1 Unix端下的Server要完成的功能
共享磁盤文件資源控制功能;用戶名的轉(zhuǎn)換功能;對訪問共享文件的AP的監(jiān)視功能;共享磁盤的構(gòu)成管理功能;與大型機端Server通信的功能;共享文件的訪問閉塞功能;處理管理命令的功能。
2.3.2 Unix端的Library(動態(tài)鏈接庫)設(shè)計
Library實際上是一個函數(shù)庫,是Unix部分主體功能的實現(xiàn)者。其中包括面向用戶使用戶能夠用來訪問大型機管理下的共享盤的API,以及對用戶不公開的其他處理函數(shù)。Library被設(shè)計成如圖6所示的功能模塊。
應(yīng)用程序接口(API)部分 該模塊是面向用戶的函數(shù)接口,他們就像一個個普通的C函數(shù)一樣,用戶可以在自己編寫的C/C++程序中調(diào)用這些的函數(shù)來實現(xiàn)共享磁盤文件訪問和管理的功能。
Fprc部分 該模塊主要完成與Unix端Server通信獲取文件信息,文件打開、關(guān)閉等,及其他前期準(zhǔn)備和后續(xù)處理工作(構(gòu)造/銷毀各種文件訪問控制表,分配/釋放內(nèi)存空間等)。
Fseq部分 此模塊是各種文件訪問函數(shù)的核心部分,他是對大型機文件的數(shù)據(jù)進行訪問的主要處理部分。 虛擬訪問接口(Virtual Access Interface,VAI)部分此模塊位于Library的最底層,所有的磁盤訪問任務(wù)最終都要通過VAI來實現(xiàn),他可以對大型機的共享文件進行存取訪問。
2.4基于SAN網(wǎng)絡(luò)存儲共享系統(tǒng)的工作原理
基于SAN的數(shù)據(jù)存儲共享系統(tǒng)工作時,大型機端運行的文件共享Server是運行在大型機上的服務(wù)程序,運行的操作系統(tǒng)是大型機上的專用操作系統(tǒng)。他負責(zé)與UnixServer連接并接收文件訪問請求,再利用大型機的API進行文件操作(非數(shù)據(jù)訪問),之后把文件信息通過TCP/IP返回給Unix端Server,最終通過Unix端的動態(tài)庫函數(shù)進行處理。從本質(zhì)上看Unix端Server相對于本地的AP而言是一個服務(wù)程序,而相對于大型機端Server而言,他又相當(dāng)于一個客戶端,所以有時也將他叫作中間Server。
大型機端Server與Unix端Server進行通信時,使用的是Socket連接,通過TCP/IP網(wǎng)絡(luò)進行信息的交互。而在訪問磁盤數(shù)據(jù)時,無論是Unix端還是大型機端,都是通過SAN直接訪問磁盤。另外,大型機端Server還負責(zé)管理各Unix端Server。
對于Unix等通用系統(tǒng)而言,雖然disk array與普通本地硬盤不同,但一旦連接到系統(tǒng)則對應(yīng)用程序而言都是disk設(shè)備,訪問方式完全一樣。在磁盤陣列上存放的是可共享的數(shù)據(jù),他的格式是大型機操作系統(tǒng)的文件系統(tǒng)。倘若Unix直接訪問這些數(shù)據(jù),由于文件系統(tǒng)的不同,所讀出的數(shù)據(jù)必然是亂碼,所寫入的,也將不是正確的大型機文件系統(tǒng)的文件格式。因此,當(dāng)利用通用系統(tǒng)進行文件讀寫時,必須首先通過動態(tài)庫提供的對大型機格式的文件的訪問函數(shù),從大型機端Server取得文件信息并獲得文件控制權(quán),這些請求全部經(jīng)消息隊列發(fā)送到通用機端Server,再由通用機端Server將返回結(jié)果傳遞給動態(tài)庫讀寫函數(shù),直接打開物理盤,進行文件的讀寫。
從大型機端的返回的文件信息,包括文件的屬性及地址分布、需要訪問長度等。通用機端得到這些信息后,將不再需要大型機的介入而直接根據(jù)這些文件信息進行訪問。這種訪問是用被稱為raw disk access的方式進行的。raw disk access是將disk看成連續(xù)Sector,以byte offset方式訪問disk的數(shù)據(jù)。這種訪問方式直接使用disk driv-er進行I/O,由于OS沒有參與讀寫過程,因此效率較高。另外,由于磁盤陣列上的文件系統(tǒng)不能被通用Server識別,也只能用raw disk的方式進行數(shù)據(jù)訪問。
磁盤陣列上的各個邏輯盤將會通過光纖網(wǎng)絡(luò)映射為Unix系統(tǒng)的硬盤設(shè)備。邏輯盤Lgicai Disk(LD)是diskarray的概念,他可以由多個物理disk(各物理disk的一部分或全部)按照一定的RAID方式構(gòu)成,可以進行并行訪問或存儲冗余數(shù)據(jù)。LD可以叫volume,或media,在OS看來這就是一個raw disk,與普通物理硬盤一樣。因為Unix上的設(shè)備都被看作特殊文件,訪問設(shè)備類似于文件訪問,設(shè)備驅(qū)動程序都提供打開和讀寫接口來操作真正的硬件,另外還提供I/O control接口來進行特殊的設(shè)備控制或從設(shè)備獲取信息。與disk相關(guān)的special file都在/dev/dsk或/dev/rdsk目錄下,dsk目錄與rdsk目錄的差別是打開rdsk disk設(shè)備后,read/write/ioctl等調(diào)用將直接發(fā)送給硬件,而dsk目錄的設(shè)備則還經(jīng)過OS的中間處理。
通過此過程,基于SAN的數(shù)據(jù)存儲共享系統(tǒng)能很好地進行高效的數(shù)據(jù)存儲共享,能夠提供跨平臺的文件共享服務(wù),利用SAN的海量擴充潛力,能提供不斷增長的數(shù)據(jù)存儲服務(wù)。
3 結(jié) 語
目前已經(jīng)在實驗室建成以兩臺Unix端,一臺HP服務(wù)器模擬的大型機,一個小型光纖網(wǎng)建立的基于SAN的網(wǎng)絡(luò)數(shù)據(jù)存儲共享存儲系統(tǒng)。通過模擬運行數(shù)據(jù)海量增長情況與數(shù)據(jù)的跨平臺共享表明本系統(tǒng)具有:實現(xiàn)了大型機與Windows及Unix平臺對磁盤陣列的共享訪問,跨平臺性好、接口簡單、擴容簡單??朔藗鹘y(tǒng)的SCSI存儲方案中的擴容有限,數(shù)據(jù)管理復(fù)雜,不直接支持跨平臺的數(shù)據(jù)共享,同時也克服了NAS存儲方案中數(shù)據(jù)仿問量增大時造成整個網(wǎng)絡(luò)性能急劇惡化的不足,能很好地適應(yīng)當(dāng)前網(wǎng)絡(luò)成熟,數(shù)據(jù)量急劇增長時用戶對數(shù)據(jù)存儲共享的需要,是一種很有應(yīng)用價值的先進數(shù)據(jù)存儲共享解決方案。
c++相關(guān)文章:c++教程
交換機相關(guān)文章:交換機工作原理
存儲器相關(guān)文章:存儲器原理
評論