[CentOS] ext4, 4k sector alignment

Les Mikesell lesmikesell at gmail.com
Tue Jul 26 20:53:01 UTC 2011


On 7/26/2011 3:11 AM, Andrzej Szymanski wrote:
> On 2011-07-25 19:10, Les Mikesell wrote:
>> My questions for any filesystem experts are:
>>
>> Is there a way to adjust the existing md partitions to get the right
>> alignment for 4k sectors without having to do a file-oriented copy to
>> new partitions?  A resize + a dd copy to shift the position might be
>> feasible time-wise if that would work.
>
> I think so. Your partition starts at sector 63, you need anything
> divisible by 8, so:
> - 64 is my expectation,
> - 56 is a fallback solution if the partition does not fit on the disk
> with 64 sector offset
> - 2048 would be perfect (1M alignment is currently preferred by Centos 6
> and many other OSs)
>
> To be on the safe side, take the disk out of the array (mdadm -f
> /dev/md0 /dev/sdX1 ; mdadm -r /dev/md0 /dev/sdX1) and clear superblock
> using mdadm --zero-superblock /dev/sdX1.
>
> Then repartition the disk using fdisk using the following commands:
> fdisk /dev/sdX
> u   -- display units are sectors
> c   -- no DOS compatibility (== no cyllinder rounding, you definitely
> want that)
> o   -- new dos partition table
> n   -- new partition
> p   -- primary
> 1   -- partition 1
> 64  -- starting offset
> 1465144065 -- exact size here, because (just to be on the safe side) you
> do not want to have a larger partition on a rescue disk than on a base
> disk. Your partition sdh1 has 732572001 1k-blocks, as you wrote in one
> e-mail, multiply this by 2 (sectors) add 64, (starting offset) subtract
> 1 because the offset is inclusive. You get 2*732572001+64-1=1465144065.
> If fdisk complains that this is too much then offset 64 cannot be used
> and you need to repeat the procedure using offset 56 (don't forget to
> recalculate ending sector).
> t   -- type
> fd  -- linux raid autodetect
> w
>
> mdadm -a /dev/mdX /dev/sdX1
>
> And everything should be fine.

Thank you!  That seems to have worked, but now I'm curious as to why the 
partition on the old drives didn't go to the end of the disk - which I 
had expected would have left no extra room.  Was the dos style rounding 
computing the end of a cylinder wrong?

fdisk -lu /dev/sdh (old 3.5")
Disk /dev/sdh: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot   Start         End      Blocks   Id  System
/dev/sdh1       63  1465144064   732572001   fd  Linux raid autodetect

fdisk -lu /dev/sdi (new 2.5")
Disk /dev/sdi: 750.1 GB, 750156374016 bytes
1 heads, 1 sectors/track, 1465149168 cylinders, total 1465149168 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot  Start         End      Blocks   Id  System
/dev/sdi1    64   1465144065   732572001   fd  Linux raid autodetect

The laptop drive is still slower, but not 10x slower like before.  I did 
try something like this earlier trying for a 56 sector offset but must 
have done something wrong.

-- 
   Les Mikesell
    lesmikesell at gmail.com






More information about the CentOS mailing list