您现在的位置是:首页 > 领风资讯 > >> 返回

[兴化网站优化]磁盘分区對(duì)齐的重要性

 

近些年新出的硬盘由于既要增加每个扇区的存储空间,又要保证和现有操作系统的兼容,所以出现了物理扇区和逻辑扇区的概念。而這(zhè)样的硬盘可能(néng)會(huì)产生分区對(duì)齐问题。沒(méi)有做分区對(duì)齐的硬盘性能(néng)會(huì)受到一定的影响。

下面(miàn)写文章来說(shuō)明不做分区對(duì)齐對(duì)分区性能(néng)的影响和如何做分区對(duì)齐。

几个概念:

physical sector:磁盘的一个物理扇区,目前大硬盘一般为4096bytes(4KB),其他的有512bytes(0.5KB)的logical sector:现在physical sector是4096的硬盘往往會(huì)把一个physical sector分成(chéng)8个logical sector,每个512bytes(0.5KB),系统实际操作logical sector:划分logical sector的原因是有些系统调用還(hái)不支持sector为4096bytes(4KB)的磁盘。

LBA:逻辑块寻址方法,实际中表现为系统中用来定位磁盘的logical sector的一个逻辑地址。

block size:系统内對(duì)分区格式化後(hòu)划分的最小磁盘单元。

以一个2T的硬盘为例

查看磁盘physical sector size、logical sector size和容量

  1. # hdparm -I /dev/sdj|egrep -i "physical|logical|device size with M" 
  2. Logical  Sector size:                   512 bytes 
  3. Physical Sector size:                  4096 bytes 
  4. device size with M = 1024*1024:     1907729 MBytes 
  5. device size with M = 1000*1000:     2000398 MBytes (2000 GB) 

說(shuō)明每个physical sector 裡(lǐ)有8个logical sector。

查看文件系统的block size:

  1. # tune2fs -l /dev/sdj1|grep "Block size:" 
  2. Block size:      4096 

我们在给這(zhè)个磁盘做分区的時(shí)候,如果选择0-100%,则會(huì)提示”warning:partition is not properly aligned for best performance“,說(shuō)明這(zhè)種(zhǒng)分区方法使分区的性能(néng)损失,为什麼(me)呢?

如下图所示,一圈代表一个物理扇区,用黑线分割成(chéng)了8个逻辑扇区。沒(méi)有做分区對(duì)齐的分区就(jiù)类似于把分区起(qǐ)始LBA放置在了红线位置。這(zhè)样會(huì)导致什麼(me)後(hòu)果?有100%的block跨越物理扇区,处理任何该分区下的文档都(dōu)會(huì)包含至少一个跨越物理扇区的block,磁盘跨扇区访问每个block,這(zhè)样势必會(huì)影响文件系统的I/O性能(néng)。0-100%的分区行为就(jiù)是因为分区的起(qǐ)始位置沒(méi)有在单个扇区的起(qǐ)始位置才會(huì)产生waring。

我们需要把分区的起(qǐ)始位置放置在扇区的0,才能(néng)保证每个block占用一个独立的扇区,访问单独的block就(jiù)不需要跨越扇区了。可不要小看這(zhè)访问block跨扇区的动作,在有大量磁盘I/O操作時(shí),對(duì)磁盘性能(néng)的影响還(hái)是很显著的。

對(duì)于以上磁盘的情况,我们可以如下分区:

  1. #parted /dev/sdj 
  2. unit s 
  3. mkpart 
  4. ext4 
  5. 40s 
  6. 100% 

注意這(zhè)裡(lǐ)40s的意思是起(qǐ)始LBA位置为40 logical sector,恰好(hǎo)是一个physical的開(kāi)始(40/8=5)。

對(duì)于physical sector size = logical sector size的磁盘,一般不用考虑分区對(duì)齐问题。