[ale] If you own (almost) ANY HDD, repartition with 4k boundaries

Ron Frazier (ALE) atllinuxenthinfo at techstarship.com
Thu Jan 3 21:00:09 EST 2013


Hi all,

I recently posted a message about misaligned partitions, to which a 
couple of people replied with info about 4k sectors for HDD's.  I 
decided to post this message with a different subject because this can 
have a much broader impact than many people probably know.  Some of you 
may already know this.  Others may not.  I haven't purchased any new 
drives lately, so I'm just learning about it.

To reiterate what happened, I replaced a 500 GB hybrid SSD HDD with a 
new 750 GB one of newer vintage.  I cloned the hard drive using a 3 year 
old version of Acronis True Image, which had always worked before.  When 
I brought up the new drive in Ubuntu 11.10 Disk Utility, for each 
partition I clicked on, it said the partition boundary was misaligned, 
and performance would suffer.  Based on the responses to the other 
threads, I started doing research.

I'm not the best at explaining this, so bear with me.  See also the 
links and quotes below.

Essentially, all HDD's made after January 2011 are now employing 4096 
byte or 4 KB sectors instead of the traditional 512 byte sectors.  The 
firmware in the drive reports sectors as though they were 512 so legacy 
software will work.  Also, traditionally, the first partition of an MBR 
formatted HDD started on sector 63, after the MBR.  So, if the data from 
a 512 byte sector drive is cloned onto a 4 KB sector drive, the 
partition boundaries will be offset and the data will not align properly 
with the new physical media.  You might think, so what, the firmware is 
translating, no problem.  Wrong!  As it turns out, misaligned partitions 
can lead to write performance which is 10 times slower.

There are the equivalent of 8 - 512 byte sectors in 1 - 4 KB sector.

Let's say you want to read 512 bytes, what your software thinks is 1 
sector.  It sends the request to the HDD.  The firmware finds the actual 
4 KB sector with what you want in it.  It then extracts the 512 bytes 
you want and sends that to you.  That works pretty well.  Writing is a 
whole other matter.

Here's a quote from the Seagate article below:

"A write process can be more complicated, particularly when data the 
host computer attempts to write is a subset of a physical 4K sector. In 
these cases, the hard drive must first read the entire 4K sector 
containing the targeted location of the host write request, merge the 
existing data with the new data and then rewrite the entire 4K sector. 
(On the next revolution.)"

So, if you're writing 512 bytes, the firmware finds and reads the 4 KB 
sector that contains the area you want to write, replaces the 512 bytes 
you're writing while retaining the rest, and writes the sector back to 
the disk.  It has to wait for the platter to spin around again before it 
can rewrite the sector.  At 7200 RPM, this takes an additional 8.3 mS.  
Lets say you're writing 1024 bytes and that bridges two 4 KB sectors.  
The system has to read both sectors, merge 512 bytes into one, then 512 
bytes into the other, then write them back on the next revolution.  You 
get the idea.

The IBM article below indicates that this can lead to a 10 TIMES speed 
degradation if doing small writes.

You fix at least part of the problem by realigning both the start and 
end locations of each partition on the disk to 4 KB boundaries.  The 
standard industry practice seems to be to align them on on 1 MiB 
boundaries, which is a multiple of 4 KB.

So, you want your first partition to start at 1 MiB, which is sector 
number 2048 rather than 63.  I would leave 1 MiB between partitions, and 
make the next partition start and end on 1 MiB boundaries.

I should note that you don't want to do this with Windows XP from what 
I've read.  It expects the 1st partition to be at 63, period.

In my case, I cloned a disk with 512 byte sectors to a disk with 4 K 
sectors, but I kept the partition arrangement exactly the same, which 
had always worked before.  So, everything on the clone ended up being 
misaligned.

Here's why I worded the subject the way I did.

If you have an SSD, you MUST align the partitions properly for optimum 
performance.  They have 4K sectors.

If you have a HDD with 4K sectors, you MUST align it properly for 
optimum performance.

If you have a hybrid SSD HDD with 4K sectors, you MUST align it properly 
for optimum performance.

If you have a hybrid SSD HDD with 512 byte sectors on the platters, you 
MOST LIKELY need to align it properly for optimum performance.  Very 
hard to find any data on this.

AND, if you have a lowly old HDD with 512 byte sectors, and you EVER 
MIGHT clone it to any of the others, you probably need to align it 
properly for optimum performance of the drive that you clone it to.

As was pointed out in the other thread, some cloning software 
understands the 4K sectors.  The older stuff, including my 3 year old 
Acronis True Image, does not.  However, I'm pretty sure that if I align 
the partitions of an old HDD to 1 MiB boundaries, then do an identical 
clone, that should be preserved.  If I let it expand the partitions on 
the new HDD, I don't know.  Even with new software that understands, you 
might have to turn on an option such as align to 4K, align to 1 MiB, 
align to target, etc.

I looked at the manual for Terabyte Unlimited's cloning software and I 
may replace Acronis with that.  The product looks pretty impressive, and 
the manual mentions 4K sectors.  I'm not afraid to pay for something 
this complex and critical if I have to.  I've heard good things about 
Paragon software but don't know anything about it.

You can check to see if you have an alignment conflict with Disk Utility 
(in Ubuntu).  I don't know what program that actually runs.  It will 
only show a message if the drive is partitioned the old way and it has 
4K sectors, apparently.  If the drive is partitioned the old way and you 
have 512 byte sectors, it won't complain.  The version of Disk Utility 
in Ubuntu 11.10 does not partition the drive properly by default.

Because of the potential problems of having ANY drives around with 512 
byte sector alignment (also called cylinder alignment, I think), I've 
decided to repartition all my boot drives and am considering doing the 
archival drives.  I'm putting everything on 1 MiB boundaries whether the 
actual drive has 512 byte or 4K sectors.

The only way I could get into trouble with that is if I partition a 
drive with old software or if I clone a drive with old software and 
resize the partitions.

You can use the latest version of Gparted from gparted.org to 
repartition the drive non destructively with data on it.  You should 
backup the data first.  Don't use the one in Ubuntu, for example.  It's 
old and buggy.  Download the ISO for the Gparted live CD and use that so 
you have the newest version.

This lifehacker article tells how to do it.

http://lifehacker.com/5837769/make-sure-your-partitions-are-correctly-aligned-for-optimal-solid-state-drive-performance

It's a little dated.  The UI for Gparted has changed slightly.  There is 
a drop down box for alignment.  Set this to MiB.  There is no longer an 
align to cylinders check box.

So, here's what I did to all my boot drives.

For the first partition, I simultaneously reduce the size and move the 
boundaries to allow 2 MiB before and after.

Then, I move the partition to the left by 1 MiB as the article indicates.

I then move each other partition that has at least a 2 MiB boundary to 
the left to within 1 MiB.  If any partition doesn't have at least 2 MiB 
to it's left, I first move it to the right up to 2 MiB, then back to 1 
MiB.  This is due to an anomaly in the way Gparted calculates space, as 
mentioned in the article.

When, I'm done, there is 1 MiB before the first partition, although you 
cannot see it on the Gparted drive map.  I have 1 MiB unused spaces 
between partitions.  And, every partition begins and ends on a 1 MiB 
boundary.

This will optimize performance if the drive has 4K sectors, or if it is 
ever cloned to a drive that does.

Doing this, particularly moving the boot partition away from sector 63 
will probably break your boot loader.  The article talks about how you 
can fix a Windows installation with a Windows install disk.  If you 
don't have one handy, you may not want to try this.

See the Gparted faq (below) for info on fixing a Linux boot loader.

Here's how to check if you've finished the job properly using Gparted.

Click on the first partition, right click, and select information.

The first sector should be at 2048.
Look at the total sectors.  In one case, for me, it's 307,183,616.
Get out an engineering calculator that can handle big numbers.  Enter 
this in and divide by 2048.
In my case, the answer is 149,992.  If this is a whole number, with no 
decimal, you're good.

The unused space between each partition should have 2048 total sectors, 
or a multiple of that.

For each other partition, check that the <first sector> / 2048 is a 
whole number
and that the <total sectors> / 2048 is a whole number.

If all the numbers check out, you have optimized your partition 
structure for drives with 4K sectors.

Below are a number of links and some quotes that I found helpful.

I hope this info is helpful to you.

Sincerely,

Ron

---------------------------------------

http://en.wikipedia.org/wiki/Advanced_Format
http://www.zdnet.com/blog/storage/are-you-ready-for-4k-sector-drives/731
http://wdc.custhelp.com/app/answers/detail/a_id/5655
https://ata.wiki.kernel.org/index.php/ATA_4_KiB_sector_issues (geeky)
http://gparted.org/faq.php
http://gparted.org/display-doc.php?name=help-manual
http://gparted.org/display-doc.php?name=help-manual#gparted-fix-grub-boot-problem 


---------------------------------

http://www.seagate.com/tech-insights/advanced-format-4k-sector-hard-drives-master-ti/ 
(good)

"As all hard drive manufacturers have agreed to transition to the 
Advanced Format sector design by January 2011, the industry must adapt 
to and embrace this change to minimize potential negative side effects. "

"A write process can be more complicated, particularly when data the 
host computer attempts to write is a subset of a physical 4K sector. In 
these cases, the hard drive must first read the entire 4K sector 
containing the targeted location of the host write request, merge the 
existing data with the new data and then rewrite the entire 4K sector. 
(On the next revolution.) "

"Fdisk: GNU Fdisk is a command line utility that partitions hard drives. 
Versions 1.2.3 and above support Advanced Format drives. "

"Parted: GNU Parted is a graphical utility for partitioning hard drives. 
Versions 2.1 and above support Advanced Format drives. "

------------------------------

http://www.terabyteunlimited.com/index.htm - cloning software looks cool
http://goinglinux.com/ - Just did a podcast, # 195, on SSD's.

from prior thread - http://jrfom.com/2010/05/03/4kb-sectors/
from prior thread - http://lwn.net/Articles/377895/

-----------------------

from prior thread - 
http://www.ibm.com/developerworks/linux/library/l-4kb-sector-disks/index.html?ca=dgr-lnxw074KB-Disksdth-LX 
(good) (dated)

"Most modern file systems use data structures that are 4096 bytes or 
larger in size. "

"Writes of misaligned data structures, on the other hand, require the 
disk's firmware to first read two sectors, modify portions of both 
sectors, and then write two sectors.
The biggest write performance effects occurred with small file creation 
(extracting the kernel tarball). Effects on tarball extraction ranged 
from 1.04 (for ext4fs) to 25.53 (for ReiserFS), with a mean of 10.9. The 
second-best performer in this test was XFS, with a figure of 1.82. 
Because these figures are ratios of unaligned to aligned performance, a 
value of 10.9 means that a tarball extraction that takes 10 seconds on a 
properly aligned partition takes 109 seconds on an improperly aligned 
partition---a huge difference! The XFS figure of 1.82 means that this 
10-second operation takes 18.2 seconds on an improperly aligned partition. "

-- 

(To whom it may concern.  My email address has changed.  Replying to former
messages prior to 03/31/12 with my personal address will go to the wrong
address.  Please send all personal correspondence to the new address.)

(PS - If you email me and don't get a quick response, you might want to
call on the phone.  I get about 300 emails per day from alternate energy
mailing lists and such.  I don't always see new email messages very quickly.)

Ron Frazier
770-205-9422 (O)   Leave a message.
linuxdude AT techstarship.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ale.org/pipermail/ale/attachments/20130103/a98d8cd7/attachment-0001.html>


More information about the Ale mailing list