SDS之HCI系列 分布式塊儲存的引擎如何設計?

2021-08-28 20:08:56 字數 1503 閱讀 8254

這個系列的第二篇,著重討論儲存引擎的需求、思考和設計,作者是smartx cto 張凱

。因為我們客戶的應用場景都大部分是核心的應用,資料可靠是要絕對保證的,沒有任何妥協的空間。

,目前在萬兆網路和 ssd,包括 nvme ssd 都已經非常普及。隨著硬體的速度越來越快,效能的瓶頸會從硬體轉移到軟體。尤其對於儲存引擎來說,效能至關重要。

。我們希望每乙個 cpu 指令都不被浪費。我們追求用最少的 cpu 指令完成一次 io 操作。這背後的原因是,儲存硬體裝置越來越快,目前最快的儲存已經可以做到單次訪問只需要 10 納秒。而如果程式中加一次鎖,做一次上下文切換,可能幾百個納秒就過去了。如果不做到高效的話,目前的 cpu 可能完全無法發揮出 ssd 的效能。除了高效的使用 cpu 以外,我們也要高效的使用記憶體資源,網路頻寬資源。同時,由於目前相同容量的 ssd 的**還高於 hdd 的**,所以我們也盡可能的節省磁碟空間的占用,通過利用壓縮,去重等技術,提高 ssd 的空間使用效率。

,而且要易於公升級。對於軟體工程師來說,50% 以上的工作時間都是在做 debug,而對儲存軟體工程師來說,這個比例可能更高。我們希望做乙個非常易於 debug 的軟體產品,如果發現問題,可以快速的定位並修復。公升級也是一樣,現在軟體的迭代速度越來越快,我們希望軟體可以方便的易於公升級,這樣我們可以讓使用者更快的使用上新版本的軟體,享受到新版本的功能,以及效能的優化。

。,檔案系統所提供的功能遠遠多於儲存引擎的需求。例如檔案系統提供的 acl 功能,attribute 功能,多級目錄樹功能,這些功能對於乙個專用的儲存引擎來說,都是不需要的。這些額外的功能經常會產生一些 performance overhead,尤其是一些全域性鎖,對效能影響非常嚴重。

,大部分檔案系統在設計的時候,都是面向單一磁碟的設計方式,而不是面向多塊磁碟的。而一般儲存伺服器上都會部署 10 塊,甚至更多的磁碟,而且有可能是 ssd,有可能是 hdd,也可能是混合部署。

,很多檔案系統在非同步 io 上支援的並不好,儘管支援非同步 io 的介面,但實際使用過程中,偶爾還是會有阻塞的情況發生,這也是檔案系統裡乙個非常不好的地方。

smartx 於 2013 年成立,是乙個以技術為主導的公司,目前主要專注於分布式儲存及虛擬化這個兩個領域。我們的產品均為自己研發,目前已經執行在數千台物理伺服器上,儲存了數十 pb 的資料。smartx 跟國內主流的硬體服務商、雲服務商都有合作,我們的產品已經服務了包括公有雲、私有雲以及金融業、製造業等核心領域的關鍵業務,其中也包括核心應用和核心資料庫等應用場景。

【編者peter ye按】

歡迎smartx的投稿。

談談儲存系統開發

乙個投資顧問兼研發老兵(raid排程演算法博士)的儲存手記

【原創】linda儲存手記之二

【原創】linda儲存手記之三

【原創】linda儲存手記之四:剖析儲存效能之延遲

【原創】linda儲存手記之五:說說support那些事

中國hci市場38家列表 & 【原創】linda儲存手記之六

讀原文

分布式儲存

塊儲存,檔案儲存,物件儲存區別 分布式儲存的應用場景相對於其儲存介面,現在流行分為三種 物件儲存 也就是通常意義的鍵值儲存,其介面就是簡單的get put del和其他擴充套件,如七牛 又拍 swift s3 塊儲存 這種介面通常以qemu driver或者kernel module的方式存在,這種...

分布式儲存

普通儲存 das 直連式儲存。nas 連線式儲存。san 儲存網路。大檔案分布儲存 gfs google file system google檔案系統 hdfs hadoop distributed file system hadoop分布式檔案系統 小檔案分布儲存 adfs ali distrib...

分布式儲存技術

分布式儲存技術 分布式儲存概念 與目前常見的集中式儲存技術不同,分布式儲存技術並不是將資料儲存在某個或多個特定的節點上,而是通過網路使用企業中的每台機器上的磁碟空間,並將這些分散的儲存資源構成乙個虛擬的儲存裝置,資料分散的儲存在企業的各個角落。結構化資料的儲存及應用所謂結構化資料是一種使用者定義的資...