網絡協議網絡應用OSHadoopLinux
DAS、SAN和NAS
爲了滿足人們不斷擴大的需求,存儲方案也是在發展的。而DAS、SAN、NAS直接反映這種反映了這種趨勢。
- 單臺主機。在這種情況下,存儲作爲主機的一個或多個磁盤存在,這樣侷限性也是很明顯的。由於受限於主機空間,一個主機只能裝一塊到幾塊硬盤,而硬盤空間時受限的,當磁盤滿了以後,你不得不爲主機更換更大空間的硬盤。
- 獨立存儲空間。爲了解決空間的問題,於是考慮把磁盤獨立出來,於是有了DAS(Direct Attached Storage),即:直連存儲。DAS就是一組磁盤的集合體,數據讀取和寫入等也都是由主機來控制。但是,隨之而來,DAS又面臨了一個他無法解決的問題——存儲空間的共享。接某個主機的JBOD(Just a BunchOf Disks,磁盤組),只能這個主機使用,其他主機無法用。因此,如果DAS解決空間了,那麼他無法解決的就是如果讓空間能夠在多個機器共享。因爲DAS可以理解爲與磁盤交互,DAS處理問題的層面相對更低。使用協議都是跟磁盤交互的協議
- 獨立的存儲網絡。爲了解決共享的問題,借鑑以太網的思想,於是有了SAN(Storage Area Network),即:存儲網絡。對於SAN網絡,你能看到兩個非常特點,一個就是光纖網絡,另一個是光纖交換機。SAN網絡由於不會之間跟磁盤交互,他考慮的更多是數據存取的問題,因此使用的協議相對DAS層面更高一些。
- 光纖網絡:對於存儲來說,與以太網很大的一個不同就是他對帶寬的要求非常高,因此SAN網絡下,光纖成爲了其連接的基礎。而其上的光纖協議相比以太網協議而言,也被設計的更爲簡潔,性能也更高。
- 光纖交換機:這個類似以太網,如果想要做到真正的“網絡”,交換機是基礎。
- 網絡文件系統。存儲空間可以共享,那文件也是可以共享的。NAS(Network attached storage)相對上面兩個,看待問題的層面更高,NAS是在文件系統級別看待問題。因此他面的不再是存儲空間,而是單個的文件。因此,當NAS和SAN、DAS放在一起時,很容易引起混淆。NAS從文件的層面考慮共享,因此NAS相關協議都是文件控制協議。
- NAS解決的是文件共享的問題;SAN(DAS)解決的是存儲空間的問題。
- NAS要處理的對象是文件;SAN(DAS)要處理的是磁盤。
- 爲NAS服務的主機必須是一個完整的主機(有OS、有文件系統,而存儲則不一定有,因爲可以他後面又接了一個SAN網絡),他考慮的是如何在各個主機直接高效的共享文件;爲SAN提供服務的是存儲設備(可以是個完整的主機,也可以是部分),它考慮的是數據怎麼分佈到不同磁盤。
- NAS使用的協議是控制文件的(即:對文件的讀寫等);SAN使用的協議是控制存儲空間的(即:把多長的一串二進制寫到某個地址)
如圖,對NAS、SAN、DAS的組成協議進行了劃分,從這裏也能很清晰的看出他們之間的差別。
NAS:涉及SMB協議、NFS協議,都是網絡文件系統的協議。
SAN:有FC、iSCSI、AOE,都是網絡數據傳輸協議。
DAS:有PATA、SATA、SAS等,主要是磁盤數據傳輸協議。
從DAS到SAN,在到NAS,在不同層面對存儲方案進行的補充,也可以看到一種從低級到高級的發展趨勢。而現在我們常看到一些分佈式文件系統(如hadoop等)、數據庫的sharding等,從存儲的角度來說,則是在OS層面(應用)對數據進行存儲。從這也能看到一種技術發展的趨勢。
跑在以太網上的SAN
SAN網絡並不是只能使用光纖和光纖協議,當初之所以使用FC,傳輸效率是一個很大的問題,但是以太網發展到今天被不斷的完善、加強,帶寬的問題也被不斷的解決。因此,以太網上的SAN或許會成爲一個趨勢。
- FCIP
如圖兩個FC的SAN網絡,通過FCIP實現了兩個SAN網絡數據在IP網絡上的傳輸。這個時候SAN網絡還是以FC協議爲基礎,還是使用光纖。
- iFCP
通過iFCP方式,SAN網絡由FC的SAN網絡演變爲IP SAN網絡,整個SAN網絡都基於了IP方式。但是主機和存儲直接使用的還是FC協議。只是在接入SAN網絡的時候通過iFCP進行了轉換
- iSCSI
iSCSI是比較主流的IP SAN的提供方式,而且其效率也得到了認可。
對於iSCSI,最重要的一點就是SCSI協議。SCSI(Small Computer Systems Interface)協議是計算機內部的一個通用協議。是一組標準集,它定義了與大量設備(主要是與存儲相關的設備)通信所需的接口和協議。如圖,SCSI爲blockdevice drivers之下。
從SCIS的分層來看,共分三層:
高層:提供了與OS各種設備之間的接口,實現把OS如:Linux的VFS請求轉換爲SCSI請求
中間層:實現高層和底層之間的轉換,類似一個協議網關。
底層:完成於具體物理設備之間的交互,實現真正的數據處理。