分布式存儲安全缺陷——存儲類型
存儲最重要的指標(biāo)是什么?很多人包括存儲專家都會認(rèn)為是存儲的性能指標(biāo),比如IOPS和帶寬。但是我認(rèn)為存儲最重要的是數(shù)據(jù)的安全性。一個跑的飛快的存儲,突然數(shù)據(jù)丟失了,后果會怎么樣?數(shù)據(jù)的丟失,對于任何系統(tǒng)來說,都是滅頂之災(zāi)。所以,不管什么樣的存儲,數(shù)據(jù)的安全可靠都是***位的。原來傳統(tǒng)的存儲使用了專用硬件,從可靠性上有比較高的保證,所以大家首先會關(guān)注性能指標(biāo)。但是用X86為基礎(chǔ)的SRVSAN的可靠性就不容樂觀。
我們在2014年下半年,開始搭建以X86為載體的分布式塊存儲,經(jīng)過嚴(yán)格的測試,在同年底投入商用,是業(yè)界***商用的軟件定義的分布式存儲,當(dāng)時各種媒體都爭相報道。到現(xiàn)在為止已經(jīng)商用了近2年,存儲運(yùn)行穩(wěn)定,表現(xiàn)優(yōu)良。并從原來2P裸容量擴(kuò)容到4.5P。但是近段時間我卻越來越擔(dān)心,因為SRVSAN與生俱來的數(shù)據(jù)安全隱患,一直被人忽視了,而且主流廠家也沒有意識到這個問題。如果這個隱患在若干年以后爆發(fā),會發(fā)生重大性系統(tǒng)故障。
存儲這個東西,大部分讀者并不是太了解,我將通過幾篇文章連載的方式,從比較基礎(chǔ)知識開始寫,并引出問題和大家一起討論解決的辦法。盤算了一下大致分為七個章節(jié):
一、存儲類型
二、文件系統(tǒng)
三、磁盤類型
四、Raid和副本
五、SRVSAN的架構(gòu)
六、SRVSAN的安全隱患
七、解決的方法
一般情況下,我們將存儲分成了4種類型,基于本機(jī)的DAS和網(wǎng)絡(luò)的NAS存儲、SAN存儲、對象存儲。對象存儲是SAN存儲和NAS存儲結(jié)合后的產(chǎn)物,汲取了SAN存儲和NAS存儲的優(yōu)點(diǎn)。
圖1
我們來了解一下應(yīng)用是怎么樣獲取它想要的存在存儲里的某個文件信息,并用大家熟悉的Windows來舉例,如圖1。
1、 應(yīng)用會發(fā)出一個指令“讀取本目錄下的readme.txt 文件的前1K數(shù)據(jù)”。
2、 通過內(nèi)存通信到目錄層,將相對目錄轉(zhuǎn)換為實際目錄,“讀取C:\ test\readme.txt文件前1K數(shù)據(jù)”
3、 通過文件系統(tǒng),比如FAT32,通過查詢文件分配表和目錄項,獲取文件存儲的LBA地址位置、權(quán)限等信息。文件系統(tǒng)先查詢緩存中有沒有數(shù)據(jù),如果有直接返回數(shù)據(jù);沒有,文件系統(tǒng)通過內(nèi)存通信傳遞到下一環(huán)節(jié)命令“讀取起始位置LBA1000,長度1024的信息”。
4、 卷(LUN)管理層將LBA地址翻譯成為存儲的物理地址,并封裝協(xié)議,如SCSI協(xié)議,傳遞給下一環(huán)節(jié)。
5、 磁盤控制器根據(jù)命令從磁盤中獲取相應(yīng)的信息。
如果磁盤扇區(qū)大小是4K,實際一次I/O讀取的數(shù)據(jù)是4K,磁頭讀取的4K數(shù)據(jù)到達(dá)服務(wù)器上的內(nèi)容后,有文件系統(tǒng)截取前1K的數(shù)據(jù)傳遞給應(yīng)用,如果下次應(yīng)用再發(fā)起同樣的請求,文件系統(tǒng)就可以從服務(wù)器的內(nèi)存中直接讀取。
不管是DAS、NAS還是SAN,數(shù)據(jù)訪問的流程都是差不多的。DAS將計算、存儲能力一把抓,封裝在一個服務(wù)器里。大家日常用的電腦,就是一個DAS系統(tǒng),如圖1。
圖2
如果將計算和存儲分離了,存儲成為一個獨(dú)立的設(shè)備,并且存儲有自己的文件系統(tǒng),可以自己管理數(shù)據(jù),就是NAS,如圖2。計算和存儲間一般采用以太網(wǎng)絡(luò)連接,走的是CIFS或NFS協(xié)議。服務(wù)器們可以共享一個文件系統(tǒng),也就是說,不管服務(wù)器講的是上海話還是杭州話,通過網(wǎng)絡(luò)到達(dá)NAS 的文件系統(tǒng),都被翻譯成為普通話。所以NAS存儲可以被不同的主機(jī)共享。服務(wù)器只要提需求,不需要進(jìn)行大量的計算,將很多工作交給了存儲完成,省下的CPU資源可以干更多服務(wù)器想干的事情,即計算密集型適合使用NAS。
圖3
計算和存儲分離了,存儲成為一個獨(dú)立的設(shè)備,存儲只是接受命令不再做復(fù)雜的計算,只干讀取或者寫入文件2件事情,叫SAN,如圖3。因為不帶文件系統(tǒng),所以也叫“裸存儲”,有些應(yīng)用就需要裸設(shè)備,如數(shù)據(jù)庫。存儲只接受簡單明了的命令,其他復(fù)雜的事情,有服務(wù)器端干了。再配合FC網(wǎng)絡(luò),這種存儲數(shù)據(jù)讀取/寫入的速度很高。但是每個服務(wù)器都有自己的文件系統(tǒng)進(jìn)行管理,對于存儲來說是不挑食的只要來數(shù)據(jù)我就存,不需要知道來的是什么,不管是英語還是法語,都忠實記錄下來的。但是只有懂英語的才能看懂英語的數(shù)據(jù),懂法語的看懂法語的數(shù)據(jù)。所以,一般服務(wù)器和SAN存儲區(qū)域是一夫一妻制的,SAN的共享性不好。當(dāng)然,有些裝了集群文件系統(tǒng)的主機(jī)是可以共享同一個存儲區(qū)域的。
從上面分析,我們知道,決定存儲的快慢是由網(wǎng)絡(luò)和命令的復(fù)雜程度決定的。
內(nèi)存通信速度>總線通信>網(wǎng)絡(luò)通信,網(wǎng)絡(luò)通信中還有FC網(wǎng)絡(luò)和以太網(wǎng)絡(luò)。FC網(wǎng)絡(luò)目前可以實現(xiàn)8Gb/s,但以太網(wǎng)絡(luò)通過光纖介質(zhì)已經(jīng)普及10Gb/s,40Gb/s的網(wǎng)卡也在使用了。也就是說傳統(tǒng)以太網(wǎng)絡(luò)已經(jīng)不是存儲的瓶頸了。除了FCSAN,IPSAN也是SAN存儲的重要成員。
對存儲的操作,除了熟悉的讀/寫以外,其實還有創(chuàng)建、打開、獲取屬性、設(shè)置屬性、查找等等。對于有大腦的SAN存儲來說,除了讀/寫以外的命令,都可以在本地內(nèi)存中完成,速度極快。而NAS存儲缺乏大腦,每次向存儲傳遞命令,都需要IP封裝并通過以太網(wǎng)絡(luò)傳遞到NAS服務(wù)器上,這個速度就遠(yuǎn)遠(yuǎn)低于內(nèi)存通信了。
DAS特點(diǎn)是速度最快,但只能自己用;NAS的特點(diǎn)速度慢點(diǎn)但共享性好;SAN的特點(diǎn)是速度快,但共享性差??傮w上來講,對象存儲同兼具SAN高速直接訪問磁盤特點(diǎn)及NAS的分布式共享特點(diǎn)。NAS存儲的基本單位是文件,SAN存儲的基本單位是數(shù)據(jù)塊,而對象存儲的基本單位是對象,對象可以認(rèn)為是文件的數(shù)據(jù)+一組屬性信息的組合,這些屬性信息可以定義基于文件的RAID參數(shù)、數(shù)據(jù)分布和服務(wù)質(zhì)量等。采取的是“控制信息”和“數(shù)據(jù)存儲”分離的模式,客戶端用對象ID+偏移量作為讀寫的依據(jù),客戶端先從“控制信息”獲取數(shù)據(jù)存儲的真實地址,再直接從“數(shù)據(jù)存儲”中訪問。 對象存儲大量使用在互聯(lián)網(wǎng)上,大家使用的網(wǎng)盤就是典型的對象存儲。對象存儲有很好的擴(kuò)展性,可以線性擴(kuò)容。并可以通過接口封裝,還可以提供NAS存儲服務(wù)和SAN存儲服務(wù)。VMware的vSAN本質(zhì)就是一個對象存儲。分布式對象存儲就是SRVSAN的一種,也存在安全隱患。因為這個隱患是X86服務(wù)器帶來的。

























