閃存SSD基本成為當(dāng)前IT基礎(chǔ)設(shè)施中必不可少的元素。高IOPS、低延時(shí)和高帶寬是SSD的顯著特點(diǎn),單塊SSD的IOPS可以達(dá)到數(shù)萬(wàn)甚至百萬(wàn)之多,帶寬達(dá)到數(shù)GB/s,而延遲僅為幾十微秒,性能完全可以和高端存儲(chǔ)相媲美。SSD有效消除了計(jì)算和存儲(chǔ)的巨大鴻溝,解決了I/O性能瓶頸問題,尤其是I/O隨機(jī)讀寫能力。
在計(jì)算機(jī)系統(tǒng)中,CPU中有L1,L2、甚至有L3 Cache;Linux有Page Cache,MySQL有BufferCache/QueryCache;IO系統(tǒng)中RAID卡/磁盤也有Cache;在大型互聯(lián)網(wǎng)系統(tǒng)中,數(shù)據(jù)庫(kù)前面一般也都有一層MemCache。Cache是容量與性能之間取得平衡的結(jié)果,以更低的成本,獲得更高的收益,是系統(tǒng)設(shè)計(jì)應(yīng)遵循的原則。
目前閃存的價(jià)格已經(jīng)逼近SAS硬盤,但相對(duì)SATA硬盤還是要高于許多,迫于成本因素,全SSD存儲(chǔ)方案應(yīng)用仍然較少,多數(shù)應(yīng)用以SSD混合存儲(chǔ)配置為主,從而獲得較高的性價(jià)比。通常情況下,我們假設(shè)熱點(diǎn)數(shù)據(jù)占10-20%,配置相應(yīng)比例的SSD存儲(chǔ),采用Cache加速或Tier分層模式將熱點(diǎn)數(shù)據(jù)存儲(chǔ)在SSD存儲(chǔ)中,一旦熱點(diǎn)數(shù)據(jù)超過預(yù)先設(shè)置閾值或觸發(fā)遷移策略,則按相應(yīng)淘汰算法將較冷數(shù)據(jù)遷回HDD磁盤存儲(chǔ),從而期望在性能和容量方面達(dá)到整體平衡。
當(dāng)然混合存儲(chǔ)也并非完美。SSD擅長(zhǎng)的隨機(jī)讀寫,帶寬并不是它的強(qiáng)項(xiàng),對(duì)于帶寬型應(yīng)用,SSD對(duì)性能并沒有太大幫助,HDD存儲(chǔ)也容易堆疊起來。關(guān)于熱點(diǎn)數(shù)據(jù)占比,這個(gè)并不好估計(jì),如果SSD配置不足,性能會(huì)變得更差,SSD被寫滿時(shí)性能可能會(huì)出現(xiàn)較大的波動(dòng)。因此,實(shí)際應(yīng)用中要結(jié)合I/O特點(diǎn)設(shè)計(jì)合理的混合存儲(chǔ)模式,如果實(shí)在不合適,還是推薦使用全SSD存儲(chǔ),或者人工將應(yīng)用負(fù)載分配到SSD或HDD存儲(chǔ)中。
MaxIO簡(jiǎn)介MaxIO是一款SSD智能緩存加速軟件,利用I/O訪問的局部性原理,采用SSD作為傳統(tǒng)塊設(shè)備的緩存,充分利用SSD的I/O特點(diǎn)和性能優(yōu)勢(shì),專門針對(duì)慢速的HDD塊存儲(chǔ)進(jìn)行高效加速。MaxIO幾乎可以為任何塊設(shè)備創(chuàng)建緩存并提升性能,包括物理磁盤、基于RAID的DAS設(shè)備、SAN卷、Device Mapper卷,甚至軟RAID。
MaxIO采用了獨(dú)特且高效的緩存技術(shù)來加速企業(yè)級(jí)存儲(chǔ)應(yīng)用,對(duì)I/O進(jìn)行智能分析,根據(jù)加速設(shè)備SSD的大小,將更多更常用的熱點(diǎn)數(shù)據(jù)放置于高速SSD介質(zhì)中,有效縮短應(yīng)用等待數(shù)據(jù)的時(shí)間。MaxIO支持多種靈活的加速模式,針對(duì)不同的業(yè)務(wù)場(chǎng)景,可發(fā)揮不同的加速效果,包括透寫(Write Through)、回寫(Write Back)和只讀(Read Only或Write Around)三種加速模式。
MaxIO可以部署在任意X86硬件上,包括服務(wù)器和軟件定義存儲(chǔ)系統(tǒng),因此可以在存儲(chǔ)層和計(jì)算層靈活實(shí)現(xiàn)加速,且僅占用極少的系統(tǒng)CPU和內(nèi)存資源,能夠采用SSD為更多的應(yīng)用提供I/O性能加速。MaxIO采用透明加速配置,可在線增加或刪除加速模塊,應(yīng)用無需做任何配置更改,因此對(duì)企業(yè)應(yīng)用場(chǎng)景不產(chǎn)生任何干擾。MaxIO具有友好的硬件兼容性,廣泛支持各個(gè)廠商的SATA/SAS/PCIe/NVMe SSD。
MaxIO架構(gòu)
工作原理SSD Cache的基本原理很簡(jiǎn)單(如下圖所示),利用I/O訪問的局部性原理,將熱點(diǎn)數(shù)據(jù)放置在SSD上,下次再次訪問熱點(diǎn)數(shù)據(jù)時(shí),不需要經(jīng)過傳統(tǒng)硬盤的處理,而是直接在SSD上命中,極大的縮短IO響應(yīng)時(shí)間。
SSD Cache的實(shí)現(xiàn)方式有多種,基于Linux內(nèi)核機(jī)制的實(shí)現(xiàn)主要有DM-Cache與IO攔截兩種方式,其中Flashcache是DM-Cache實(shí)現(xiàn)方式的典型代表,而MaxIO采用的是IO攔截實(shí)現(xiàn)方式。值得一提,正是因?yàn)闆]有采用Device Mapper機(jī)制,MaxIO不用創(chuàng)建新的DM設(shè)備,從而可以實(shí)現(xiàn)對(duì)應(yīng)用進(jìn)行靈活的透明加速。
Device mapper是Linux內(nèi)核中提供的一種從邏輯設(shè)備到物理設(shè)備的映射框架機(jī)制,在該機(jī)制下用戶可以很方便地根據(jù)需要制定實(shí)現(xiàn)存儲(chǔ)資源的管理策略。Device mapper在內(nèi)核中是作為一個(gè)塊設(shè)備驅(qū)動(dòng)被注冊(cè)的,它包含mapped device、映射表、target device三個(gè)重要對(duì)象概念。Device mapper本質(zhì)功能就是根據(jù)映射關(guān)系和target driver描述的IO處理規(guī)則,將IO請(qǐng)求從邏輯設(shè)備mapped device轉(zhuǎn)發(fā)相應(yīng)的target device上。DM-Cache正是利用了Device Mapper這一原理。將HDD 磁盤與SSD硬盤作為DM中的Target Device,聚合成為一個(gè)虛擬設(shè)備(Cache設(shè)備),同時(shí)將HDD磁盤與SSD硬盤Block進(jìn)行映射。Dm-Cache根據(jù)映射規(guī)則,可以將對(duì)HDD磁盤的操作轉(zhuǎn)換為對(duì)SSD硬盤的操作,從而實(shí)現(xiàn)將熱點(diǎn)數(shù)據(jù)存儲(chǔ)在SSD中的功能。HDD磁盤對(duì)SSD硬盤Block的映射,可以為簡(jiǎn)單的線性映射,也可以采用Hash映射。
IO攔截Cache實(shí)現(xiàn)的基本原理是對(duì)Linux通用塊層BIO請(qǐng)求進(jìn)行攔截,在Block Layer實(shí)現(xiàn)某些分發(fā)函數(shù)的鉤子函數(shù),同樣需要將磁盤Block與SSD硬盤Block進(jìn)行映射,根據(jù)映射規(guī)則以及操作類型決定是否將磁盤操作轉(zhuǎn)換為對(duì)SSD硬盤的操作。如在write-around模式中,則只需要對(duì)讀操作進(jìn)行處理:根據(jù)映射規(guī)則,首先查看Block是否存在SSD中,如果不存在,則從HDD中讀取,并寫入到SSD中,然后返回;如果已經(jīng)存在SSD中,則直接將讀請(qǐng)求轉(zhuǎn)換為對(duì)SSD映射Block的讀請(qǐng)求。
如上圖軟件架構(gòu)所示,MaxIO緩存引擎主要由三個(gè)核心組件組成:
元數(shù)據(jù)管理引擎:管理內(nèi)存中的元數(shù)據(jù),維護(hù)高速緩存塊映射表;
緩存策略引擎:管理SSD緩存的I/O讀寫和替換策略;
數(shù)據(jù)遷移引擎:管理SSD緩存中的數(shù)據(jù)遷入和遷出;
MaxIO以固定大小的數(shù)據(jù)塊為單位進(jìn)行緩存加速,緩存策略包括只讀(Read-only或Write-around)、寫回(Write-back)和寫穿(Write-through)。數(shù)據(jù)塊存儲(chǔ)在SSD緩存中,直到被緩存的新數(shù)據(jù)塊所替換, 替換策略有LRU、FIFO和Random可供選擇。
MaxIO還包括兩個(gè)重要的子組件:性能分析器和GUI / CLI管理工具。性能分析器跟蹤和分析緩存性能,輸出信息可以幫助管理員監(jiān)控緩存效果和調(diào)整和緩存策略。MaxIO有兩種模式管理工具:可視GUI工具和命令行CLI工具,滿足不同管理員需要和喜好。MaxIO的模式引擎是模塊化的,允許動(dòng)態(tài)創(chuàng)建和變更緩存配置,可以使用CLI或GUI更改緩存策略(Read-only、Write-back和Write-through)和替換策略(FIFO,LRU和Random)。
元數(shù)據(jù)管理MaxIO元數(shù)據(jù)引擎將SSD中的高速緩存集映射到源塊設(shè)備扇區(qū)集合上,每個(gè)高速緩存集為2MB,支持2KB/4KB/8KB緩存塊大小,緩存塊默認(rèn)大小為4KB,每個(gè)緩存集包含512塊。選擇默認(rèn)值4KB,因?yàn)榇蠖鄶?shù)存儲(chǔ)系統(tǒng)的通用I/O塊大小也是4KB。假設(shè)800GB SSD,包含400K個(gè)緩存集(1組=2MB(512*4KB))。MaxIO內(nèi)置了性能分析器可以為選擇緩存塊大小提供參考數(shù)據(jù),性能分析器可以運(yùn)行多次,每次使用不同的塊大小,以確定不同的塊大小對(duì)MaxIO性能的影響,從而根據(jù)實(shí)際應(yīng)用場(chǎng)景選擇合適的塊大小以獲得最佳的性能加速效果。
高速緩存的元數(shù)據(jù)運(yùn)行時(shí)存儲(chǔ)在系統(tǒng)內(nèi)存,以提供高速緩存頁(yè)最快的映射。為了確保這不會(huì)對(duì)應(yīng)用程序的性能造成負(fù)擔(dān),MaxIO已被設(shè)計(jì)為非常高效地使用內(nèi)存頁(yè)。高速緩存所需的內(nèi)存約為高速緩存大小的0.1%,比如800GB高速緩存僅需要占用800MB系統(tǒng)內(nèi)存。元數(shù)據(jù)的副本存儲(chǔ)在緩存SSD中以幫助熱啟動(dòng),當(dāng)高速緩存被禁用時(shí),內(nèi)存中的元數(shù)據(jù)被寫入SSD,使得當(dāng)高速緩存被重新啟用時(shí),其數(shù)據(jù)可立即使用。
緩存策略緩存策略就是SSD高速緩存的I/O操作方式,不同的緩存模式將決定系統(tǒng)的性能。緩存模式描述緩存如何處理從主機(jī)到HDD的讀取和寫入操作,處理器從HDD讀取數(shù)據(jù)塊時(shí),該數(shù)據(jù)的副本被寫入SSD高速緩存。如果高速緩存中存在空塊,則將新塊寫入空塊中的一個(gè);如果高速緩存已滿并且沒有用于該數(shù)據(jù)的空間,則按照設(shè)置的緩存替換策略從高速緩存中驅(qū)逐舊塊,新的塊被寫在被逐出的塊空間上。MaxIO支持三種緩存策略:只讀、透寫、回寫。
只讀(Read-only)
Read-only模式只對(duì)讀操作進(jìn)行緩存,寫操作不緩存。對(duì)于寫請(qǐng)求,寫入數(shù)據(jù)未存在緩存中時(shí),直接寫入HDD,高速緩存將忽略該數(shù)據(jù);如果寫入數(shù)據(jù)在高速緩存中存在,為保證數(shù)據(jù)一致性該高速緩存塊被置為無效。對(duì)于讀操作,如果在SSD中命中則直接返回,未命中則將數(shù)據(jù)復(fù)制到SSD中。這種模式非常適合讀多寫少的場(chǎng)景。只讀模式讀寫流程如上圖所示:
寫流程:寫操作不緩存,則直接寫HDD普通硬盤。即為:寫1;
讀流程:讀流程是需要分為以下2種情況:
(1) 讀的數(shù)據(jù)緩存在SSD設(shè)備中,數(shù)據(jù)可能是之前讀或者寫的數(shù)據(jù)(緩存到SSD中的),此時(shí)可以直接將SSD數(shù)據(jù)返回。流程為讀3;
(2) 讀的數(shù)據(jù)沒有緩存在SSD設(shè)備中,數(shù)據(jù)可能是第一次讀取,也可能是之前讀的數(shù)據(jù)但是已經(jīng)被覆蓋,此時(shí),首先需要將數(shù)據(jù)從磁盤上讀取到SSD中,然后從SSD中將數(shù)據(jù)返回。流程為讀1->讀2->讀3。
透寫(Write-through)
Write-through模式下,對(duì)于讀數(shù)據(jù),全部緩存到高速設(shè)備SSD設(shè)備上;對(duì)于寫操作,也緩存到高速設(shè)備SSD中,同時(shí)也寫入到HDD中。這種模式比較適合讀多寫少,并且寫的數(shù)據(jù)是最近訪問的熱點(diǎn)數(shù)據(jù)場(chǎng)景。這種模式因?yàn)閷懸餐瑫r(shí)寫到HDD中,所以寫的性能得不到加速,但是數(shù)據(jù)最安全。透寫模式讀寫流程如上圖所示:
寫流程:SSD與HDD均需要寫入,所以寫1與寫2操作都是需要的。
讀流程:需要分為以下兩種情況處理
(1) 讀的數(shù)據(jù)緩存在SSD設(shè)備中,數(shù)據(jù)可能是之前讀或者寫的數(shù)據(jù),此時(shí)可以直接將SSD數(shù)據(jù)返回。流程為讀3;
(2) 讀的數(shù)據(jù)沒有緩存在SSD設(shè)備中,數(shù)據(jù)可能是第一次讀取,也可能是之前讀或者寫的數(shù)據(jù)但是已經(jīng)被覆蓋,此時(shí),首先需要將數(shù)據(jù)從磁盤上讀取到SSD中,然后從SSD中將數(shù)據(jù)返回。流程為讀1->讀2->讀3。
回寫(Write-back)
Write-back回寫模式下,讀寫操作都在SSD首先執(zhí)行。寫請(qǐng)求數(shù)據(jù)會(huì)被寫入SSD緩存中,不會(huì)立即寫入HDD,當(dāng)SSD中的臟數(shù)據(jù)(與HDD中不一致的數(shù)據(jù))達(dá)到預(yù)先設(shè)定的閾值,會(huì)將臟數(shù)據(jù)同步到HDD中;讀請(qǐng)求和只讀或透寫模式處理類似。這是三種模式中讀寫性能最高的,因?yàn)閷懖僮髦苯訉懭隨SD而不是HDD,對(duì)剛剛寫入的塊的讀取操作將由SSD提供而不是HDD。透寫模式讀寫流程如上圖所示:
寫流程:寫流程分為以下2種情況:
(1) 寫的數(shù)據(jù)滿足緩存要求,此時(shí)只需要將SSD中的數(shù)據(jù)改寫為最新的數(shù)據(jù)即可。流程為寫2;
(2) 寫的數(shù)據(jù)不滿足一些特定的要求(如不對(duì)齊等情況),此時(shí)則直接將數(shù)據(jù)寫入到HDD普通硬盤中;流程為寫1;
讀流程:讀流程是分為以下2種情況:
(1) 讀的數(shù)據(jù)緩存在SSD設(shè)備中,數(shù)據(jù)可能是之前讀的數(shù)據(jù)(緩存到SSD中的),此時(shí)可以直接將SSD數(shù)據(jù)返回。流程為讀3;
(2) 讀的數(shù)據(jù)沒有緩存在SSD設(shè)備中,數(shù)據(jù)可能是第一次讀取,也可能是之前讀的數(shù)據(jù)但是已經(jīng)被覆蓋,或者是之前寫的數(shù)據(jù)但是被同步到HDD普通硬盤上,此時(shí),首先需要將數(shù)據(jù)從普通磁盤上讀取到SSD中,然后從SSD中將數(shù)據(jù)返回。流程為讀1->讀2->讀3。
在write-back模式中,不得不提及到數(shù)據(jù)回寫的過程。數(shù)據(jù)回寫指的是將SSD中的臟數(shù)據(jù)同步到HDD硬盤中,這個(gè)只有在write-back模式中才有。一般數(shù)據(jù)回寫會(huì)有一些系統(tǒng)參數(shù),如閾值(即臟數(shù)據(jù)達(dá)到一定的比率才會(huì)開始執(zhí)行數(shù)據(jù)回寫);時(shí)效時(shí)間(數(shù)據(jù)超過一定時(shí)間無操作,則可以執(zhí)行數(shù)據(jù)回寫);數(shù)據(jù)回寫的速率(因?yàn)閺腟SD中獎(jiǎng)數(shù)據(jù)寫入到HDD中,速度較慢,需要考慮回寫的速率限制)等參數(shù)?;貙憯?shù)據(jù)的時(shí)機(jī)與速率會(huì)很大程度上影響寫的性能,如果閾值設(shè)置的非常高,則當(dāng)?shù)竭_(dá)閾值后,數(shù)據(jù)回寫的速度會(huì)遠(yuǎn)遠(yuǎn)低于數(shù)據(jù)寫入到SSD中的速度,這就會(huì)造成SSD中并沒有充足的空間給新寫入的數(shù)據(jù),導(dǎo)致寫會(huì)直接寫入到HDD硬盤中,無法實(shí)現(xiàn)寫加速。因此在設(shè)置數(shù)據(jù)回寫相關(guān)的參數(shù)時(shí),需要根據(jù)實(shí)際的情況適當(dāng)?shù)恼{(diào)整參數(shù)。
緩存模式對(duì)比Write-back模式簡(jiǎn)化讀取和寫入,具有最短的寫延遲,擁有最佳讀寫吞吐性能,是唯一對(duì)寫操作有加速作用的模式,適用于數(shù)據(jù)更改頻繁的應(yīng)用;Write-through模式在寫密集型應(yīng)用程序中可以大幅度提升讀取最近寫入數(shù)據(jù)的性能;Read-only模式和Write-through策略在讀取密集型應(yīng)用中具有相同的讀取性能。
各廠商生產(chǎn)的SSD具有不同寫入性能,但是在不同寫入策略下速度的差異卻是不太明顯的,Write-through和Write-back策略比Read-only策略通常提供更好的性能,但有時(shí)寫IOPS規(guī)格比較低的SSD在Read-only策略下可能比其他兩種策略性能發(fā)揮的更好。
從數(shù)據(jù)安全性角度來看,Read-only和Write-through模式中,SSD不會(huì)保存臟數(shù)據(jù),數(shù)據(jù)的所有更新都是實(shí)時(shí)寫入到硬盤的,任何時(shí)候SSD發(fā)生損壞,業(yè)務(wù)都無需中斷,應(yīng)用數(shù)據(jù)也不會(huì)損壞。Write-back模式提供最佳的性能體驗(yàn),但是會(huì)保存一定比例的臟數(shù)據(jù),為了防止電源或SSD故障時(shí)導(dǎo)致數(shù)據(jù)不完整或丟失,需要配置相關(guān)的預(yù)防措施,比如利用多塊SSD組成RAID1或者RAID5保障數(shù)據(jù)安全。
替換策略高速緩存設(shè)計(jì)的另一個(gè)關(guān)鍵方面是替換策略。當(dāng)緩存需要保存一個(gè)新數(shù)據(jù)塊,這時(shí)可能需要將一個(gè)塊從高速緩存中移除,緩存如何選擇移除哪個(gè)塊?理想情況下,高速緩存選擇一個(gè)在將來最不可能訪問的那個(gè)塊,并且將該塊替換為對(duì)當(dāng)前任務(wù)需要立即訪問的數(shù)據(jù)塊。然而,除非進(jìn)行大量的分析預(yù)測(cè),基于過去的I/O模式準(zhǔn)確地判斷未來的應(yīng)用讀寫行為,是非常困難的。高速緩存需要一種可以處理這種情形的合理的替代策略,典型的替換策略包括RANDOM、FIFO和LRU。在實(shí)際中需要根據(jù)具體的應(yīng)用場(chǎng)景選擇合適的替換策略,保證最大的可能性使熱點(diǎn)數(shù)據(jù)最大程度的保留在SSD中,讓SSD的性能優(yōu)勢(shì)發(fā)揮到最大。
RANDOM:隨機(jī)替換策略。該策略的實(shí)質(zhì)就是,當(dāng)需要替換SSD中的block時(shí),用軟硬件的隨機(jī)數(shù)產(chǎn)生SSD要替換Block的序號(hào)。Random替換策略并不考慮被替換塊當(dāng)前是否為熱點(diǎn),這種策略很少使用。
FIFO(First In First Out):先進(jìn)先出策略,這是一種最簡(jiǎn)單的替換策略。這種策略的實(shí)質(zhì)就是總是選擇在SSD中停留時(shí)間最長(zhǎng)的block置換,即新進(jìn)入SSD的block,先替換。理由是:最早被寫入SSD中的block,其不再被讀/寫的可能性最大。這種策略只是在按線性順序訪問地址空間時(shí)才是理想的,否則效率不高。
LRU(Least Recently Used):最近最久未使用策略。該策略的實(shí)質(zhì)是,當(dāng)需要置換SSD中的block時(shí),選擇在最近一段時(shí)間里最久沒有使用過的Block予以置換,這些塊在將來也最不可能被訪問。LRU策略是與每個(gè)Block最后使用的時(shí)間有關(guān)的,由于該策略實(shí)現(xiàn)復(fù)雜,有一種LRU近似的策略NUR(Not Recently Used)最近未使用算法。LRU替換策略在絕大多數(shù)情形下都比隨機(jī)或FIFO策略執(zhí)行得更好,通常作為缺省替換策略被普通采用。
MaxIO特性
透明緩存MaxIO不使用DM設(shè)備映射器,而是采用IO攔截的實(shí)現(xiàn)方式,從而實(shí)現(xiàn)了透明緩存加速。這個(gè)特性帶來的好處是,SSD緩存可以根據(jù)需要?jiǎng)討B(tài)配置,而應(yīng)用無需做任何配置更改,因此對(duì)企業(yè)應(yīng)用場(chǎng)景不產(chǎn)生任何干擾。HDD硬盤使用時(shí)可以創(chuàng)建SSD緩存對(duì)其加速,也可以在不需要的時(shí)候隨時(shí)刪除高速緩存。另外,創(chuàng)建緩存時(shí),不管是HDD還是SSD,都可以使用整個(gè)設(shè)備或分區(qū)。
大I/O支持MaxIO對(duì)I/O處理方式進(jìn)行了修改,不會(huì)將大的I/O請(qǐng)求分割為以緩存塊大小為單位的多個(gè)請(qǐng)求。比如64KB的讀寫請(qǐng)求,MaxIO不會(huì)像諸如flashcache緩存系統(tǒng)把它拆分成16個(gè)4KB的小I/O請(qǐng)求。這個(gè)優(yōu)化使得大I/O性能得到顯著改進(jìn)。
小內(nèi)存占用MaxIO中每個(gè)SSD緩存塊元數(shù)據(jù)僅占用4個(gè)字節(jié),這使得系統(tǒng)內(nèi)存消耗只有SSD容量的0.1%(1/1000)。對(duì)于1TB SSD,MaxIO只需占用約1GB的元數(shù)據(jù)內(nèi)存開銷。這也使得創(chuàng)建大容量的SSD緩存成才可能。
數(shù)據(jù)塊對(duì)齊 MaxIO將所有元數(shù)據(jù)和數(shù)據(jù)塊4K對(duì)齊地寫入SSD,實(shí)現(xiàn)最小化寫放大和對(duì)閃存磨損,同時(shí)還可以提高性能。
高數(shù)據(jù)安全MaxIO在以Read-only或Write-through模式使用時(shí),可以在不停止系統(tǒng)操作的情況下移除SSD,或者在SSD完全故障情況下繼續(xù)工作。如果刪除緩存SSD,系統(tǒng)只是簡(jiǎn)單地回到添加緩存之前的性能級(jí)別。出現(xiàn)故障時(shí),對(duì)HDD的I/O請(qǐng)求可以繼續(xù)正常處理。性能可能下降,但應(yīng)用程序不會(huì)收到任何IO錯(cuò)誤。SSD設(shè)備在Write-back模式下,出現(xiàn)故障可能導(dǎo)致丟失緩存中的臟數(shù)據(jù)塊。為了防止這種數(shù)據(jù)丟失,可以將SSD設(shè)備通過RAID 1鏡像實(shí)現(xiàn)高可用。
MaxIO局限性
(1) Linux平臺(tái)為主。MaxIO目前主要以Linux平臺(tái)為主,尤其是Redhat/CentOS 6.x/7.x系統(tǒng),其他Linux/Unix平臺(tái)需要定制或移植,不支持Windows平臺(tái)。
(2) 讀緩存預(yù)熱。緩存創(chuàng)建后,通常需要一段時(shí)間預(yù)熱緩存,尤其是讀緩存。只有熱點(diǎn)數(shù)據(jù)進(jìn)入SSD,才能獲得較高的緩存命中率。
(3) 緩存過量寫入。MaxIO在只讀模式下,在特定場(chǎng)景下引起過量的數(shù)據(jù)寫入緩存,比如數(shù)據(jù)備份、碎片整理、文件搜索等。這會(huì)導(dǎo)致緩存命中率極低,使得緩存失效。
(4) 順序I/O無效。MaxIO重點(diǎn)是對(duì)隨機(jī)讀寫I/O的緩存和加速,而對(duì)大塊順序讀寫基本是無效的。一旦檢測(cè)到順序I/O讀寫邏輯,MaxIO就會(huì)跳過SSD,直接對(duì)HDD進(jìn)行操作。
-
閃存
+關(guān)注
關(guān)注
16文章
1771瀏覽量
114766 -
SSD
+關(guān)注
關(guān)注
20文章
2833瀏覽量
117127 -
IOPs
+關(guān)注
關(guān)注
0文章
11瀏覽量
14294 -
HDD
+關(guān)注
關(guān)注
0文章
140瀏覽量
27312
原文標(biāo)題:SSD緩存軟件核心技術(shù)剖析
文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論