「存儲(chǔ)極客」三步完成全閃存選型
“
在《存儲(chǔ)極客:SPC-1負(fù)載分析
與AFA壽命評(píng)估》一文中,
我們討論了如何從SSD耐用性角度
規(guī)劃match存儲(chǔ)系統(tǒng)的配置。
今天再談?wù)勯W存性能的規(guī)劃,
包括測(cè)試和配置選型兩個(gè)方面。
存儲(chǔ)極客設(shè)計(jì)了下面這個(gè)流程:
應(yīng)用性能收集/評(píng)估 >>
存儲(chǔ)設(shè)備模擬測(cè)試 >>后續(xù)分析
怎樣把前兩個(gè)環(huán)節(jié)打通,是問(wèn)題的關(guān)鍵。
”
某家存儲(chǔ)廠商性能收集/分析工具的截圖,
算是同類(lèi)中的一個(gè)代表吧。
測(cè)試準(zhǔn)備
全閃存陣列配置實(shí)踐
我先講一些基礎(chǔ)的東西,包括SAN存儲(chǔ)網(wǎng)絡(luò)建議怎么連、劃Zone的規(guī)則和HBA卡參數(shù)等。針對(duì)的應(yīng)用環(huán)境是數(shù)據(jù)庫(kù)——Oracle OLTP。
圖片引用自《Accelerating Oracle OLTP with Dell SC Series All-Flash Arrays》,以下同。
上面是一個(gè)典型的傳統(tǒng)Oracle RAC+集中式存儲(chǔ)陣列+SAN網(wǎng)絡(luò)的配置。其中以Dell SC9000為例,雙控同時(shí)連接到后端的SC220 SAS驅(qū)動(dòng)器機(jī)箱,里面滿配24個(gè)SSD中有一塊熱備盤(pán)。
1存儲(chǔ)網(wǎng)絡(luò)最佳配置
存儲(chǔ)和PowerEdge R730服務(wù)器之間有2個(gè)Brocade 6505 16Gb FC交換機(jī)。在服務(wù)器FC HBA驅(qū)動(dòng)設(shè)置上,包括timeouts(超時(shí))和QD(隊(duì)列深度)的建議如下:
To adjust the values, the following lines were added to file /etc/modprobe.d/qla2xxx.conf.
options qla2xxx qlport_down_retry=5
options qla2xxx ql2xmaxqdepth=
由于是冗余的本地存儲(chǔ)連接,每條路徑的超時(shí)重試時(shí)間為5秒。
Once the system has restarted, verify that the configuration changes have taken effect:
# cat /sys/module/qla2xxx/parameters/qlport_down_retry
5
# cat /sys/module/qla2xxx/parameters/ql2xmaxqdepth
32
FC HBA的隊(duì)列深度建議設(shè)為32。這部分都是以QLogic光纖卡為例,如果換Emulex也是同樣的道理。
下面我們看看Zone的配置。
以左右兩邊FC交換機(jī)為中心拓?fù)涑?個(gè)存儲(chǔ)網(wǎng)絡(luò)故障域,如果是iSCSI就換成以太網(wǎng)交換機(jī)。
上圖以其中一臺(tái)服務(wù)器為例。2塊FC HBA卡上共有4個(gè)端口,camaro代表主機(jī)名,s1/s2分別對(duì)應(yīng)左右兩邊的HBA卡。每塊HBA都同時(shí)連接到2臺(tái)FC交換機(jī),然后可以看到兩個(gè)存儲(chǔ)控制器上的全部主機(jī)接口。
上圖是故障域Fabric 1中的4個(gè)Zone。前面2個(gè)Zone包含服務(wù)器camaro上兩塊HBA卡靠左邊的端口,它們都可以看到雙存儲(chǔ)控制器靠左的2個(gè)主機(jī)接口。如果感覺(jué)上面兩張圖的對(duì)應(yīng)關(guān)系還不夠清楚,不妨再看看下面這個(gè)表:
如上表,在一臺(tái)服務(wù)器上,每塊HBA卡的2個(gè)口分別可以看到同Zone中所有存儲(chǔ)控制器上的1,2 / 3,4端口。目的大家也都清楚:為了實(shí)現(xiàn)SAN網(wǎng)絡(luò)連接的高可用、有效利用帶寬,隔離以降低管理上的復(fù)雜性。
2寬條帶化和Thin-Provisioning注意事項(xiàng)
本文測(cè)試的SC9000配置了24個(gè)1.92TB讀密集型3D NAND TLC SSD,2MB的“數(shù)據(jù)頁(yè)面”就是Dell SC(Compellent)的寬條帶化RAID打散粒度。如果做自動(dòng)分層存儲(chǔ)的話,這個(gè)數(shù)據(jù)調(diào)度的粒度也是2MB,靠同一套元數(shù)據(jù)管理機(jī)制來(lái)實(shí)現(xiàn)的。
RAID 10-DM就是三重鏡像,可以理解為存儲(chǔ)控制器本地三副本,最大保障數(shù)據(jù)可靠性,同時(shí)沒(méi)有分布式存儲(chǔ)多副本的網(wǎng)絡(luò)開(kāi)銷(xiāo)。
因?yàn)閭鹘y(tǒng)RAID 10的雙盤(pán)故障風(fēng)險(xiǎn)在寬條帶化存儲(chǔ)池中被放大了,而RAID 6的隨機(jī)寫(xiě)性能又不夠理想,RAID 10-DM給了用戶更多一種選擇。
以Dell SC為例,當(dāng)SSD/HDD容量、個(gè)數(shù)在一定范圍內(nèi)會(huì)推薦采用RAID 10-DM鏡像,如果超出一定水平則強(qiáng)制要求鏡像保護(hù)必須為RAID 10-DM,這是為數(shù)據(jù)安全性考慮的。
存儲(chǔ)管理界面截圖引用自《工程師筆記:SCv2000試用之RAID分層+快照》一文。
有沒(méi)有兼顧性能和容量利用率的方式呢?除了在自動(dòng)分層存儲(chǔ)中將不同驅(qū)動(dòng)器配置為不同RAID之外,在單一類(lèi)型驅(qū)動(dòng)器的存儲(chǔ)池中,Dell SC仍然支持跨兩種RAID級(jí)別進(jìn)行分層存儲(chǔ),結(jié)合鏡像和奇偶校驗(yàn)各自的優(yōu)點(diǎn)。其原理是利用周期快照“凍結(jié)”只讀數(shù)據(jù)塊并改為RAID 5/6方式存放,這種讀寫(xiě)分離的思想同樣也能用于RI(讀密集型)SSD和WI(寫(xiě)密集型)SSD之間的自動(dòng)分層。
上圖只是一個(gè)舉例,由于本文是模擬OLTP應(yīng)用環(huán)境的讀寫(xiě)混合測(cè)試,實(shí)際都是在性能更好的RAID 10-DM配置進(jìn)行。
在有元數(shù)據(jù)分配數(shù)據(jù)條帶的情況下,精簡(jiǎn)配置(Thin-Provisioning)就成為原生的特性。但我也看到有同行朋友反映由于用戶沒(méi)做好容量預(yù)警,存儲(chǔ)池被寫(xiě)爆的狀況。當(dāng)然這也是有辦法避免的,比如上圖所示創(chuàng)建卷時(shí)“預(yù)分配存儲(chǔ)”選項(xiàng)。
需要注意的是,這個(gè)選項(xiàng)在我們的性能測(cè)試中另有深意,簡(jiǎn)單說(shuō)也可以解釋為“POC防作弊”。由于我們使用的是Oracle ORION測(cè)試工具,其寫(xiě)入的數(shù)據(jù)為全零,如果是沒(méi)有預(yù)分配的Thin卷,有個(gè)智能技術(shù)(零檢測(cè))——不會(huì)真正向SSD/HDD盤(pán)寫(xiě)入數(shù)據(jù)。如果這樣的話,顯然我們看不到真實(shí)的性能數(shù)據(jù)。
混合讀寫(xiě)測(cè)試結(jié)果
ORION是一個(gè)Oracle官方模擬數(shù)據(jù)庫(kù)存儲(chǔ)IO的測(cè)試工具。OTLP的典型負(fù)載為8KB隨機(jī)讀寫(xiě),這里通過(guò)參數(shù)指定讀/寫(xiě)比例為70:30。
測(cè)試結(jié)果如上表。深紅色折線代表IOPS,我們看到當(dāng)并發(fā)ORION任務(wù)達(dá)到14時(shí),8KB混合讀寫(xiě)IOPS超過(guò)250,000。
根據(jù)這個(gè)結(jié)果可以大致估算出100%讀IOPS能跑多高嗎?大家先看看我下面的方法是否合理:
估算方法一:在257,313 IOPS中有30%的寫(xiě)IO,考慮到RAID 10落在SSD盤(pán)上會(huì)有寫(xiě)放大,那么把這些寫(xiě)的時(shí)間換成讀操作應(yīng)該能快不少,保守估計(jì)跑到40萬(wàn)IOPS以上問(wèn)題不大。
問(wèn)題1:
閃存盤(pán)讀比寫(xiě)快,那么上面的估計(jì)是否保守了?
我的答案是yes,但具體低估了多少,除了實(shí)測(cè)之外另有一種推算方法可以考慮。
問(wèn)題2:
前后端存儲(chǔ)網(wǎng)絡(luò)、連接會(huì)不會(huì)成為瓶頸?
按照40萬(wàn)8KB IOPS來(lái)計(jì)算,折合3200MB/s的帶寬。具體到我們測(cè)試環(huán)境是端到端16Gb FC SAN網(wǎng)絡(luò),4條交換機(jī)上行鏈路不應(yīng)成為瓶頸;后端每條SAS線纜12Gb x4 lane也是如此。
問(wèn)題3:
我用不了這么多個(gè)SSD,換個(gè)配置性能可以按比例縮放計(jì)算嗎?
以我在《SSD壽命與閃存陣列選型(上)為什么關(guān)注DWPD?》中引用的Dell SC4020 SPC-1性能測(cè)試結(jié)果為例,6塊SSD超過(guò)11萬(wàn)IOPS,平均每個(gè)接近2萬(wàn)了。
當(dāng)然,SPC-1測(cè)試的混合工作負(fù)載數(shù)據(jù)塊大小和讀寫(xiě)比例(《存儲(chǔ)極客:SPC-1負(fù)載分析與AFA壽命評(píng)估》中曾有詳細(xì)分析)與本文的ORION有些不同,另外6塊480GB SSD用的是RAID 10雙盤(pán)鏡像,所以只是個(gè)參考對(duì)比。考慮到SC9000比SC4020要高端,其性能上限應(yīng)該也會(huì)較高。
估算方法二:這個(gè)我也是看到不只一家存儲(chǔ)廠商使用。大家知道SSD驅(qū)動(dòng)器有個(gè)制造廠商的IOPS性能指標(biāo),而在陣列中的發(fā)揮會(huì)有不小的折扣。于是人們就在存儲(chǔ)系統(tǒng)中測(cè)試各種單盤(pán)RAID 0的性能,以此為基礎(chǔ)來(lái)估算不同數(shù)量SSD配置能夠達(dá)到的IOPS,當(dāng)然如果是寫(xiě)性能還要考慮RAID懲罰的影響。
關(guān)于方法二我就不詳細(xì)舉例了,有興趣了解的朋友可以找相關(guān)人士咨詢。
性能分析收集工具
了解存儲(chǔ)需求的助手
我在本文開(kāi)頭列出過(guò)一張IOPS截圖,上面這個(gè)為主機(jī)上監(jiān)測(cè)到訪問(wèn)存儲(chǔ)的帶寬,對(duì)應(yīng)的具體存儲(chǔ)配置未知。它們都是使用DPACK(Dell Performance Analysis Collection)軟件收集的。
讀寫(xiě)I/O尺寸與應(yīng)用類(lèi)型相關(guān),比如Oracle OLTP典型的是8KB,上面這個(gè)比較像Exchange郵件服務(wù)器。另外我還看到過(guò)有的存儲(chǔ)廠商宣稱(chēng)32KB優(yōu)化對(duì)實(shí)際應(yīng)用的意義較大。
延時(shí)是另一個(gè)關(guān)乎應(yīng)用體驗(yàn)的重要指標(biāo),這個(gè)與I/O請(qǐng)求大小有很大關(guān)系。比如上面圖表大部分時(shí)間寫(xiě)延遲很低,應(yīng)該有存儲(chǔ)Cache的效果在里面,絕大多數(shù)I/O都在20ms以內(nèi),屬于Exchange正常接受的范圍。至于藍(lán)色的波峰,不排除是有個(gè)大數(shù)據(jù)塊I/O,也可能是由于持續(xù)寫(xiě)入壓力大,緩存數(shù)據(jù)滿了落盤(pán)導(dǎo)致。
另外需要說(shuō)明的是,如果按照Oracle OLTP的8KB訪問(wèn)習(xí)慣,平均延時(shí)通常比上面圖中要低。而存儲(chǔ)I/O與數(shù)據(jù)庫(kù)事物交易延時(shí)并不是一回事,因?yàn)楦鶕?jù)事物復(fù)雜度不同,每筆事物中包含的I/O數(shù)量也是不同的,而且還有計(jì)算的開(kāi)銷(xiāo)要考慮。因此,我們不能從應(yīng)用端一看到幾十ms的延時(shí),就全都怪存儲(chǔ)不給力。
在用戶現(xiàn)有的應(yīng)用系統(tǒng)中收集到上述性能數(shù)據(jù)之后,再加上我在本文中介紹的方法,存儲(chǔ)售前顧問(wèn)就可以更有針對(duì)性地推薦陣列配置。現(xiàn)在全閃存逐漸開(kāi)始流行,而有些情況下用固態(tài)混合(SSD+HDD)分層存儲(chǔ)也是不錯(cuò)的選擇。如果用戶看重容量和性價(jià)比,或者想保留更多的歷史快照數(shù)據(jù),能夠兼容傳統(tǒng)硬盤(pán)的陣列就顯出優(yōu)勢(shì)了。