請問阿里云云存儲(chǔ)網(wǎng)關(guān)緩存工作原理是什么?
云存儲(chǔ)網(wǎng)關(guān)支持通過傳統(tǒng)的文件協(xié)議(SMB/NFS)來訪問OSS Bucket里面的數(shù)據(jù),并能夠通過緩存技術(shù)將用戶頻繁訪問的熱點(diǎn)數(shù)據(jù)保留在網(wǎng)關(guān)側(cè)的緩存盤里,從而提供給用戶更好的訪問體驗(yàn)。使得用戶在享受云上海量OSS存儲(chǔ)空間的同時(shí),還兼具本地的高速訪問性能。下面是阿里云文件網(wǎng)關(guān)的架構(gòu)圖。
文件網(wǎng)關(guān)支持緩存模式和復(fù)制模式兩種模式,絕大部分用戶使用的應(yīng)該都是緩存模式。緩存模式是指緩存盤的數(shù)據(jù)到一定比例之后,文件網(wǎng)關(guān)會(huì)自動(dòng)淘汰那些訪問不頻繁的數(shù)據(jù)。在這種模式下,固定容量的緩存盤可以管理遠(yuǎn)遠(yuǎn)大于緩存盤實(shí)際容量的OSS Bucket。復(fù)制模式則不同,數(shù)據(jù)在網(wǎng)關(guān)側(cè)和OSS Bucket里面是1:1的,所以網(wǎng)關(guān)不會(huì)去做數(shù)據(jù)的淘汰,一定容量的緩存盤理論上只能管理對應(yīng)于緩存盤容量的OSS Bucket。復(fù)制模式針對的場景主要是OSS Bucket總數(shù)據(jù)量基本不會(huì)增長且總數(shù)據(jù)量不是特別大,同時(shí)希望將所有數(shù)據(jù)都保持在網(wǎng)關(guān)共享里加速訪問。不過這種場景畢竟在少數(shù),絕大多數(shù)用戶會(huì)選擇緩存模式以應(yīng)對日后OSS Bucket里面的數(shù)據(jù)增長。
在緩存模式下,緩存盤的數(shù)據(jù)會(huì)在60%滿的時(shí)候觸發(fā)淘汰直到實(shí)際數(shù)據(jù)量落到60%以下,從而保證永遠(yuǎn)有足夠的緩存容量面對新的數(shù)據(jù)寫入。那么淘汰的策略是如何的呢,如何決定哪些數(shù)據(jù)是可以淘汰的呢?文件網(wǎng)關(guān)淘汰的實(shí)際上是已經(jīng)同步到OSS Bucket里面的文件,也就是說對某個(gè)文件的最后一次修改應(yīng)用到網(wǎng)關(guān)的SMB或者NFS共享之后,并且網(wǎng)關(guān)已經(jīng)將這個(gè)文件上傳到OSS Bucket里面,那么這個(gè)文件就是可以淘汰的。如果用戶還在持續(xù)的對某個(gè)文件進(jìn)行寫入,這個(gè)文件是不會(huì)被選為一個(gè)淘汰的對象的。所以用戶如果同時(shí)打開多個(gè)文件進(jìn)行寫入,緩存盤的容量就應(yīng)該比同時(shí)在寫的所有文件的總?cè)萘恳螅駝t就有可能導(dǎo)致數(shù)據(jù)來不及淘汰而造成寫入錯(cuò)誤?。?!
在復(fù)制模式下,因?yàn)閿?shù)據(jù)不會(huì)發(fā)生淘汰,相對來說就簡單很多。緩存盤的容量比OSS Bucket里面的總數(shù)據(jù)大就可以,這種模式注定它不可能管理特別大的數(shù)據(jù)量,因?yàn)楫?dāng)前支持的緩存盤的最大容量32TB。所以除非對復(fù)制模式有強(qiáng)需求,還是推薦使用緩存模式,相對來說更加靈活。
另外文件網(wǎng)關(guān)會(huì)預(yù)留一部分緩存盤空間存儲(chǔ)元數(shù)據(jù),一般會(huì)預(yù)留20%。這部分元數(shù)據(jù)主要是用來存儲(chǔ)單個(gè)文件的元數(shù)據(jù),包括大小,修改時(shí)間等等。所以即使某個(gè)文件的數(shù)據(jù)被淘汰之后,網(wǎng)關(guān)還是存儲(chǔ)了一個(gè)樁文件在元數(shù)據(jù)里,這樣用戶從客戶端進(jìn)行文件夾瀏覽的時(shí)候,還是能夠看到數(shù)據(jù)被淘汰掉的這個(gè)文件,給用戶一致的體驗(yàn)。用戶如果試圖讀取這個(gè)文件內(nèi)容,網(wǎng)關(guān)會(huì)負(fù)責(zé)將數(shù)據(jù)再次從OSS Bucket里獲取到緩存盤里面。這部分元數(shù)據(jù)空間關(guān)系到當(dāng)前共享可以支持的最大文件數(shù)目,畢竟40GB的緩存盤的元數(shù)據(jù)空間肯定低于50GB的緩存盤的元數(shù)據(jù)空間。一般來說100G的緩存盤已經(jīng)可以支持到1000萬文件了。