gpart ディスクアラインメント 4k

loader prompt を選択。
HDD が本当は 4KiB セクタであることを申告する。
set kern.cam.ada.0.quirks="1"
set kern.cam.ada.1.quirks="1"
boot

http://www.bugbearr.jp/?FreeBSD%2F9.0R%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

clicklog: FreeBSD 9.0-RELEASE インストールの練習

Status of support for 4KB disk sectors (2011/07)
http://lists.freebsd.org/pipermail/freebsd-stable/2011-July/thread.html#63300

のスレッドによると、
kern.cam.ada.X.quirks="1" を /boot/loader.conf に設定することで、4Kバイトセクタを使ってるのに512バイトと申告してくるドライブを、4Kバイトセクタのドライブとして扱うことができるようになった。(gpart(8) はその情報を使ってアラインメントなどを行う)
UFSフラグメントサイズも4Kバイトに増やされた。(ので、普通に使ってれば、4Kバイト境界にそろうはず。)
ZFSの場合 gnop を使ってセクタサイズ4Kバイトを強制的に認識させる方法もある
といった感じで、ZFSを使うのでなければそんなに気にすることはなさそうに見える。じゃあ、gpart(8) によるアラインメントってのはどんなものかと検索してみると、

GPT and disk alignment (2011/06)
http://lists.freebsd.org/pipermail/freebsd-fs/2011-June/thread.html#11685

というスレッドの http://lists.freebsd.org/pipermail/freebsd-fs/2011-June/011704.html によると、diskinfo(8) を使って、あるGPTパーティションの stripeoffset が4096の等倍(か0)になっていればアラインメントがいい感じになってると言えるようだ。gpart(8) に "-a 4k" をつけることで4K境界にうまく合わせてくれるので、その後 diskinfo(8) で確認するのがよさそうだ。

というわけで、結論としては FreeBSD 9.0 ではパーティションの作成時に gpart(8) に "-a 4k" をつけるだけで大丈夫のようだ。(なお、FreeBSD 9.0-RELEASE のインストーラで普通にパーティションを作ってしまうと4K境界は気にしないで作られてしまうので、以下の通り、パーティションの作成時は shell から gpart(8) を使って行った方がよさそうだ。)

http://seagull.teak.jp/blog/0157

生ディスクなら最近(?)問題のディスクアラインメントを調整しなくちゃなるまい。
GPT and disk alignment(FreeBSD-FS@ ML)
kern.cam.ada.0.quirks="1"

確認

The easiest way to know is your partition aligned or not - use diskinfo(8).
Example:
# diskinfo -v ada0p3
ada0p3
512 # sectorsize
75731098112 # mediasize in bytes (70G)
147912301 # mediasize in sectors
4096 # stripesize
1024 # stripeoffset
146738 # Cylinders according to firmware.
16 # Heads according to firmware.
63 # Sectors according to firmware.
S0DEJ1NL817767 # Disk ident.

If `echo $stripeoffset % 4096 | bc` is not zero - your partition
is not aligned (where $stripeoffset is value from diskinfo(4) output).

GPT and disk alignment