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