從傳統(tǒng)存儲切換到閃存陣列,需要面對的 17 個具體問題
傳統(tǒng)機械磁盤存儲受限于存儲架構(gòu)的發(fā)展,很難在速度上進一步突破和提升。更快的閃存存儲系統(tǒng)突破了傳統(tǒng)機械磁盤系統(tǒng)的物理限制,讓數(shù)據(jù)的讀寫處理更加快速和高效。然而企業(yè)用戶也必須考慮:如何運用閃存技術(shù)快速解決生產(chǎn)系統(tǒng)IO性能瓶頸或者異常隱患,業(yè)務(wù)系統(tǒng)所用傳統(tǒng)存儲又如何快速切換至閃存陣列解決燃眉之急,存儲切換時系統(tǒng)停機窗口如何安排和停機、數(shù)據(jù)遷移風(fēng)險等等重重問題。
針對以上問題,社區(qū)舉辦了相關(guān)主題探討活動,重點幫助大家更好的了解了如何利用閃存存儲陣列迅速消除交易類系統(tǒng)數(shù)據(jù)庫IO性能瓶頸?;顒又?,來自多家金融機構(gòu)的技術(shù)大拿踴躍發(fā)言和解答,并提出了許多寶貴和針對性的觀點,在此由社區(qū)專家鄧毓對活動內(nèi)容進行梳理總結(jié),方便大家參考。
一、核心議題
1、如何將系統(tǒng)所用的傳統(tǒng)存儲陣列切換至閃存陣列?
解答:
方案一、操作系統(tǒng)層數(shù)據(jù)鏡像技術(shù)
如AIX LVM
1.映射閃存陣列的LUN至AIX OS,并加入VG
2.將原傳統(tǒng)陣列LUN和閃存陣列LUN做LVM
3.同步完成后,找停機窗口,從VG中拆除鏡像,剔除原傳統(tǒng)陣列LUN
4.重新激活VG,并掛載數(shù)據(jù)文件系統(tǒng),驗證
方案二、數(shù)據(jù)庫備份恢復(fù)和OS層面的克隆技術(shù)
如數(shù)據(jù)庫:DB2 BACKUP/RESTORE,ORACLE RMAN,OS克?。篈IX ALT_DISK_COPY,VM SNAPSHOT,VM P/V to V等
1.搭建新環(huán)境,該環(huán)境存儲采用閃存陣列
2.通過OS層面的克隆技術(shù),將OS數(shù)據(jù)復(fù)制/遷移至新環(huán)境、
3.通過數(shù)據(jù)庫層備份恢復(fù),將數(shù)據(jù)庫數(shù)據(jù)恢復(fù)至新環(huán)境,并驗證
方案三、存儲本身自帶的LUN鏡像技術(shù)
如IBM V9000等
1.找停機窗口,將原傳統(tǒng)陣列LUN映射至V9000
2.在V9000中,將原傳統(tǒng)陣列LUN數(shù)據(jù)鏡像(VDM)至V9000LUN
3.待鏡像同步完成后,將兩個LUN主備關(guān)系反轉(zhuǎn),閃存作為主存儲,原傳統(tǒng)陣列LUN作為備存儲
4.將兩個LUN虛擬化后形成的VDISK映射至主機,驗證,此時主機存在V9000和原傳統(tǒng)陣列兩份數(shù)據(jù)保護
方案四、存儲虛擬化網(wǎng)關(guān)的LUN鏡像技術(shù)
如IBM SVC、EMC VPLEX等
1.找停機時間,取消原傳統(tǒng)陣列LUN至主機的映射,將該LUN映射至虛擬化網(wǎng)關(guān)進行管理
2.虛擬化網(wǎng)關(guān)將該LUN(mdisk)虛擬化成虛擬LUN(vdisk),并映射給主機
3.創(chuàng)建vdisk的閃存陣列LUN鏡像拷貝
4.待拷貝完成后,將閃存陣列LUN置為主拷貝,原傳統(tǒng)陣列LUN置為備拷貝
5.驗證
2、如何評估系統(tǒng)所用的傳統(tǒng)存儲陣列是否已達瓶頸,無法滿足業(yè)務(wù)需求?
解答:
通常而言,每個廠商都有自己的一套評估辦法。對于磁盤IO來說,大的方向,主要看磁盤的IO響應(yīng)時間。對于OLTP業(yè)務(wù),讀IO響應(yīng)時間5-8ms內(nèi)算是正常值,寫IO響應(yīng)時間,1-2ms還算ok。高達20ms以上的響應(yīng)時間,通常都意味著存儲內(nèi)部存在瓶頸。這個瓶頸可能存在于后端磁盤上,存在后端磁盤卡上。通常而言,這種情況,增加緩存并不能解決性能問題,就需要看看是否可以增加更多物理磁盤(前提是后端磁盤卡處理能力未達到瓶頸)來解決問題。
那么到了現(xiàn)在閃存的時代,如果考慮解決磁盤性能問題,可以更多的看看閃存是否可以一勞永逸的解決性能問題,同時還可以達到更好的經(jīng)濟比。
3、高端傳統(tǒng)存儲陣列和閃存陣列如何取舍?穩(wěn)定性O(shè)R性能OR兼顧?
解答:
閃存的發(fā)展,到現(xiàn)在為止,變成了兩個主要方向性的選擇。一是拋棄傳統(tǒng)存儲的架構(gòu),采用全新架構(gòu)設(shè)計的全閃存產(chǎn)品。另外一種是沿用原來存儲架構(gòu),但是內(nèi)部磁盤變成SSD磁盤。如果是要拿閃存陣列和高端傳統(tǒng)磁盤陣列別,那么性能方面肯定是全閃存完勝,穩(wěn)定性高端存儲占優(yōu)。因此,個人理解可能您是不是想比較傳統(tǒng)高端存儲帶SSD磁盤的架構(gòu)和全閃存陣列對比。
對于全閃存架構(gòu),由于是新的架構(gòu),沒有傳統(tǒng)存儲架構(gòu)里面那些考慮后端磁盤慢的因素所要做的很多折中設(shè)計,可以發(fā)揮出閃存的性能。同時,為了降低閃存產(chǎn)品的每GB成本,這些架構(gòu)中通常會包含壓縮和除重功能。
對于傳統(tǒng)磁盤陣列帶SSD磁盤,例如現(xiàn)在到處都在宣傳的高端全閃存陣列,主要架構(gòu)并未發(fā)生變化,限制性能輸出的瓶頸部位還是在后端磁盤卡,以及傳統(tǒng)的RAID模式上。在性能方面,比全新架構(gòu)的全閃存還是有一定差距。同時,這類閃存,由于架構(gòu)限制,很難增加壓縮和除重功能,性價比也不是***。但是,這種架構(gòu)適合原來一直沿用類似高端存儲架構(gòu)的客戶,可以方便的過渡到新的平臺,獲得更好的性能。另外,這一類架構(gòu),容災(zāi)功能比較豐富,適合有類似三站點需求的客戶。在性能得到提升的同時,還可以保留原來所需的功能。
在這里想說的是,穩(wěn)定是需要時間和客戶環(huán)境的不斷適錯才能獲得一個相對穩(wěn)定的微碼環(huán)境。因此,傳統(tǒng)陣列+SSD磁盤,相對全新設(shè)計的全閃存架構(gòu),是有一定的優(yōu)勢。通常意義上說,一個經(jīng)歷過10-20年磨礪的代碼平臺,比發(fā)布才3-5年的全新產(chǎn)品,代碼成熟度還是要高一點的。另外,如果在高可用上考慮的比較齊全,使用全新閃存架構(gòu),也是一種很好的選擇。
***,客戶還是要根據(jù)自身的需求,選擇合適的產(chǎn)品。
二、閃存的價值及優(yōu)劣勢
1、目前全閃存存儲陣列優(yōu)缺點有哪些?
解答:
優(yōu)點:時延性能,IOPS,占用機柜U位少,綠色節(jié)能。有些型號具備一定軟件功能,如異構(gòu)虛擬化,云存儲,軟件定義存儲,數(shù)據(jù)刪重,壓縮等。
缺點:相對而言,價格較高,比高端存儲可靠性和略差。高端功能有所欠缺(高端全閃除外),比如兩地三中心MGM架構(gòu)。
2、如何從傳統(tǒng)到全閃,優(yōu)勢有多大?目前交易數(shù)據(jù)庫幾乎都跑在企業(yè)核心高端存儲,升級到全閃陣列在哪些性能得以提升?iops會提升多大?
解答一:
性能的提升主要還是在讀響應(yīng)時間和讀寫IOPS上,尤其是讀響應(yīng)時間,通常可縮短至1MS,甚至0.5MS左右,而傳統(tǒng)核心高端存儲如果沒有配置SSD盤或者SSD加速卡(利用EASYTIER等技術(shù)提升熱點數(shù)據(jù)性能),也需要5MS左右的響應(yīng)時間,至于IOPS的提升的話,通常靠的是物理硬盤的盤的數(shù)量來提升讀寫IOPS性能,數(shù)據(jù)LUN盡量分散于多個陣列上多塊盤上,這樣利用每塊盤的可支持的IOPS來疊加起***可支持的IOPS。比如一塊SAS盤***的IOPS為200,一個ARRAY有7塊盤做RAID5,數(shù)據(jù)分散于N個ARRAY上,這樣***可支持的IOPS為200 X 6 X N,可見IOPS是很有限的。而閃存不一樣,每個閃存陣列有多個盤,每個盤有多塊板卡,板卡中又有N個芯片,每個芯片中又有多個閃存模塊等,所以相比物理硬盤的話,芯片級別的閃存可提供更為強大的IOPS。
解答二:
性能方面,尤其是IOPS和響應(yīng)時間方面,全閃存相對于傳統(tǒng)磁盤存儲,相當(dāng)于降維打擊。
3、重刪功能在全閃存陣列中有何意義?
解答一:
重刪功能主要是解決閃存SSD壽命較短的問題。閃存SSD的數(shù)據(jù)寫入和更新是電子式擦除方式,必然帶來數(shù)據(jù)塊的頻繁擦除動作,而數(shù)據(jù)塊的擦除是有次數(shù)限制的,所以壽命自然不長,壽命到了,數(shù)據(jù)塊也就無法使用了,無法使用的數(shù)據(jù)塊達到一定程度時,整個SSD盤也就壽命到期了,需要更換。
而重刪功能,可以在數(shù)據(jù)寫入或者擦除數(shù)據(jù)塊時,在閃存的軟件層,就判斷了是否要寫入該數(shù)據(jù)。如果寫入的數(shù)據(jù)時重復(fù)的,就不再寫入,這樣自然降低了數(shù)據(jù)塊的擦除頻率,提升了SSD盤的壽命,另外也大大提升了閃存陣列的利用率,虛擬容量也提升了好幾倍。
當(dāng)然類似的提升SSD壽命的方式還有數(shù)據(jù)壓縮功能。這里不再贅述。
解答二:
要看全閃存要支持的業(yè)務(wù)類型是什么。如果上層業(yè)務(wù)系統(tǒng)是類似虛擬機,VDI等環(huán)境,會產(chǎn)生很多重復(fù)的虛擬機資源,那么重刪是很有用的。
如果支持是像數(shù)據(jù)庫類型或文件系統(tǒng)類型的業(yè)務(wù),重刪用處不大,反而需要壓縮功能。
4、閃存對聯(lián)機事務(wù)處理高峰期的改善效果?
解答:
這張圖是連續(xù)四天的讀響應(yīng)時間和讀峰值響應(yīng)時間,切換前后的對比情況,包括了切換后,14號晚間的曲線圖。對比也是很明顯的,不過鑒于信貸批量的模型是寫IO占據(jù)了70-80%,讀IO占據(jù)了20-30%,讀響應(yīng)時間的明顯提升,寫響應(yīng)時間切換前后一直維持在1MS左右,所以信貸批量時間僅僅縮短了30分鐘-1小時而已??梢韵胂?,如果批量的模型是讀比例高,寫比例低,那么閃存對批量的提升意義還是非常明顯的。
5、任何一項存儲產(chǎn)品,不可能只有優(yōu)勢沒有劣勢,除了價格(甚至很多人說價格也不存在劣勢),閃存的缺點在哪里,瓶頸在哪里?
解答一:
劣勢在于穩(wěn)定性、可靠性相比傳統(tǒng)高端存儲要低。除非是高端存儲的全閃,性能也有,可靠性也是N個9。
當(dāng)然還有軟件功能性劣勢,比如兩地三中心同步/異步復(fù)制,有些閃存陣列可沒有,或者熱點數(shù)據(jù)遷移,分層,壓縮等等。當(dāng)然這些靠閃存前面接一個SVC可以解決。
解答二:
缺點購買成本貴,因此起配容量較高,但是平均每GB成本不見得比高端存儲柜。另外,高級功能比傳統(tǒng)存儲要少一點。性能瓶頸在于CPU core數(shù)不夠,發(fā)揮不出所有閃存芯片的性能。
三、閃存的使用
1、如何定位存儲是性能瓶頸?
解答一:
這個問題沒有背景描述,那么暫時假定一個場景:Oracle 數(shù)據(jù)庫的批量作業(yè)非常慢。那么接下來的步驟:
首先,從Oracle的AWR報告去找 IO 相關(guān)的統(tǒng)計信息。首先要明確的是IO的問題是集中在某個數(shù)據(jù)文件,還是所有的數(shù)據(jù)文件都存在這種問題?如果是某一個數(shù)據(jù)文件或者是表空間的IO非常特殊,那么多數(shù)原因是因為數(shù)據(jù)庫設(shè)置或者應(yīng)用本身的設(shè)計,例如數(shù)據(jù)文件配置模式、索引、統(tǒng)計分析等問題。如果是所有的數(shù)據(jù)文件和日志文件多數(shù)面臨IO問題,那么這個時候可以去看存儲的日志。
接著,從存儲的性能分析日志去看。不要看端口啊、引擎啊這些信息。直接看對應(yīng)那幾個存儲卷的重要指標(biāo)(延時、讀寫速度、隊列)。如果這幾個指標(biāo)嚴(yán)重出現(xiàn)問題,那么再去看對應(yīng)的端口或者是引擎的相應(yīng)信息(內(nèi)存、承載卷的個數(shù)、端口是否有負(fù)載過量的情況等等)。
解答二:
看這個應(yīng)用系統(tǒng)用的存儲卷是否性能能夠滿足應(yīng)用系統(tǒng)的需求??梢杂霉ぞ哕浖?,比如TPC,查看當(dāng)前存儲卷的IOPS,讀寫響應(yīng)時間,吞吐量等。再結(jié)合操作系統(tǒng)層或者數(shù)據(jù)庫層的分析,如果有異常,一定會有所體現(xiàn)的。
2、全閃的選購要點是否和傳統(tǒng)一樣?
解答:
閃存主要分三類:
1.純閃存陣列,不帶任何軟件功能,追求的是時延優(yōu)先
2.帶異構(gòu)虛擬化功能的閃存陣列,在閃存之上,增加了很多軟件功能,豐富閃存的應(yīng)用場景,如異構(gòu)虛擬化,遷移,壓縮,雙活等。
3.云環(huán)境下的閃存陣列,多個閃存節(jié)點通過以太網(wǎng)或者infiniband高速互聯(lián),提升閃存擴展性,并具備數(shù)據(jù)重刪和壓縮等功能,解決的是云計算環(huán)境下閃存集群的應(yīng)用場景。
4.高端存儲的全閃架構(gòu),集性能和可靠性為一身,應(yīng)用于大型核心系統(tǒng)。
上圖幫助理解:
3、使用GPFS的AFM工具把數(shù)據(jù)由傳統(tǒng)存儲陣列遷移至閃存陣列需要進行哪些操作?
解答一:
AFM用于在集群間傳輸數(shù)據(jù)。如果是把一個集群內(nèi)的數(shù)據(jù),從傳統(tǒng)存儲陣列遷移到閃存陣列,不需要AFM功能。
解答二:
原有存儲是否是GPFS文件系統(tǒng)?是否是nsd格式的磁盤,如果不是,那么不適合用GPFS和(或)AFM遷移
4、如何有效利用閃存的io性能?
解答一:
將多個閃存盤做RAID保護,形成一個ARRAY,所有ARRAY均加入至同一閃存POOL,在POOL中劃分LUN,LUN的大小盡量小,將LUN分配給主機OS,在OS上建文件系統(tǒng)或者以裸設(shè)備的方式給數(shù)據(jù)庫使用。
這樣就盡量把數(shù)據(jù)都打散在所有閃存SDD盤中。讀寫并發(fā)性能***化。
解答二:
簡單的說,應(yīng)用端要盡量的增加并發(fā)度,服務(wù)器CPU核數(shù)、HBA卡數(shù)量和磁盤queue depth值要遵循廠商建議,基本上可以獲取***的閃存IO性能。
另一方面,閃存主要適合隨機小塊IO讀寫,因此適用場景一定要規(guī)劃清楚。對于高吞吐的順序讀寫IO而言,閃存并不會比傳統(tǒng)陣列要好很多。
5、現(xiàn)有的文件系統(tǒng)、數(shù)據(jù)庫系統(tǒng)都是基于傳統(tǒng)的機械式磁盤來設(shè)計,而SSD為了適應(yīng)現(xiàn)有文件系統(tǒng)、數(shù)據(jù)庫系統(tǒng),必須在SSD內(nèi)部增加一層FTL,這樣限制了SSD性能的發(fā)揮,如何讓SSD極大發(fā)揮性能?
解答:
這個取決于FTL算法,每個閃存陣列廠商都有自己的FTP算法,算法好的,SSD性能也能得到極大發(fā)揮,算法差的,SSD性能也會差別很大。這些都屬于機密性的東西,我們用戶唯一能做的就是對他們的閃陣做測試,測試他們主控中FTP算法的優(yōu)劣。重點是測試不同頁面大小的隨機寫操作。
6、全閃存存儲陣列如何保證數(shù)據(jù)安全?容錯如何實現(xiàn)?
解答一:
采用虛擬網(wǎng)關(guān)+閃存+中端備存儲,甚至+DR容災(zāi)架構(gòu),保證三份數(shù)據(jù)冗余?;蛘咧苯硬捎脦М悩?gòu)虛擬化功能的閃存陣列+中端備存儲。
如果只是簡單的閃存陣列,那和傳統(tǒng)存儲一樣,定期做數(shù)據(jù)備份的方式,閃存SDD盤做RAID保護,多配置熱備盤。
解答二:
不管是傳統(tǒng)存儲還是全閃存,數(shù)據(jù)的安全是存儲設(shè)計的***目標(biāo)。圍繞這個目標(biāo),存儲內(nèi)部會有很多機制,類似ECC校驗的功能,Cache destage/stage設(shè)計機制等等。目前的存儲平臺,在數(shù)據(jù)安全性上,應(yīng)該是沒有問題的。
容錯,這是一個很大的話題。存儲架構(gòu)本身,主要部件都是冗余設(shè)計,可以實現(xiàn)一定的容錯。對于應(yīng)用而言,數(shù)據(jù)層面的容錯,大部分都是通過log機制來實現(xiàn)recovery,比如文件系統(tǒng)的緩存,數(shù)據(jù)庫緩存等等。存儲層,內(nèi)部也有很多機制來實現(xiàn)寫入的數(shù)據(jù)的一致性或者說容錯。比如說端到端的校驗,PI,就是在數(shù)據(jù)傳輸過程中增加校驗值,到底存儲后進行比較,來確認(rèn)數(shù)據(jù)的傳輸?shù)耐暾?。存儲?nèi)部呢,前端->Cache->后端->磁盤,都有類似校驗機制。就像我們通常說的數(shù)據(jù)塊的最小單元是512 byte,但是存儲內(nèi)部處理起來,可能是520/528,甚至更多byte的格式,都是為了實現(xiàn)數(shù)據(jù)校驗功能。
7、閃存的可靠性如何保證?傳統(tǒng)機械式磁盤比較可靠,不存在寫次數(shù)的限制,但是電子式的閃存存在寫次數(shù)的限制,這樣對閃存SSD的壽命有影響,即可靠性存在影響,尤其是熱點數(shù)據(jù)的寫入更是如此。如何解決這個問題?
解答:
現(xiàn)在的閃存技術(shù)已經(jīng)基本可以規(guī)避掉SSD壽命和數(shù)據(jù)壞塊問題了。數(shù)據(jù)壞塊和壽命耗盡的數(shù)據(jù)塊,會重新寫入新的數(shù)據(jù)塊,壞塊會自動標(biāo)記為故障點,不再使用。整個SSD盤壽命也越來越長了,甚至比機械磁盤更可靠,更不易壞。即使單個SSD出現(xiàn)故障,多塊SSD間也通過RAID技術(shù)保持冗余。所以SSD的可靠性是可以相信的。
8、使用SVC對接高端的DS8870,會影響DS8870哪些特性?DS8870屬于高端存儲,在性能、穩(wěn)定性上都有較好的表現(xiàn),如果前端使用SVC,是否會影響DS8870的性能,同時DS8870的哪些特性會受到SVC的影響?
解答:
前端接入DS8870,幾乎不對DS8870有影響。讀IO是直接讀DS8870的數(shù)據(jù),寫IO,是寫SVC CACHE,后續(xù)再刷入DS8870,接入SVC,可以理解為DS8870的寫CACHE擴大了。要說影響,可能僅僅是SVC IOG兩個節(jié)點間緩存同步微小的時延增加了。所以性能的話,幾乎沒任何影響。
穩(wěn)定性的,接入SVC可增加DS8870的可靠性,可以通過SVC VDM將DS8870和某中端存儲做鏡像保護,存儲不再單點。
至于DS8870的功能性的話,會影響DS8870的METRO MIRROR和GLOBAL MIRROR兩地三中間的功能,簡單說就是引入SVC,SVC的MM和GM功能沒有DS8870的強大。
9、在存儲雙活保護上,使用DS8870和FS900,在性能上是否存在拖后腿現(xiàn)象?
解答:
基本不會拖后腿,SVC下的DS8870和FS900,讀IO是在FS900上,DS8870不參與,寫IO是直接寫SVC CACHE,對主機端來說,不知道寫的是哪個存儲,寫完這個CACHE,主機端就完成了本次寫周期,等到CACHE的水位線達到一定值時,再一次性刷入后端DS8870和FS900中。所以對于寫來說,只要CACHE足夠,寫和讀的比例不太高,即使DS8870的寫響應(yīng)時間和寫IOPS弱于FS900,但基本主機端是無法感受到的。