一、存儲(chǔ)的鼻祖—-DAS


    在DAS存儲(chǔ)中,最基本的設(shè)備就是磁盤;不管是傳統(tǒng)的IDE (也就是PATA) 硬盤,還是其升級(jí)版本SATA; 或者是服務(wù)器領(lǐng)域的并行SCSI硬盤,還是最近火爆的SAS硬盤,甚至包括高端的FC硬盤。不管采用的接口如何變化,目前其架構(gòu)無外乎都可以用圖-1所示的模塊來表示。



圖-1 磁盤架構(gòu)


    硬盤通常有三個(gè)模塊組成:接口電路、Firware、盤片和機(jī)械控制電路。數(shù)據(jù)通過Cable到達(dá)接口電路,就是上面所說IDE、SATA、SCSI、FC接口,它完成對(duì)應(yīng)協(xié)議相關(guān)物理電信號(hào)的轉(zhuǎn)換和處理,得到相關(guān)的數(shù)據(jù)和命令。通常,硬盤采用的兩種協(xié)議集:ATA和SCSI。其中IDE和SATA采用ATA協(xié)議集,而并行SCSI和串行SCSI,以及FC基本都采用SCSI協(xié)議集。為了加強(qiáng)接口電路的可靠性,F(xiàn)C硬盤中還采用了雙端口技術(shù)。


    當(dāng)數(shù)據(jù)通過了接口電路后,就由Firmware來處理,它會(huì)根據(jù)傳遞來的命令進(jìn)行相關(guān)的處理,如果需要寫入數(shù)據(jù),則還要操縱機(jī)械控制電路將它們寫入盤片。由于Firmware功能越來越強(qiáng)大,為硬盤加入了很多特性,比如命令隊(duì)列,磁盤緩沖,數(shù)據(jù)加密設(shè)計(jì)等。


    最后數(shù)據(jù)通過機(jī)械臂寫入到盤片,由于盤片可能因?yàn)槟承膲K而導(dǎo)致數(shù)據(jù)丟失,或者數(shù)據(jù)寫入錯(cuò)誤。目前,有一種重定向技術(shù),來解決這種問題;例如,寫入到某數(shù)據(jù)塊錯(cuò)誤 (比如LBA地址 M ),F(xiàn)irmware可以將這個(gè)塊的數(shù)據(jù)重新寫入一個(gè)專用區(qū)域塊;從而即使該塊損壞,也可以通過Mapping,將壞塊重定向到好的區(qū)域,并完成正常的讀寫操作。


    可見,在硬盤存儲(chǔ)設(shè)備上,每一個(gè)模塊都涉及到數(shù)據(jù)安全的細(xì)節(jié)設(shè)計(jì)。


    二、存儲(chǔ)的擴(kuò)展—-NAS


    2.1 基于Linux的NAS


    在中低端NAS領(lǐng)域,可以采用定制的LINUX+SATA作為平臺(tái)來進(jìn)行設(shè)計(jì),如圖-2所示。盡管SATA采用ATA協(xié)議集,但是在LINUX下由于SCSI驅(qū)動(dòng)架構(gòu)比IDE架構(gòu) (專門用于IDE硬盤) 擴(kuò)展能力強(qiáng),所以還讓SATA跑在SCSI架構(gòu)下面。



圖-2 采用Linux構(gòu)建NAS


    在Linux下SCSI驅(qū)動(dòng)架構(gòu),自下而上主要分為三層,分別是SCSI Lower Level驅(qū)動(dòng)、SCSI Middle Level驅(qū)動(dòng),和SCSI Upper Level驅(qū)動(dòng)。最下面是SCSI Lower Level驅(qū)動(dòng),它和系統(tǒng)提供的Libata模塊協(xié)作,讓各種SATA HBA能夠正常的運(yùn)行,因?yàn)橄到y(tǒng)提供的Libata是按照SATA的規(guī)范來抽象出一些共有的東西,所以對(duì)于不同的SATA HBA只要去做自己相關(guān)的事情,這樣就像流水線那樣,分工明確,責(zé)任清晰,從而也更加易于擴(kuò)展。


    對(duì)于SCSI Middle Level驅(qū)動(dòng),它就像一個(gè)中央管理者,負(fù)責(zé)探尋下面各個(gè)SATA HBA上連接的硬盤,并向上層驅(qū)動(dòng)匯報(bào),同時(shí)將上層發(fā)下來的讀寫請(qǐng)求轉(zhuǎn)化為對(duì)應(yīng)的某個(gè)磁盤上對(duì)應(yīng)的塊讀寫操作。它就像一個(gè)調(diào)度者,負(fù)責(zé)協(xié)調(diào)上下模塊之間的動(dòng)作,在整個(gè)SCSI驅(qū)動(dòng)架構(gòu)中扮演重要的角色。而基于最上層的SCSI Upper Level驅(qū)動(dòng),就是針對(duì)各種SCSI設(shè)備而專門設(shè)計(jì),對(duì)于磁盤就是通常的sd_mod.o模塊。該模塊一個(gè)最直觀的功能就是向系統(tǒng)報(bào)告設(shè)備名,Linux系統(tǒng)中眾所周知的/dev/sda, /dev/sdb, /dev/sdc等設(shè)備名就是由它來完成的。


    當(dāng)通過SCSI驅(qū)動(dòng)架構(gòu)的處理,RAW設(shè)備就呈現(xiàn)出來;但是在RAW設(shè)備基礎(chǔ)上的直接構(gòu)建卷和文件系統(tǒng),其可靠性不高,擴(kuò)展性不強(qiáng),不能加入很多有特色的元素。因此通常可以在RAW設(shè)備上提供一個(gè)卷管理軟件,如MD (軟件RAID), 它除了支持常規(guī)的各種RAID外, 還加入了對(duì)RAID6的支持,并且被加入到內(nèi)核中;從而,使得對(duì)于MD的部署和管理更加方便。當(dāng)然,也有采用基于MD的LVM, EVMS, VxVM等,它們能提供更為強(qiáng)大的功能。


    當(dāng)構(gòu)建完底層的卷之后,那么就可以設(shè)計(jì)文件系統(tǒng)了。文件系統(tǒng),說得簡單點(diǎn),就是一個(gè)大管家,它把你的資料統(tǒng)一管理起來;例如,你不知道某張圖片放在哪個(gè)磁盤的某個(gè)位置,只需要告訴大管家,要看這個(gè)文件,那么它就會(huì)把該圖片取出來。當(dāng)然,對(duì)于文件系統(tǒng)來說,最怕系統(tǒng)崩潰,所以在現(xiàn)代的文件系統(tǒng)設(shè)計(jì)中都加入了日志功能,對(duì)于Linux來說就是常用的Ext2, Ext3。


    當(dāng)這些基礎(chǔ)設(shè)施都準(zhǔn)備好后,再加入上層的應(yīng)用模塊,這樣用Linux構(gòu)建的本地系統(tǒng)已經(jīng)可以正常工作了。但是,要做NAS,就要把這個(gè)本地系統(tǒng)和外界連接起來,這時(shí)候NFS或CIFS就擔(dān)當(dāng)起這個(gè)重要的職責(zé)的橋梁。通過這些網(wǎng)絡(luò)文件系統(tǒng),就可以把本地的文件系統(tǒng)裝載到遠(yuǎn)程去,完整地實(shí)現(xiàn)NAS功能。


    上面所涉及到的各個(gè)模塊,在Linux下都有良好的支持,通過對(duì)Linux內(nèi)核的定制,以及對(duì)各種應(yīng)用程序的適當(dāng)選擇就可以完成;盡管看起來很容易,但實(shí)際上在整個(gè)通路上的安全問題,是由很多底層的設(shè)計(jì)人員解決掉封裝好,所以用戶了解不到。


    2.2基于Windows的NAS


    針對(duì)Linux在這方面的應(yīng)用,Windows也設(shè)計(jì)了對(duì)應(yīng)的NAS涉及解決方案,如圖-3所示。和Linux構(gòu)建NAS對(duì)比,可以發(fā)現(xiàn)在架構(gòu)設(shè)計(jì)上很多是相通的,畢竟操作系統(tǒng)的興旺發(fā)達(dá)還是從各個(gè)大牛們啃UNIX開始的。



圖-3 基于Windows的NAS設(shè)計(jì)


    從圖-3中的最底層開始,其中的MiniPort Driver和Linux下的SCSI Lower Level驅(qū)動(dòng)功能類似,同樣Windows中也有SCSI Port Driver來完成Linux SCSI Middle Level驅(qū)動(dòng)的工作,上面的Disk Class Driver基本和sd_mod.o完成的工作一樣;


    在它們之上和文件系統(tǒng)之間,windows放入了一個(gè)PSM Filter Driver,它和用戶模式下的PSM組件一起完成Snapshot的功能;而這些功能,可以在Linux的卷管理模塊,如LVM中完成。其上面就是Microsoft專有的NTFS,它本身也是一個(gè)日志文件系統(tǒng);再加上CIFS網(wǎng)絡(luò)文件系統(tǒng),一個(gè)基于Windows的NAS就橫空出世了。


    三、存儲(chǔ)的貴族—-存儲(chǔ)網(wǎng)絡(luò)SAN中的陣列


    對(duì)于存儲(chǔ)陣列,那高貴的血統(tǒng)通常不是普通用戶能夠接觸得到,即使使用也是小心翼翼,倍加呵護(hù);所以其內(nèi)部架構(gòu),也倍顯神秘。圖-4就是IBM DS8000的內(nèi)部架構(gòu)圖。



圖-4 DS8000架構(gòu)


    直觀上看圖-4,它是一個(gè)左右對(duì)稱的圖,即是說將它以中軸線平分,左右兩邊幾乎是一樣的;這就是高端設(shè)計(jì)中,一個(gè)為了提高安全能力,達(dá)到高可靠性的關(guān)鍵點(diǎn),防止單點(diǎn)故障的冗余。


    然后對(duì)照從上往下看,先是接入SAN Fabric的HBA (Host Adapter),然后數(shù)據(jù)就進(jìn)入Processor Complex;經(jīng)過Processor的處理,然后到達(dá)設(shè)備控制器 (Device Adapter);在DS8000內(nèi)部,采用了Fabric Switch,從而設(shè)備控制器會(huì)把數(shù)據(jù)傳送給光纖交換機(jī),最終由它傳遞到磁盤上,注意這里的磁盤采用了雙端口技術(shù)。


    換個(gè)角度來看,如果把HBA, Processor和設(shè)備控制器結(jié)合起來,它就像是一個(gè)服務(wù)器那樣;那么對(duì)于DS8000陣列,它包含服務(wù)器、光纖交換機(jī)、存儲(chǔ)磁盤,它本身就像一個(gè)SAN環(huán)境,只不過這個(gè)SAN是一個(gè)自封閉的環(huán)境,只留下HBA接受外面的SCSI命令。


    當(dāng)然EMC和HDS可能采用了不同的架構(gòu)和設(shè)計(jì)方法,不過最基本的原理,都是類似的,俗話說“天下武功出少林”。


    四、安全與存儲(chǔ),IT的新熱點(diǎn)


    通過上述對(duì)存儲(chǔ)設(shè)備組成模塊,數(shù)據(jù)移動(dòng)路徑的分析,對(duì)于神神秘秘的存儲(chǔ)作了初淺的“故事簡介”,如果把數(shù)據(jù)在傳輸和存儲(chǔ)中的安全定義為廣義的安全,那么可靠性就是提高安全的關(guān)鍵。


    而在存儲(chǔ)領(lǐng)域中,可靠性是隨處可見,自底而上,貫穿始終:
    a) 從文件系統(tǒng)的日志能力和目前的熱門話題CDP;
    b) 到卷管理器上的快照;
    c) HBA上的多路徑;
    d) 陣列上的RAID;
    e) 采用NVRAM (on-Volatile Random Access Memory) 的緩沖;
    f) 采用雙端口的磁盤;


    但是,在加入這些安全考慮的時(shí)候,在某些情況下會(huì)帶來性能的影響,比如CDP技術(shù),以及帶校驗(yàn)?zāi)芰Φ腞AID5和RAID6等;要實(shí)現(xiàn)這些功能,不可避免的都需要占用處理時(shí)間,或者對(duì)存儲(chǔ)空間的額外占用;從某種程度上來說,安全可能會(huì)和存儲(chǔ)沖突,但是隨著軟硬件技術(shù)的不斷發(fā)展和提高,這種沖突將會(huì)被逐漸的減少,或者設(shè)計(jì)專門的設(shè)備來完成,比如針對(duì)RAID5和RAID6就有專用的RAID加速器,并且并非所有的應(yīng)用都是對(duì)性能有無限需求。只要能夠在可以接受的程度下,保證用戶的數(shù)據(jù)安全,保證用戶數(shù)據(jù)的可靠性,滿足用戶的需求,才是真正的王道。


    總之,數(shù)據(jù)天生就包含到安全和存儲(chǔ)兩個(gè)屬性,在以前的應(yīng)用中,對(duì)這一點(diǎn)客戶和廠商都沒有達(dá)到將他們二者統(tǒng)一的觀念,將其分為兩個(gè)不同的領(lǐng)域來處理和對(duì)待。但是,隨著安全和存儲(chǔ)廠商并購的滾滾大流,隨著用戶對(duì)數(shù)據(jù)重要性認(rèn)識(shí)的越來越深入,安全和存儲(chǔ)必將融合。


    本文節(jié)選自《信息存儲(chǔ)》雜志2006年度特刊,點(diǎn)擊此處瀏覽全部文章。
    想要免費(fèi)申請(qǐng)訂閱《信息存儲(chǔ)》雜志,請(qǐng)點(diǎn)擊此處。

分享到

多易

相關(guān)推薦