一、存儲的鼻祖—-DAS
在DAS存儲中,最基本的設(shè)備就是磁盤;不管是傳統(tǒng)的IDE (也就是PATA) 硬盤,還是其升級版本SATA; 或者是服務(wù)器領(lǐng)域的并行SCSI硬盤,還是最近火爆的SAS硬盤,甚至包括高端的FC硬盤。不管采用的接口如何變化,目前其架構(gòu)無外乎都可以用圖-1所示的模塊來表示。
圖-1 磁盤架構(gòu)
硬盤通常有三個模塊組成:接口電路、Firware、盤片和機(jī)械控制電路。數(shù)據(jù)通過Cable到達(dá)接口電路,就是上面所說IDE、SATA、SCSI、FC接口,它完成對應(yīng)協(xié)議相關(guān)物理電信號的轉(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來處理,它會根據(jù)傳遞來的命令進(jìn)行相關(guān)的處理,如果需要寫入數(shù)據(jù),則還要操縱機(jī)械控制電路將它們寫入盤片。由于Firmware功能越來越強(qiáng)大,為硬盤加入了很多特性,比如命令隊列,磁盤緩沖,數(shù)據(jù)加密設(shè)計等。
最后數(shù)據(jù)通過機(jī)械臂寫入到盤片,由于盤片可能因為某些壞塊而導(dǎo)致數(shù)據(jù)丟失,或者數(shù)據(jù)寫入錯誤。目前,有一種重定向技術(shù),來解決這種問題;例如,寫入到某數(shù)據(jù)塊錯誤 (比如LBA地址 M ),F(xiàn)irmware可以將這個塊的數(shù)據(jù)重新寫入一個專用區(qū)域塊;從而即使該塊損壞,也可以通過Mapping,將壞塊重定向到好的區(qū)域,并完成正常的讀寫操作。
可見,在硬盤存儲設(shè)備上,每一個模塊都涉及到數(shù)據(jù)安全的細(xì)節(jié)設(shè)計。
二、存儲的擴(kuò)展—-NAS
2.1 基于Linux的NAS
在中低端NAS領(lǐng)域,可以采用定制的LINUX+SATA作為平臺來進(jìn)行設(shè)計,如圖-2所示。盡管SATA采用ATA協(xié)議集,但是在LINUX下由于SCSI驅(qū)動架構(gòu)比IDE架構(gòu) (專門用于IDE硬盤) 擴(kuò)展能力強(qiáng),所以還讓SATA跑在SCSI架構(gòu)下面。
圖-2 采用Linux構(gòu)建NAS
在Linux下SCSI驅(qū)動架構(gòu),自下而上主要分為三層,分別是SCSI Lower Level驅(qū)動、SCSI Middle Level驅(qū)動,和SCSI Upper Level驅(qū)動。最下面是SCSI Lower Level驅(qū)動,它和系統(tǒng)提供的Libata模塊協(xié)作,讓各種SATA HBA能夠正常的運行,因為系統(tǒng)提供的Libata是按照SATA的規(guī)范來抽象出一些共有的東西,所以對于不同的SATA HBA只要去做自己相關(guān)的事情,這樣就像流水線那樣,分工明確,責(zé)任清晰,從而也更加易于擴(kuò)展。
對于SCSI Middle Level驅(qū)動,它就像一個中央管理者,負(fù)責(zé)探尋下面各個SATA HBA上連接的硬盤,并向上層驅(qū)動匯報,同時將上層發(fā)下來的讀寫請求轉(zhuǎn)化為對應(yīng)的某個磁盤上對應(yīng)的塊讀寫操作。它就像一個調(diào)度者,負(fù)責(zé)協(xié)調(diào)上下模塊之間的動作,在整個SCSI驅(qū)動架構(gòu)中扮演重要的角色。而基于最上層的SCSI Upper Level驅(qū)動,就是針對各種SCSI設(shè)備而專門設(shè)計,對于磁盤就是通常的sd_mod.o模塊。該模塊一個最直觀的功能就是向系統(tǒng)報告設(shè)備名,Linux系統(tǒng)中眾所周知的/dev/sda, /dev/sdb, /dev/sdc等設(shè)備名就是由它來完成的。
當(dāng)通過SCSI驅(qū)動架構(gòu)的處理,RAW設(shè)備就呈現(xiàn)出來;但是在RAW設(shè)備基礎(chǔ)上的直接構(gòu)建卷和文件系統(tǒng),其可靠性不高,擴(kuò)展性不強(qiáng),不能加入很多有特色的元素。因此通??梢栽赗AW設(shè)備上提供一個卷管理軟件,如MD (軟件RAID), 它除了支持常規(guī)的各種RAID外, 還加入了對RAID6的支持,并且被加入到內(nèi)核中;從而,使得對于MD的部署和管理更加方便。當(dāng)然,也有采用基于MD的LVM, EVMS, VxVM等,它們能提供更為強(qiáng)大的功能。
當(dāng)構(gòu)建完底層的卷之后,那么就可以設(shè)計文件系統(tǒng)了。文件系統(tǒng),說得簡單點,就是一個大管家,它把你的資料統(tǒng)一管理起來;例如,你不知道某張圖片放在哪個磁盤的某個位置,只需要告訴大管家,要看這個文件,那么它就會把該圖片取出來。當(dāng)然,對于文件系統(tǒng)來說,最怕系統(tǒng)崩潰,所以在現(xiàn)代的文件系統(tǒng)設(shè)計中都加入了日志功能,對于Linux來說就是常用的Ext2, Ext3。
當(dāng)這些基礎(chǔ)設(shè)施都準(zhǔn)備好后,再加入上層的應(yīng)用模塊,這樣用Linux構(gòu)建的本地系統(tǒng)已經(jīng)可以正常工作了。但是,要做NAS,就要把這個本地系統(tǒng)和外界連接起來,這時候NFS或CIFS就擔(dān)當(dāng)起這個重要的職責(zé)的橋梁。通過這些網(wǎng)絡(luò)文件系統(tǒng),就可以把本地的文件系統(tǒng)裝載到遠(yuǎn)程去,完整地實現(xiàn)NAS功能。
上面所涉及到的各個模塊,在Linux下都有良好的支持,通過對Linux內(nèi)核的定制,以及對各種應(yīng)用程序的適當(dāng)選擇就可以完成;盡管看起來很容易,但實際上在整個通路上的安全問題,是由很多底層的設(shè)計人員解決掉封裝好,所以用戶了解不到。
2.2基于Windows的NAS
針對Linux在這方面的應(yīng)用,Windows也設(shè)計了對應(yīng)的NAS涉及解決方案,如圖-3所示。和Linux構(gòu)建NAS對比,可以發(fā)現(xiàn)在架構(gòu)設(shè)計上很多是相通的,畢竟操作系統(tǒng)的興旺發(fā)達(dá)還是從各個大牛們啃UNIX開始的。
圖-3 基于Windows的NAS設(shè)計
從圖-3中的最底層開始,其中的MiniPort Driver和Linux下的SCSI Lower Level驅(qū)動功能類似,同樣Windows中也有SCSI Port Driver來完成Linux SCSI Middle Level驅(qū)動的工作,上面的Disk Class Driver基本和sd_mod.o完成的工作一樣;
在它們之上和文件系統(tǒng)之間,windows放入了一個PSM Filter Driver,它和用戶模式下的PSM組件一起完成Snapshot的功能;而這些功能,可以在Linux的卷管理模塊,如LVM中完成。其上面就是Microsoft專有的NTFS,它本身也是一個日志文件系統(tǒng);再加上CIFS網(wǎng)絡(luò)文件系統(tǒng),一個基于Windows的NAS就橫空出世了。
三、存儲的貴族—-存儲網(wǎng)絡(luò)SAN中的陣列
對于存儲陣列,那高貴的血統(tǒng)通常不是普通用戶能夠接觸得到,即使使用也是小心翼翼,倍加呵護(hù);所以其內(nèi)部架構(gòu),也倍顯神秘。圖-4就是IBM DS8000的內(nèi)部架構(gòu)圖。
圖-4 DS8000架構(gòu)
直觀上看圖-4,它是一個左右對稱的圖,即是說將它以中軸線平分,左右兩邊幾乎是一樣的;這就是高端設(shè)計中,一個為了提高安全能力,達(dá)到高可靠性的關(guān)鍵點,防止單點故障的冗余。
然后對照從上往下看,先是接入SAN Fabric的HBA (Host Adapter),然后數(shù)據(jù)就進(jìn)入Processor Complex;經(jīng)過Processor的處理,然后到達(dá)設(shè)備控制器 (Device Adapter);在DS8000內(nèi)部,采用了Fabric Switch,從而設(shè)備控制器會把數(shù)據(jù)傳送給光纖交換機(jī),最終由它傳遞到磁盤上,注意這里的磁盤采用了雙端口技術(shù)。
換個角度來看,如果把HBA, Processor和設(shè)備控制器結(jié)合起來,它就像是一個服務(wù)器那樣;那么對于DS8000陣列,它包含服務(wù)器、光纖交換機(jī)、存儲磁盤,它本身就像一個SAN環(huán)境,只不過這個SAN是一個自封閉的環(huán)境,只留下HBA接受外面的SCSI命令。
當(dāng)然EMC和HDS可能采用了不同的架構(gòu)和設(shè)計方法,不過最基本的原理,都是類似的,俗話說“天下武功出少林”。
四、安全與存儲,IT的新熱點
通過上述對存儲設(shè)備組成模塊,數(shù)據(jù)移動路徑的分析,對于神神秘秘的存儲作了初淺的“故事簡介”,如果把數(shù)據(jù)在傳輸和存儲中的安全定義為廣義的安全,那么可靠性就是提高安全的關(guān)鍵。
而在存儲領(lǐng)域中,可靠性是隨處可見,自底而上,貫穿始終:
a) 從文件系統(tǒng)的日志能力和目前的熱門話題CDP;
b) 到卷管理器上的快照;
c) HBA上的多路徑;
d) 陣列上的RAID;
e) 采用NVRAM (on-Volatile Random Access Memory) 的緩沖;
f) 采用雙端口的磁盤;
但是,在加入這些安全考慮的時候,在某些情況下會帶來性能的影響,比如CDP技術(shù),以及帶校驗?zāi)芰Φ腞AID5和RAID6等;要實現(xiàn)這些功能,不可避免的都需要占用處理時間,或者對存儲空間的額外占用;從某種程度上來說,安全可能會和存儲沖突,但是隨著軟硬件技術(shù)的不斷發(fā)展和提高,這種沖突將會被逐漸的減少,或者設(shè)計專門的設(shè)備來完成,比如針對RAID5和RAID6就有專用的RAID加速器,并且并非所有的應(yīng)用都是對性能有無限需求。只要能夠在可以接受的程度下,保證用戶的數(shù)據(jù)安全,保證用戶數(shù)據(jù)的可靠性,滿足用戶的需求,才是真正的王道。
總之,數(shù)據(jù)天生就包含到安全和存儲兩個屬性,在以前的應(yīng)用中,對這一點客戶和廠商都沒有達(dá)到將他們二者統(tǒng)一的觀念,將其分為兩個不同的領(lǐng)域來處理和對待。但是,隨著安全和存儲廠商并購的滾滾大流,隨著用戶對數(shù)據(jù)重要性認(rèn)識的越來越深入,安全和存儲必將融合。
本文節(jié)選自《信息存儲》雜志2006年度特刊,點擊此處瀏覽全部文章。
想要免費申請訂閱《信息存儲》雜志,請點擊此處。