磁盤分區(qū)對齊的重要性
這幾年新出的硬盤由于既要增加每個扇區(qū)的存儲空間,又要保證和現(xiàn)有操作系統(tǒng)的兼容,所以出現(xiàn)了物理扇區(qū)和邏輯扇區(qū)的概念。而這樣的硬盤可能會產(chǎn)生分區(qū)對齊問題。沒有做分區(qū)對齊的硬盤性能會受到一定的影響。
下面寫文章來說明不做分區(qū)對齊對分區(qū)性能的影響和如何做分區(qū)對齊。
先普及幾個概念:
physical sector:磁盤的一個物理扇區(qū),目前大硬盤一般為4096bytes(4KB),其他的有512bytes(0.5KB)的logical sector:現(xiàn)在physical sector是4096的硬盤往往會把一個physical sector分成8個logical sector,每個512bytes(0.5KB),系統(tǒng)實際操作logical sector:劃分logical sector的原因是有些系統(tǒng)調(diào)用還不支持sector為4096bytes(4KB)的磁盤。
LBA:邏輯塊尋址方法,實際中表現(xiàn)為系統(tǒng)中用來定位磁盤的logical sector的一個邏輯地址。
block size:系統(tǒng)內(nèi)對分區(qū)格式化后劃分的最小磁盤單元。
以一個2T的硬盤為例
查看磁盤physical sector size、logical sector size和容量
- # hdparm -I /dev/sdj|egrep -i "physical|logical|device size with M"
- Logical Sector size: 512 bytes
- Physical Sector size: 4096 bytes
- device size with M = 1024*1024: 1907729 MBytes
- device size with M = 1000*1000: 2000398 MBytes (2000 GB)
說明每個physical sector 里有8個logical sector。
查看文件系統(tǒng)的block size:
- # tune2fs -l /dev/sdj1|grep "Block size:"
- Block size: 4096
我們在給這個磁盤做分區(qū)的時候,如果選擇0-100%,則會提示”warning:partition is not properly aligned for best performance“,說明這種分區(qū)方法使分區(qū)的性能損失,為什么呢?
如下圖所示,一圈代表一個物理扇區(qū),用黑線分割成了8個邏輯扇區(qū)。沒有做分區(qū)對齊的分區(qū)就類似于把分區(qū)起始LBA放置在了紅線位置。這樣會導(dǎo)致什么后果?有100%的block跨越物理扇區(qū),處理任何該分區(qū)下的文檔都會包含至少一個跨越物理扇區(qū)的block,磁盤跨扇區(qū)訪問每個block,這樣勢必會影響文件系統(tǒng)的I/O性能。0-100%的分區(qū)行為就是因為分區(qū)的起始位置沒有在單個扇區(qū)的起始位置才會產(chǎn)生waring。
大概明白了吧?我們需要把分區(qū)的起始位置放置在扇區(qū)的0,才能保證每個block占用一個獨立的扇區(qū),訪問單獨的block就不需要跨越扇區(qū)了。可不要小看這訪問block跨扇區(qū)的動作,在有大量磁盤I/O操作時,對磁盤性能的影響還是很顯著的。
對于以上磁盤的情況,我們可以如下分區(qū):
- #parted /dev/sdj
- unit s
- mkpart
- ext4
- 40s
- 100%
注意這里40s的意思是起始LBA位置為40 logical sector,恰好是一個physical的開始(40/8=5)。
對于physical sector size = logical sector size的磁盤,一般不用考慮分區(qū)對齊問題。