1144
支付寶
突破吞吐限製,多NAS性能聚合方案,數據上傳及讀寫
阿裏雲文件存儲(Network Attached Storage,簡稱NAS)是麵向阿裏雲ECS實例、HPC和Docker的文件存儲服務,提供標準的文件訪問協議,用戶無需對現有應用做任何修改,即可使用具備無限容量及性能擴展、單一命名空間、多共享、高可靠和高可用等特性的分布式文件係統。
NAS的吞吐性能和存儲容量/存儲包大小相關,在大多數情況下,客戶數據量不到1TB,單一容量型NAS文件係統所能達到的吞吐大約為120MB/s左右,具體數據如下圖:
在有些場景下麵,客戶需要將數據從本地存儲陣列/雲存儲陣列/雲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/mnt1/作為目錄的入口就可以了。多線程並發讀的情況,吞吐可以充分發揮4個NAS的優勢,理論上也可以達到400MB/s的吞吐。在寫的情況下,如果創建新的目錄會創建在父目錄所在的NAS上,寫入速度取決於數據目錄的形式,但至少會比單個NAS性能要好。
以上就是利用多個NAS聚合產生更高IO性能的一種方式。分布式上傳工具和rebuild 目錄的工具目前均在內測階段,如有需要,請聯係釘釘(王俊俏)。
最後更新:2017-11-29 14:35:08