https://yq.aliyun.com/articles/747224數據庫
雲存儲網關支持經過傳統的文件協議(SMB/NFS)來訪問OSS Bucket裏面的數據,並可以經過緩存技術將用戶頻繁訪問的熱點數據保留在網關側的緩存盤裏,從而提供給用戶更好的訪問體驗。使得用戶在享受雲上海量OSS存儲空間的同時,還兼具本地的高速訪問性能。下面是阿里雲文件網關的架構圖。緩存
用戶在使用阿里云云存儲網關時,常常會碰到一些緩存相關的問題,好比在建立共享時如何選擇緩存盤的容量和類型,好比緩存的數據淘汰策略是什麼等。本文接下來的內容將結合緩存盤的工做原理來解開這些困惑。雲存儲網關根據支持的協議的不一樣,分爲支持NFS/SMB文件協議的文件網關和支持iSCSI協議的塊網關。它們二者的緩存工做機制是不同的,本文主要針對的文件網關。架構
文件網關支持緩存模式和複製模式兩種模式,絕大部分用戶使用的應該都是緩存模式。緩存模式是指緩存盤的數據到必定比例以後,文件網關會自動淘汰那些訪問不頻繁的數據。在這種模式下,固定容量的緩存盤能夠管理遠遠大於緩存盤實際容量的OSS Bucket。複製模式則不一樣,數據在網關側和OSS Bucket裏面是1:1的,因此網關不會去作數據的淘汰,必定容量的緩存盤理論上只能管理對應於緩存盤容量的OSS Bucket。複製模式針對的場景主要是OSS Bucket總數據量基本不會增加且總數據量不是特別大,同時但願將全部數據都保持在網關共享里加速訪問。不過這種場景畢竟在少數,絕大多數用戶會選擇緩存模式以應對往後OSS Bucket裏面的數據增加。併發
在緩存模式下,緩存盤的數據會在60%滿的時候觸發淘汰直到實際數據量落到60%如下,從而保證永遠有足夠的緩存容量面對新的數據寫入。那麼淘汰的策略是如何的呢,如何決定哪些數據是能夠淘汰的呢?文件網關淘汰的其實是已經同步到OSS Bucket裏面的文件,也就是說對某個文件的最後一次修改應用到網關的SMB或者NFS共享以後,而且網關已經將這個文件上傳到OSS Bucket裏面,那麼這個文件就是能夠淘汰的。若是用戶還在持續的對某個文件進行寫入,這個文件是不會被選爲一個淘汰的對象的。因此用戶若是同時打開多個文件進行寫入,緩存盤的容量就應該比同時在寫的全部文件的總容量要大,不然就有可能致使數據來不及淘汰而形成寫入錯誤!!!性能
在複製模式下,由於數據不會發生淘汰,相對來講就簡單不少。緩存盤的容量比OSS Bucket裏面的總數據大就能夠,這種模式註定它不可能管理特別大的數據量,由於當前支持的緩存盤的最大容量32TB。因此除非對複製模式有強需求,仍是推薦使用緩存模式,相對來講更加靈活。阿里雲
另外文件網關會預留一部分緩存盤空間存儲元數據,通常會預留20%。這部分元數據主要是用來存儲單個文件的元數據,包括大小,修改時間等等。因此即便某個文件的數據被淘汰以後,網關仍是存儲了一個樁文件在元數據裏,這樣用戶從客戶端進行文件夾瀏覽的時候,仍是可以看到數據被淘汰掉的這個文件,給用戶一致的體驗。用戶若是試圖讀取這個文件內容,網關會負責將數據再次從OSS Bucket裏獲取到緩存盤裏面。這部分元數據空間關係到當前共享能夠支持的最大文件數目,畢竟40GB的緩存盤的元數據空間確定低於50GB的緩存盤的元數據空間。通常來講100G的緩存盤已經能夠支持到1000萬文件了。spa
瞭解緩存的工做原理以後,下面這些其實都比較好理解了。3d
若是你的業務對帶寬和IOPS的要求比較高,好比跑的數據庫之類的對時延要求比較高的業務,那麼可能SSD類型的緩存盤更適合,由於它擁有更好的帶寬和IOPS。SSD類型的緩存盤的帶寬和IOPS都會比高效雲盤更優秀,SSD緩存的最高IOPS能夠到25000,高效雲盤緩存是5000,帶寬方面SSD緩存最高能夠到300MB,高效雲盤緩存的帶寬最高能夠到140MB。對象
容量的選擇主要和併發數和最大文件大小有關。緩存盤的可用容量(須要扣除元數據空間)須要大於併發數和最大文件大小的乘積,這樣纔不會形成數據寫入錯誤。固然越大的緩存盤本地可以緩存的熱數據量也就越多,整體來講性能會更好。因此若是但願可以得到比較好的性能,緩存盤仍是要設置的稍微大一些。blog
雲存儲網關的控制檯如今也提供了很是方便的計算器,根據用戶輸入的IOPS和帶寬需求等能夠做出合適的緩存容量和類型的推薦。結合咱們前面講的對照看下圖中每個條目,相信很好理解。
本文介紹了雲存儲網關文件網關的緩存工做原理,包括緩存盤元數據空間管理,數據淘汰策略等,旨在解答用戶在選擇和使用緩存盤時遇到的一些問題。