文件系統(tǒng)的對(duì)齊
文件系統(tǒng)的不對(duì)齊會(huì)在以下兩個(gè)方面影響性能:
1.不對(duì)齊造成了跨硬盤(pán)的訪問(wèn):一個(gè)I/O跨越了兩個(gè)硬盤(pán)(正常來(lái)說(shuō)是只會(huì)訪問(wèn)到一個(gè)硬盤(pán))
2.不對(duì)齊會(huì)讓大的沒(méi)有cache的寫(xiě)操作,變得難以條帶對(duì)齊(strip-align)
第一個(gè)情形是更加容易碰到的。就算磁盤(pán)上的操作使用了cache的緩沖,也會(huì)對(duì)(性能)產(chǎn)生負(fù)面的影響,因?yàn)檫@會(huì)使cache的flushing變慢。隨機(jī)的讀操作(通過(guò)正常要求的磁盤(pán)訪問(wèn)產(chǎn)生的),也會(huì)受到相應(yīng)的影響,不管是直接的(等待兩個(gè)磁盤(pán)的響應(yīng)以便返回?cái)?shù)據(jù))還是間接的(使磁盤(pán)的操作比正常更加忙)。
一個(gè)通常的例子如下圖所示?;趇ntel架構(gòu)的系統(tǒng)是不對(duì)齊的,這是因?yàn)樵獢?shù)據(jù)(Metadata)是被BIOS所寫(xiě)的。在一個(gè)對(duì)齊的系統(tǒng),64KB的寫(xiě)操作會(huì)由單獨(dú)一個(gè)硬盤(pán)來(lái)服務(wù)。
跨越磁盤(pán)的小I/O在一些主機(jī)的類(lèi)型里顯得更加重要,而我們接下來(lái)將會(huì)探討為什么會(huì)導(dǎo)致這種狀況。
當(dāng)以下情況發(fā)生的時(shí)候,跨越磁盤(pán)將會(huì)對(duì)響應(yīng)時(shí)間有一個(gè)顯而易見(jiàn)的影響:
a)有大比例的block size大于16KB的隨機(jī)I/O
b)Navisphere Analyzer報(bào)告的硬盤(pán)的平均等候隊(duì)列長(zhǎng)度比4大的時(shí)候?qū)R4KB或者8KB邊界的時(shí)候(例如Exchange和Oracle),工作負(fù)載將會(huì)從對(duì)齊中獲得一些優(yōu)勢(shì)。但因?yàn)镮/O當(dāng)中,小于6%(對(duì)于4KB)或者12%(對(duì)于8KB)的I/O都會(huì)造成跨盤(pán)操作(碰巧的是他們可能會(huì)以并行的方式來(lái)完成)。這種額外的收益可能很難在實(shí)踐中注意到。但如果當(dāng)一個(gè)特定的文件系統(tǒng)和/或應(yīng)用鼓勵(lì)使用對(duì)齊的地址空間并且位移(offset)被注明,EMC推薦使用操作系統(tǒng)的磁盤(pán)管理來(lái)調(diào)整分區(qū)。Navisphere LUN的綁定位移(offset)工具應(yīng)該要小心的使用,因?yàn)樗赡芊炊鴷?huì)影響分層的應(yīng)用同步速度。
在intel架構(gòu)系統(tǒng)中的文件對(duì)齊
intel架構(gòu)的系統(tǒng),包括windows2000/windows2003,都會(huì)受到在LUN上元數(shù)據(jù)的位置的影響,這也會(huì)導(dǎo)致磁盤(pán)分區(qū)的不對(duì)齊。這是因?yàn)檫z留的BIOS的代碼問(wèn)題,BIOS里面用的是磁柱,磁頭和扇區(qū)地址來(lái)取代LBA地址。
(這個(gè)問(wèn)題一樣影響了使用intel架構(gòu)的linux操作系統(tǒng),正如windowsNT,2000,和2003。這個(gè)問(wèn)題也一樣影響了運(yùn)行在intel硬件上的VMWare系統(tǒng))
fdisk 命令,正如windows的Disk Manager,把MBR(Master Boot Record)放在每一個(gè)SCDI設(shè)備上。MBA將會(huì)占用設(shè)備上的63個(gè)扇區(qū)。其余可訪問(wèn)的地址是緊接著這63個(gè)隱藏分區(qū)。這將會(huì)后續(xù)的數(shù)據(jù)結(jié)構(gòu)跟CLARiiONRAID的stripe變得不對(duì)齊。
在linux系統(tǒng)上,這個(gè)隱藏扇區(qū)的多少取決于boot loader和/或磁盤(pán)管理軟件,但63個(gè)扇區(qū)是一個(gè)最常遇到的情況。對(duì)于VMware,位移(offset)是63。
在任何情況下,這個(gè)結(jié)果都為確定的比例的I/O而導(dǎo)致不對(duì)齊。大的I/O是最受影響的。例如,假設(shè)使用CLARiiON默認(rèn)的stripe element 64KB,所有的64KB的I/O都會(huì)導(dǎo)致跨盤(pán)操作。對(duì)于那些比這個(gè)stripe element的小的I/O,會(huì)導(dǎo)致跨盤(pán)操作的I/O的比例,我們可以通過(guò)以下公式來(lái)計(jì)算:
Percentage of data crossing=(I/O size)/(stripe element size)
這個(gè)結(jié)果會(huì)給你一個(gè)大致的概念,在不對(duì)齊的時(shí)候的開(kāi)銷(xiāo)狀況。當(dāng)cache慢慢被填充的時(shí)候,這種開(kāi)銷(xiāo)會(huì)變得更大。
<未完待續(xù)>