作者:吳香偉 發(fā)表于 2017/01/24
版權(quán)聲明:可以任意轉(zhuǎn)載,轉(zhuǎn)載時(shí)務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息以及版權(quán)聲明
喜歡請(qǐng)點(diǎn)擊右邊打賞,謝謝支持!
存儲(chǔ)QoS是個(gè)可以做很大也可以做很小的特性。SolidFire認(rèn)為將QoS歸類(lèi)為特性太兒戲,QoS應(yīng)該是存儲(chǔ)系統(tǒng)設(shè)計(jì)之初就要仔細(xì)考慮的架構(gòu)問(wèn)題。的確,分析了一眾主流存儲(chǔ)大廠后還是覺(jué)得它在這方面做得最細(xì)致最全面。同時(shí)也有些廠商做得比較簡(jiǎn)陋,只提供了帶寬或者IOPS的限速功能。這或許在某些場(chǎng)景中已經(jīng)夠用,但我認(rèn)為一個(gè)完整的QoS方案至少要包括對(duì)帶寬、IOPS的預(yù)留、上限和優(yōu)先級(jí)控制,如果再精細(xì)點(diǎn)還可以考慮IO的粒度、延遲、突發(fā)、空間局部性、系統(tǒng)內(nèi)部IO、用戶(hù)IO、緩存、磁盤(pán)等要素。
分布式存儲(chǔ)都有很長(zhǎng)的IO路徑,簡(jiǎn)單的IOPS限速功能通常在路徑的最前端實(shí)現(xiàn)。例如OpenStack Cinder默認(rèn)使用QEMU完成存儲(chǔ)塊的限速功能,QEMU對(duì)存儲(chǔ)來(lái)說(shuō)已經(jīng)屬于客戶(hù)端的角色了。
QoS的本質(zhì)總結(jié)起來(lái)就四個(gè)字:消此長(zhǎng)彼,它并不會(huì)提高系統(tǒng)整體處理能力,只是負(fù)責(zé)資源的合理分配。據(jù)此就可以提出一連串問(wèn)題了:首先,如何知道什么時(shí)候該消誰(shuí)什么時(shí)候該長(zhǎng)誰(shuí)?其次,該怎么消該怎么長(zhǎng)?這兩個(gè)問(wèn)題QoS算法可以幫忙解決,可以參考我的另外一篇文章《聊聊dmclock算法》。在這兩個(gè)問(wèn)題之前還需要選擇一塊風(fēng)水寶地,能夠控制希望可以控制的IO,否則即使知道何時(shí)控制以及如何控制也鞭長(zhǎng)莫及無(wú)能為力。風(fēng)水寶地的選擇可以參考我的另外一篇文章《拆開(kāi)Ceph看線(xiàn)程和隊(duì)列》。
對(duì)Ceph來(lái)說(shuō),OSD的ShardedOpWq隊(duì)列是個(gè)不錯(cuò)的選擇,因?yàn)閹缀跛兄亓考?jí)的IO都會(huì)經(jīng)過(guò)該隊(duì)列。這些IO可以劃分為兩大類(lèi),一類(lèi)是客戶(hù)端過(guò)來(lái)的IO,包括文件、對(duì)象和塊存儲(chǔ);另一類(lèi)是系統(tǒng)內(nèi)部活動(dòng)產(chǎn)生的IO,包括副本復(fù)制、Scrub、Recovery和SnapTrim等。第一類(lèi)IO由于涉及到一些敏感內(nèi)容暫不考慮,本文主要分析第二類(lèi)IO,這也是本文叫做下篇的原因。
Recovery
配置項(xiàng) | 默認(rèn)值 | 說(shuō)明 |
---|