認(rèn)知:存儲(chǔ)是系統(tǒng)的最底層 |
發(fā)布時(shí)間: 2012/7/2 4:57:28 |
磁盤 一個(gè)IO的訪問,大致分為三個(gè)步驟,第一是磁頭到指定的磁道(尋道),第二是等待需要讀取的數(shù)據(jù)隨盤片旋轉(zhuǎn)到磁頭(延遲),第三是讀取數(shù)據(jù)。相比較前兩個(gè)時(shí)間,讀取數(shù)據(jù)的時(shí)間可以忽略不計(jì),所以一個(gè)IO的響應(yīng)時(shí)間等于尋道時(shí)間+延遲時(shí)間決定,尋道時(shí)間由于是機(jī)械的動(dòng)作,所以很難得到大幅度提高,但是可以通過提高磁盤轉(zhuǎn)速來提高延遲時(shí)間。所以轉(zhuǎn)速越高的盤,可以承載更多的IOPS。磁盤的IOPS由磁盤的轉(zhuǎn)速?zèng)Q定,比如15000RPM的磁盤,一般可以承受150個(gè)IOPS。 吞吐量,則由磁盤的轉(zhuǎn)速和接口決定,轉(zhuǎn)速?zèng)Q定了內(nèi)部傳輸率,接口則決定了外部傳輸率,很明顯前者肯定低于后者。常見的接口有ATA,SCCI,SATA,SAS,F(xiàn)C等等。FC接口一般在高端存儲(chǔ)中比較常見,而SAS和SATA多在服務(wù)器或者中低端存儲(chǔ)中常見。 存儲(chǔ) 對(duì)于一個(gè)存儲(chǔ)系統(tǒng)來說,IOPS主要決定于cache的算法,以及磁盤的數(shù)量。有時(shí)候我們往往會(huì)被廠商的數(shù)據(jù)給忽悠了,第一是cache命中率,廠商利用了某種手段,讓cache命中率非常高,IOPS幾乎可以隨心所欲。另外一個(gè)因素就是磁盤的數(shù)量,廠家的數(shù)據(jù)是同型號(hào)1000塊磁盤的測(cè)試結(jié)果,而我們實(shí)際的系統(tǒng)只有100塊磁盤。 購(gòu)買存儲(chǔ)時(shí),應(yīng)該避免買高端存儲(chǔ),而只配數(shù)量很少的磁盤,廠商非常喜歡你買一個(gè)高端的BOX,告訴你擴(kuò)展性好,現(xiàn)在用不著可以少買點(diǎn)盤,以后可以擴(kuò)容等等,這完全是忽悠。建議不要超前消費(fèi),如果確實(shí)對(duì)性能追求很高,可以選用容量小一些的磁盤,而磁盤的數(shù)量多一些。 磁盤的數(shù)量可以計(jì)算得出,我們的經(jīng)驗(yàn),一般OLTP應(yīng)用的cache命中率在20%左右,剩下的IO還是要到磁盤上的,根據(jù)磁盤的轉(zhuǎn)速和類型,就可以知道一塊盤能夠承載的IOPS,磁盤數(shù)量就可以估算出來了,為了得到比較好的響應(yīng)時(shí)間,建議每塊磁盤的IOPS不要超過100。 影響吞吐量的因素稍微復(fù)雜些,由磁盤的數(shù)量和存儲(chǔ)的架構(gòu)決定,當(dāng)磁盤到達(dá)一定的數(shù)量后,吞吐量主要受限于存儲(chǔ)的架構(gòu)。比如某高端存儲(chǔ),吞吐量最大就是1.4GB,這是由它內(nèi)部的架構(gòu)所決定的。另外還要注意存儲(chǔ)與億恩科技主機(jī)的接口,比如HBA卡,有4Gb和2Gb(這里是bit,而不是Byte),一般億恩科技主機(jī)和存儲(chǔ)都配有多塊HBA卡。 RAID RAID一般比較常見的就是RAID10和RAID5,對(duì)性能要求比較高的數(shù)據(jù)庫應(yīng)用一般都采用RAID10,RAID5也可以用,但是別把redo放在RAID5上,因?yàn)镽AID5的對(duì)于redo這種小IO,性能非常差,很容易造成log file sync的等待。一個(gè)RAID group中的磁盤數(shù)量不宜過多,不要超過10塊,原因是RAID group中磁盤數(shù)量越多,壞盤的概率就越大(概率問題)。一些高端存儲(chǔ)對(duì)于RAID group中的磁盤數(shù)量都是固定的,這主要和存儲(chǔ)的架構(gòu)有關(guān)。使用存儲(chǔ)的過程中,你會(huì)發(fā)現(xiàn),越是高端的東西,就越是死板,而中低端存儲(chǔ)則非常靈活,并不是說高端存儲(chǔ)不好,而是說架構(gòu)決定一切。 Stripe Stripe的作用就是盡可能的分散IO,它在有些存儲(chǔ)上是可以調(diào)節(jié)的,但是很多存儲(chǔ)是不可以調(diào)節(jié)的,一般在128K-512K之間。有一個(gè)錯(cuò)誤的說法是,我在存儲(chǔ)上做了stripe,數(shù)據(jù)庫的一個(gè)IO,所有的磁盤都會(huì)響應(yīng)這個(gè)IO。這個(gè)說法是錯(cuò)誤的,對(duì)于Oracle來說,一個(gè)隨機(jī)IO的大小是8K,一般條帶的大小要比8K大得多,所以O(shè)racle一個(gè)隨機(jī)IO永遠(yuǎn)只會(huì)落在一塊磁盤上。一塊磁盤在同一個(gè)時(shí)刻只能響應(yīng)一個(gè)IO,也就是說磁盤沒有并發(fā)IO的概念,但是從整個(gè)系統(tǒng)來看,不同的磁盤響應(yīng)不同的IO,宏觀上IO還是分散的,所以我們看到一個(gè)數(shù)據(jù)庫在運(yùn)行時(shí),所有的磁盤都在忙,實(shí)際上每塊磁盤是為不同的IO服務(wù)。對(duì)于順序IO,Oracle的默認(rèn)設(shè)置是128K,最大值由OS決定,一般是1M,如果順序IO的大小大于stripe,那么一個(gè)IO可能會(huì)有幾塊盤同時(shí)響應(yīng),但是很多存儲(chǔ)的stripe都大于128K,這時(shí)一個(gè)IO還是只有一塊磁盤響應(yīng),由于讀是一個(gè)順序的過程,所以要在數(shù)據(jù)庫這個(gè)級(jí)別加上并發(fā),才可以真正達(dá)到提高吞吐量的目的。 有人要問,stripe到底多大合適?如果我把stripe做得很小,這樣不是很好嗎?一個(gè)IO同時(shí)可以讀很多塊盤,大大提高了吞吐量。我們假設(shè)stripe為1K,Oracle scattered read是完全串行的過程,實(shí)際上在不同的multiblock read之間,存在一定程度的并行。Oracle每次同時(shí)向OS發(fā)送若干個(gè)multiblock read IO請(qǐng)求,然后把返回的結(jié)果合并排序。整個(gè)scattered read應(yīng)該是局部并行,宏觀串行的過程。 所以stripe不能做的很小。stripe到底設(shè)多大,我的觀點(diǎn)是大比小好,不要小于256K,數(shù)據(jù)倉庫應(yīng)用可以設(shè)置的更大一些。ASM對(duì)于數(shù)據(jù)文件的stripe默認(rèn)是1M,我曾經(jīng)覺得1M太大,將其改為128K,結(jié)果發(fā)現(xiàn)1M的性能更好,Oracle也推薦用1M。這說明對(duì)于數(shù)據(jù)庫應(yīng)用來說,stripe size要稍微大一點(diǎn),而不是我們想的越細(xì)或者越分散越好。 存儲(chǔ)劃分 劃分好的LUN輸出到億恩科技主機(jī)后,我們?cè)趺从茫窟@個(gè)就比較靈活多變,首先要看我們的用途,我們是追求IOPS還是吞吐量?我們用file system,raw devices,ASM?存儲(chǔ)輸出的LUN跨在多少塊盤上?一般的存儲(chǔ)沒有虛擬化功能,則輸出的LUN只跨在一個(gè)RAID group上,這時(shí)往往需要利用OS上的LVM來再次劃分一次,看下面的示意圖。 每個(gè)RAID goup有四塊磁盤,建立兩個(gè)LUN,輸出到億恩科技主機(jī)后,用藍(lán)色的一組和紅色的一組LUN分別創(chuàng)建兩個(gè)VG,然后再創(chuàng)建LV(stripe),這下每個(gè)LV就完全跨在了所有的磁盤上。實(shí)際中考慮的問題要更多,有時(shí)候不僅僅要考慮磁盤,還要考慮將負(fù)載分配在不同的控制器,前端卡后端卡和多路徑的問題,相當(dāng)復(fù)雜。有些存儲(chǔ)本身有虛擬化的功能,甚至可以輸出一個(gè)LUN,比如3PAR就可以輸出一個(gè)虛擬卷,這個(gè)卷已經(jīng)跨在所有的磁盤上,我們直接使用就可以了(但實(shí)際工作中這么使用的比較少見)。 Oracle有了ASM,問題就更加復(fù)雜了,我的建議是如果可以的話,存儲(chǔ)只做RAID1,stripe交給ASM去做。如果有些存儲(chǔ)必須要做stripe,也沒問題。存儲(chǔ)劃分是一個(gè)很有技術(shù)含量的工作,必須建立在對(duì)存儲(chǔ),億恩科技主機(jī)和數(shù)據(jù)庫深入了解的基礎(chǔ)上,才有可能做出一個(gè)好的規(guī)劃。 總結(jié):存儲(chǔ)是系統(tǒng)的最底層,因?yàn)榉浅V匾F(xiàn)在市場(chǎng)基本被幾個(gè)大廠商所壟斷,每個(gè)廠家都有一些忽悠人的名詞或者商業(yè)上的炒作,所以我們要擦亮眼睛,謹(jǐn)防被忽悠。 服務(wù)器租用托管專員,億恩天使QQ530997 分享 本文出自:億恩科技【www.ypdoo.com.cn】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |