圖1

看了第一個(gè)例子,讀者可能會(huì)想,那把起始位右移一個(gè)Block就好了啊,(MBR+Reserved=63Block),就不會(huì)有跨Track的I/O發(fā)生了。接下來(lái)我們?cè)倏戳硗庖粋€(gè)例子。一個(gè)3+1 Raid5的單個(gè)條帶大小為四個(gè)Track,即256個(gè)Block、128KB大小。如果對(duì)于這類(lèi)的磁盤(pán),使用第64個(gè)block為起始位置,當(dāng)linux I/O大小達(dá)到64KB的時(shí)候,如果I/O直接從緩存(單個(gè)track為32KB),則正好完成兩次讀取。但是如果,兩個(gè)連續(xù)的64KB I/O,且需要牽涉到后端Raid5的物理磁盤(pán)讀寫(xiě),如下圖所示,第二個(gè)64KB就會(huì)出現(xiàn)跨越兩個(gè)條帶的情況發(fā)生,從而倒是讀或者寫(xiě)的開(kāi)銷(xiāo)加倍。

圖2

在這種情況下,需要將起始位置調(diào)節(jié)成建議配置(64KB),這樣一來(lái),Linux最大I/O大小的情況也不會(huì)發(fā)生跨多個(gè)條帶的情況發(fā)生了。(圖3)

圖3

所以說(shuō),無(wú)論是從存儲(chǔ)系統(tǒng)的緩存從讀取數(shù)據(jù),還是I/O在緩存中不存在的情況,需要從底層物理磁盤(pán)上讀取數(shù)據(jù)。對(duì)于不同類(lèi)型的磁盤(pán),64KB的起始為是一個(gè)建議配置。

Linux創(chuàng)建分區(qū)對(duì)齊方法:

描述了磁盤(pán)分區(qū)對(duì)齊的原理后,下面介紹如何使用fdisk創(chuàng)建對(duì)齊分區(qū)的例子。在Linux中,對(duì)齊分區(qū)操作需要要空數(shù)據(jù)的情況下進(jìn)行,因?yàn)閷?duì)齊分區(qū)操作會(huì)清空分區(qū)表并且該LUN上的數(shù)據(jù)會(huì)被刪除。在這個(gè)例子中,我們對(duì)/dev/emcpowerfw設(shè)備,創(chuàng)建一個(gè)大小為51281 Cylinder(Cylinder是Symmetrix的計(jì)量單位,每個(gè)Cylinder大小為960KB,所以這個(gè)磁盤(pán)大小為50GB左右)、Offset錯(cuò)位大小為128個(gè)block的磁盤(pán)設(shè)備。方法和命令輸出(圖4)如下

方法1,使用fdisk創(chuàng)建分區(qū)對(duì)齊

Linux命令提示符下輸入:

# fdisk /dev/emcpowerfw

輸入n,創(chuàng)建一個(gè)分區(qū):

輸入p,創(chuàng)建分區(qū)為主分區(qū):

輸入起始Cylinder位置,默認(rèn)為第一個(gè):

輸入最后Cylinder位置,默認(rèn)為該磁盤(pán)設(shè)備的最后一個(gè)Cylinder:

輸入x進(jìn)入expect mode:

輸入b,一定分區(qū)初始位置:

設(shè)定最初位置為128個(gè)block(128 block大小為64KB):

再次輸入p確認(rèn)分區(qū)初始位置信息:

輸入w保存退出:

圖4

方法2:使用parted創(chuàng)建對(duì)齊分區(qū)。Parted和fdisk相比,支持更多的類(lèi)型(支持GPT)和更大的分區(qū)尺寸。下面一個(gè)例子給出一個(gè)給dev/sdb磁盤(pán)創(chuàng)建128bloc分區(qū)起始位的例子,方法和命令輸出如下(圖5)

Linux命令提示符下輸入:

# parted /dev/sdb

將顯示單位調(diào)整為Sector(大小512個(gè)字節(jié)):

(parted) unit s

列出當(dāng)前邏輯卷:

(parted) print

將原來(lái)Number1移除并且創(chuàng)建一個(gè)起始位為128 sector,小為976735934 sector的主分區(qū)。

(parted) rm 1

(parted) mkpart primary 128 976735934

(parted) print

圖5

分享到

huanghui

相關(guān)推薦