一文詳解資料儲存那些事兒
按照儲存系統的 架構來講,儲存系統可以簡單的劃分成 分散式儲存系統和 非分散式的儲存系統(也有用 集中式儲存系統來稱呼那些傳統的不能橫向擴充套件的外部儲存系統)。
分散式儲存 vs. 集中式儲存
集中式儲存系統
最早的企業級外部儲存系統多數是雙控制高可用架構,例如典型的SAN磁碟陣列和早期的企業級NAS。集中式儲存系統除了具備 資料高可靠性和高可用特性以外,還有 資料通路的訪問響應延遲相對較低的優點。但是 缺點是隨著使用者容量和效能的需求增加,擴充套件能力有限。
分散式儲存系統
與之對應的是分散式儲存系統,除了依舊需要以各種設計保證資料的高可靠和高可用以外,優點就是 可以透明的橫向擴充套件 ,在擴充套件容量的同時可以近線性的提升儲存系統的吞吐。
儲存系統怎麼選, 還要看應用場景
看起來分散式儲存系統很完美,但通常情況下,對外提供工業標準協議資料訪問時(FC、iSCSI、NFS、CIFS、S3), 分散式儲存系統的資料訪問響應延遲, 要比傳統的集中式儲存系統高。
無論是SAN的FC、iSCSI,還是NAS的NFS、CIFS,資料訪問請求需要從一個訪問接入點進入儲存系統。在分散式儲存系統裡,欲訪問的資料不能夠保證一定在訪問接入點上,因此需要透過分散式儲存系統的節點間互聯轉發資料請求,網路上的請求和資料轉發會帶來一定程度的延遲。所以 目前在核心業務對資料訪問延遲有苛刻要求的企業資料應用,集中式儲存系統還保持著一定優勢。
最近總有人問,軟體定義儲存(SDS)是什麼?網上有多個版本的演繹和解釋,到底 以 誰的定義和概念為準呢?
其實大可不必追求這些概念的精確性,因為 很多新名詞的誕生本身就不一定有嚴格的學術定義,很有可能是為了行業或者廠家的商業宣傳目的。與 軟體定義儲存對應的是軟硬體一體的儲存系統,軟體定義儲存在很多場景下會與分散式儲存聯絡在一起,但是他們之間並沒有必然的關聯。
軟體定義儲存 vs. 軟硬一體化儲存系統
分散式儲存不一定被廠商歸類為軟體定義儲存(比如2018年之前的EMC ISILON和XtremeIO); 軟體定義儲存也不一定是分散式的(比如FreeNAS和早期的Nexenta),只能說 多數軟體定義儲存系統都是分散式架構的。
另外,從很久以前, 企業級儲存系統其實核心和靈魂就是軟體,比如EMC的ISILON/VNX/VMAX這些軟硬一體的企業級儲存系統,採用的也都是X86架構的硬體,而真正的核心是內部的系統軟體。
SDS 到底意味著什麼,又帶來了什麼?
我們認為軟體定義帶來的是一種 新的產品形態和 產品交付模式。軟體定義儲存是有機會允許廠商以純軟體方式交付給客戶,搭載客戶或者第三方ODM廠商的硬體構成完整的儲存系統,這是我們能看到的唯一不同。
聽起來軟體定義儲存很性感,但是事情不是這麼簡單。傳統的企業級儲存系統產品一直以來被認為是FISH(Fully Integrated Software and Hardware),採用 高度整合的軟體和硬體以確保產品的高可靠、高可用和高效能。
軟體定義儲存,真的可以忽略硬體嗎?
其實不然,雖然很多軟體定義儲存採用了各種技術(如副本、糾刪碼)不依賴特殊硬體而儘可能的保證資料可靠和高可用,但是 並不意味著對硬體毫無要求。
軟體定義儲存為了保證硬體的相容性需要定義清晰的CPU要求、記憶體大小、HBA型號甚至硬碟規範,這還遠遠不夠。我們曾經遇到過 批次儲存伺服器的BIOS預設設定變化和HBA韌體版本導致的整體儲存系統行為不符合預期,還曾經因為一批超過300塊硬碟韌體的問題,導致系統整體效能只有預期的1/3。
軟體定義儲存雖然提供了一種新的產品交付模式,但是如果 控制不好硬體相容性、質量和韌體的版本,就很難達到企業級資料應用的標準,只能是SDS廠商和技術愛好者自娛自樂的 “心頭好”。
詳解塊儲存、檔案儲存和物件儲存
塊儲存
塊儲存有很多名字(如SAN、ServerSAN、DAS),對客戶端暴露出來的是“盤”或者“邏輯盤”,資料訪問的語義比較簡單,主要是對“盤”按照地址偏移訪問資料,不能夠被多個客戶端同時共享訪問,常用的訪問協議包括FC、iSCSI、NBD、RBD等, 優勢應用場景是儲存結構化資料 (資料庫), 以及作為虛擬機器或者容器的後端持久化儲存。
檔案儲存
檔案儲存系統也有不少稱呼(如NAS,並行檔案系統),它對客戶端暴露出來的是一個資料夾。檔案儲存系統提供了豐富的語義, 允許多個客戶端共享資料,可隨時修改,隨機訪問資料,並且提供了 “圖”結構的名字空間組織方式(很多人認為檔案系統是個樹形結構,其實因為hardlink的存在,一個檔案其實可以同屬於不同的目錄,因此是個圖結構)。檔案儲存系統常用的訪問協議包括NFS、CIFS和類POSIX的私有客戶端協議, 優勢應用場景是資料流計算、高效能運算、機器學習深度學習、影視特效處理、影片編輯等。
物件儲存
物件儲存系統提供了一個平坦的名字空間,對客戶端暴露出來的是“桶”。物件儲存系統語義比較簡單,資料可以被多客戶端共享,但是不能被修改,也無法隨機訪問物件資料的內容,標準的訪問協議有S3和Swift。 物件儲存的優勢應用場景是那些不經常修改,但是被多次訪問的資料應用場景 ,例如網際網路APP、歸檔備份、以及音影片分享。
雲端計算時代 ,物件儲存的網紅人設是否堅挺?
檔案儲存和物件儲存因為都可以在多個客戶端之間分享資料,所以有很多傳言物件儲存會完全取代檔案儲存,檔案儲存是old school, 但事實上,這是極大的誤解和誤導
檔案儲存和物件儲存的差別在於語義, 物件儲存不可能完全取代檔案儲存。從上面的描述中就可以看出來:
檔案儲存:檔案儲存可以隨機訪問,可以隨時修改,可以利用目錄和硬連結構建資料之間的“圖”包含關係。
物件儲存:物件儲存卻不善於修改,不能隨機訪問,平坦的名字空間要藉助於其他的資料管理方式才能構建簡單的資料集合和資料關係。
物件儲存,還是檔案儲存該怎麼選 ?
用物件儲存還是檔案儲存系統取決於資料應用對語義的需求。如果物件儲存的語義就可以滿足應用的需要,就不需要檔案儲存,但是反之,物件儲存語義滿足不了應用需要,就只能用檔案儲存系統。
檔案儲存系統無論是標準的NAS還是並行檔案系統,都在客戶端提供了快取系統和保證一定程度的一致性,而物件儲存系統基本上沒有提供任何標準的客戶端快取系統,因此 在對效能有嚴苛要求的資料共享和交換應用場景,物件儲存不適用也無法取代檔案儲存
在講到按照語義劃分的3種儲存型別,即 檔案儲存、 物件儲存、 塊儲存。經常有人會跟另一組概念混淆在一起, 檔案系統, 物件系統和 塊裝置。那麼他們之間的關係是什麼呢?
檔案系統 vs. 檔案儲存
檔案系統不一定是檔案儲存, 因為檔案系統不一定對外提供多客戶端檔案共享服務。廣義的檔案系統是隻要能夠解決名字空間或者地址空間的儲存子系統都叫檔案系統。比如EMC VNX/Unity底層的檔案系統CBFS(UFS64),VMWare的VMFS或者CEPH的RBD,都稱之為檔案系統,但是並沒有對外提供檔案共享服務,因此是廣義的檔案系統但不是檔案儲存系統。
物件系統 vs. 物件儲存
物件系統是很多檔案系統和塊儲存系統的底層抽象,但是並不一定對外提供物件資料共享,因此不一定是物件儲存系統。比如Lustre的OST、CEPH的Rados、Cortx的Motr都是物件系統,但是並不能直接對外提供S3或者Swift協議的物件資料訪問,因此不是物件儲存系統。
相反,在物件系統之上可以構建出檔案儲存,比如在Lustre 檔案系統就是基於底層物件OSD,CephFS是基於Rados物件系統的檔案儲存;除此之外,也可以利用物件系統構建塊儲存,例如Ceph的RBD就是基於Rados的塊儲存。
塊裝置 vs. 塊儲存
基礎的塊裝置HDD/SSD是 所有儲存系統的基礎, 但是塊儲存系統底層也可以是用物件系統或者檔案系統來模擬的虛擬/邏輯塊裝置,正如之上講過的Ceph RBD的底層是Rados物件系統,ZFS和ZVOL底層的DMU也是個物件系統,EMC VNX的LUN塊裝置是檔案系統CBFS(UFS64)上的一個檔案。
還有更多關於資料儲存、大資料方面的,歡迎關注我的公眾號:新爺話資料
歡迎更多的人與我一起討論
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017157/viewspace-2888833/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料倉儲上雲那些事兒
- OpenTSDB 資料儲存詳解
- MySQL資料遷移那些事兒MySql
- 詳解Android資料儲存技術Android
- PHP那些事兒PHP
- Redis那些事兒Redis
- babel那些事兒Babel
- 一起聊聊資料標註那些事兒
- 【大資料】科普一下大資料的那些事兒大資料
- 對話戴爾科技集團劉志洪 聊一聊非結構化資料儲存的那些事兒
- 詳解資料庫儲存的資料結構LSM Tree資料庫資料結構
- https的那些事兒HTTP
- webpack的那些事兒Web
- EMC 儲存資料恢復案例詳解【資料恢復方案】資料恢復
- 資料儲存(歸檔解檔,沙河儲存)
- MySQL優化那些事兒MySql優化
- 網路安全那些事兒
- Eval家族的那些事兒
- 說說RCE那些事兒
- C語言那些事兒C語言
- PHP 閉包那些事兒PHP
- 字元編碼那些事兒字元
- openGauss賬本資料庫,你不知道的那些事兒資料庫
- 資料壓縮傳輸與斷點續傳那些事兒斷點
- Mysql的那些事兒(部分涉及資料庫知識總結)MySql資料庫
- 文字渲染的那些事(一)字型是如何儲存的?
- OceanBase 儲存引擎詳解儲存引擎
- 趣味科普丨一文讀懂雲伺服器的那些事兒伺服器
- 雲原生java的那些事兒Java
- util.promisify 的那些事兒
- 「前端那些事兒」④ 效能監控前端
- iOS 截圖的那些事兒iOS
- HTTP 快取的那些事兒HTTP快取
- 法線貼圖那些事兒
- 漏洞檢測的那些事兒
- 關於 sudo 的那些事兒
- 程式碼重構那些事兒
- Node檔案操作那些事兒