天天看點

突破吞吐限制,多NAS性能聚合方案,資料上傳及讀寫

阿裡雲檔案存儲(Network Attached Storage,簡稱NAS)是面向阿裡雲ECS執行個體、HPC和Docker的檔案存儲服務,提供标準的檔案通路協定,使用者無需對現有應用做任何修改,即可使用具備無限容量及性能擴充、單一命名空間、多共享、高可靠和高可用等特性的分布式檔案系統。

NAS的吞吐性能和存儲容量/存儲包大小相關,在大多數情況下,客戶資料量不到1TB,單一容量型NAS檔案系統所能達到的吞吐大約為120MB/s左右,具體資料如下圖:

突破吞吐限制,多NAS性能聚合方案,資料上傳及讀寫

在有些場景下面,客戶需要将資料從本地存儲陣列/雲存儲陣列/雲OSS上遷移到NAS,并對這些資料進行讀寫和後續計算。那麼如何在不花費更多錢(購買更大存儲包)的情況下,擷取更高的資料上傳速度和讀寫性能呢?本文将介紹其中一種方法:将源資料遷移到多個NAS,并用軟連結組裝上傳後的檔案目錄,以讓多個NAS從邏輯上形成和源資料一緻的結構。經測試,在4個NAS上的資料上傳吞吐能力達到440MB/s。

第一部分,如何将本地存儲陣列(或其他高吞吐裝置)中目錄/data/下的所有資料上傳到NAS?

使用NAS分布式上傳工具nasimport2.0(目前尚未釋出到公有雲頁面,如有需要請釘釘聯系王俊俏)。下面對工具作簡要介紹:

前提條件:一台(或若幹台)伺服器,可以同時通路源資料和NAS檔案系統,打通ssh通道。建立若幹個nas(比如4個)挂載上, 目錄為/nas/mnt1,/nas/mnt2,/nas/mnt3/,/nas/mnt4/。

工具原理:工具采用master-slave模式,一台機器上master啟動後在本機(或者配置好的其他機器上)啟動若幹個slave,然後掃描源資料目錄下面所有的檔案,在檔案級别将若幹檔案作為一個批次,每個批次作為一個job分發給slave分别上傳。所有job完成之後,源目錄/data/下的所有檔案,都分布在了4個nas上,也就是/nas/mnt1,/nas/mnt2,/nas/mnt3/,/nas/mnt4/上面。之後把這四個目錄下面的所有檔案軟連結到/nas/mnt1/下面,使得從/nas/mnt1/入口可以通路到所有的原始檔案。

連結前的目錄結構比如是這樣:

突破吞吐限制,多NAS性能聚合方案,資料上傳及讀寫

連結後:

突破吞吐限制,多NAS性能聚合方案,資料上傳及讀寫

第二部分:資料上傳到NAS之後的讀寫。在一些場景下,上傳後的資料直接作為原始資料,會被計算程式多次讀取,這樣的話,直接把/nas/mnt1/作為目錄的入口就可以了。多線程并發讀的情況,吞吐可以充分發揮4個NAS的優勢,理論上也可以達到400MB/s的吞吐。在寫的情況下,如果建立新的目錄會建立在父目錄所在的NAS上,寫入速度取決于資料目錄的形式,但至少會比單個NAS性能要好。

以上就是利用多個NAS聚合産生更高IO性能的一種方式。分布式上傳工具和rebuild 目錄的工具目前均在内測階段,如有需要,請聯系釘釘(王俊俏)。