在撰寫本文之前,我先是閱讀了Oracle Database Appliance X5-2的產品資料,并發了一條微博:
“簡單看了下Oracle Database Appliance X5-2的硬件,2個1U服務器節點間用40Gb InfiniBand互連,應該是直連沒有交換機。24盤位JBOD(可擴展1臺)每個驅動器共享給2個服務器由ASM管理。放redo log的4個200GB SSD采用3重鏡像,我估計寫好1-2個就返回;緩存熱數據的4個400GB SSD為雙重鏡像(共享還是各自獨享?)”
而當我繼續查看Exadata X5的資料時,發現ODA的架構顯得太簡單了。
伴隨Oracle Exadata X5的發布,人們注意到硬件性能的又一次提升,其中包括NVMe SSD——PCIe插卡和SFF-8639驅動器的形式,具體是怎樣使用的呢?
本次的新型號包括Oracle Exadata Database Machine X5-2,以及Oracle Exadata Storage Expansion Rack X5-2兩款,顧名思義,后者是個存儲擴展機柜。此外,計算和存儲節點數量的搭配,在原有Full Rack(滿配機架)、Half Rack(半配)、Quarter Rack(1/4配)和Eighth Rack(1/8配)之外,還加入了更加靈活的彈性配置和擴展方式。
筆者不是DBA(一直很崇拜DBA),因此將站在系統工程師,或者說規格參數的角度談談對Exadata X5的彈性擴展以及存儲配置——特別是閃存性能方面的理解。
1U數據庫服務器和40Gb IB內部互連,就不多講了。
X5-2的存儲服務器節點分為兩種:Extreme Flash(EF) Storage,12.8TB PCIe全閃存盤;High Capacity (HC,高容量) Storage,6.4TB PCIe閃存卡+48TB SAS硬盤混合存儲。
如上圖,SSD用了哪家大家也知道的差不多了。每個Extreme Flash存儲服務器上有8個1.6TB SSD,2U機箱容納2.5寸盤遠不止這些,那么應該是考慮容量/成本的平衡,以及匹配單個節點計算和網絡資源。
接著在性能表格中,也能看出Full Rack——8個DB+14個存儲服務器OLTP讀/寫
IOPS (8K) 都是414萬。單從閃存介質的角度看寫比讀慢,而且ASM Normal冗余(雙副本)的寫開銷為讀的兩倍,High三副本就更大了。我初步理解是SQL處理的瓶頸。
High Capacity大容量存儲服務器是個混合的配置,其中1.6TB PCIe SSD用了4塊,4TB SAS硬盤為12塊。除了讀IOPS之外,其余指標都比前面的Extreme Flash有所降低。由于SSD在這里用于讀寫緩存,沒有全閃存配置的數量多,所以寫IOPS已經低于讀(SSD開始成為瓶頸)。
上圖就是X5 High Capacity存儲服務器節點使用的閃存卡,Oracle/Sun的型號為F160,順便也幫Intel SSD DC P3600做廣告了。(以前用LSI卡時圖片上沒有logo,參見我兩年多以前寫的《甲骨文Exadata X3:1/8機架的“數字游戲”》)
如上表,Intel P3600這塊產品的性能表現在PCIe SSD中算一般水平吧。一方面沒有像P3700那樣使用高耐久度的High Endurance Technology (HET)閃存,也就是普通MLC而非“eMLC”,寫入性能和壽命都受到影響。如上圖,盡管標稱最大隨機讀/寫IOPS(4KB)為450,000和56,000,但8KB時就下降到260,000和33,000。
Intel這款SSD的一大優勢是較早地支持了NVMe,擔心NVMe不夠成熟的人可以看看,現在至少某些Linux版本(Oracle Linux 6 Update 6 with the Unbreakable Enterprise Kernel 2)下已經可用了。
延伸閱讀:《破解PCIeSSD進化:從踩坑到解決方案》
接下來我們看看“彈性配置”。上圖左半邊是Exadata X3-2,支持數據庫服務器2-8臺、存儲服務器3-14臺,實際上就那4款具體配置,不能隨便選;而到了Exadata X5-2,支持數據庫服務器2-19臺、存儲服務器3-18臺。也就是說數據庫服務器最少配1臺,最多占滿機柜(此時要連接存儲擴展機柜了);存儲服務器為了高可用還是以3臺起步,最多18臺。基本上就是沒有限制的靈活搭配了。
需要說明的是,上述性能指標應該是在理想狀態下——執行最簡單的SQL;性能隨節點數完全線性擴展,也是在RAC集群基本沒有跨節點Cache Fusion操作的情況下。所以注釋的第一行就說明了,真實環境中根據應用情況會有變化。
上表的標題為“彈性擴展”,最左邊的多機架連接,以及最右邊的1/8機架到1/4機架升級(實際上就是激活個License,硬件是相同的)都是Exadata X3乃至更早就有的。而中間的“擴展計算能力”和“擴展存儲能力”則是X5新增。
中間用藍色圈出的那一段,是本文中核心計算規則:“彈性配置的性能計算,來自數據庫服務器性能總和,以及存儲服務器性能總和的最小值。舉例,一個配置包含3臺數據庫服務器(3x518,000=1554K讀IOPs)和4臺HC存儲服務器(4x400,000=1600K讀IOPs),將擁有1554K IOPs的性能。”
Exadata的SQL的處理既可以在數據庫服務器上進行,也可以卸載數據密集型SQL操作到存儲服務器,但二者的性能計算不可疊加。X5-2數據庫服務器(2顆18核Intel Xeon E5-2699 v3)的最大SQL讀/寫IOPS為518,000,存儲服務器最大SQL讀IOPS為400,000(它的CPU只有2顆8核),寫IOPS就可以看出閃存的瓶頸了。Extreme Flash全閃存節點為377,000,這里是SQL IOPS已經考慮到ASM冗余帶來的寫懲罰,那么落到每個SSD(每節點8個)上應該就是94,250——好像這個數字明顯超過了Intel P3600標稱的8KB寫IOPS 33,000?
那么High Capacity大容量混合存儲節點的192,000,落到4塊閃存卡上96,000寫IOPS也是類似的情況?轉念一想,Intel給出的數字是隨機寫IOPS,而Exadata這里的SQL閃存寫可以是順序操作啊!差點被繞進去…
我想起@jametone 老師說過的一句話,大意是這樣的:“實際應用中讀IOPS容易離散,而寫IOPS容易連續,再加上讀/寫比例的因素,存儲的讀性能成為瓶頸的情況更多一些。”這或許可以解釋Exadata X5使用相對便宜的PCIe SSD吧。
最后再看看更牛B的數字——Exadata存儲擴展機柜的最大配置19臺,仍然是用乘法來計算的。這種資料里的性能嘛,只是廠商給出參考的一個數字罷了。
今天我這個數據庫外行寫了這些東西,其中難免有紕漏之處,歡迎大家批評指正,也讓我能有一個學習進步的機會:)