パーティションの開始位置について

2014-11-15 11:18:03

はじめに

ファイルシステムのブロックサイズと、パーティション開始位置については、昔はそんなに気にする必要は無かった。しかし大容量時代になり、ハードディスクでは実際のセクタサイズが大きくなったり、SSDではNANDフラッシュの単位が重要だったりで、いろいろ気にする必要がでてきた。 要はアクセスの境界を合わせればよい。

ファイルシステムのブロックサイズ

Windowsではアロケーションユニットサイズという、昔はクラスタと言っていたような。

  1. AFTドライブならセクタサイズに合わせて4KiB。
  2. SSDならフラッシュメモリとSSDコントローラの最小公倍数にあわせて、4KiBか8KiBか16KiB。(これは自分の見解)
  3. ハードウェアRAIDならそれにあわせる。

Windowsでのパーティション開始位置

  1. XPのパーティション確保はまったく4KiBにあっておらず、alignが必要。
  2. Vista/7ではドライブに合わせてオフセットを決めればよい。デフォルトでオフセット1MiBめからパーティションを確保するので4KiB境界にあっており、考慮不要。

Linuxでのパーティションの開始位置

Linuxの場合、4KiB/8KiB/16KiB境界にあわせるには下記のどちらでもよい。

  1. fdisk -H224 -S56で、112セクタ(57344バイトめ)からパーティション確保。将来的な大容量時代にも対応するので、これがおすすめ。
  2. fdisk -H32 -S32で、64セクタ(32768バイトめ)から確保してもよい。わかりやすいが最大容量の限界が低い上に25KiB得するだけなので、そんなにこだわることはない。

余談

  1. ブートローダとしてGRUB、GRUB2を使用する場合はディスクの先頭に最低31KB必要で、その分空けておく必要がある。Linuxでは上記のように空けるのがおすすめ。
  2. Linuxでパーティションの開始位置をシリンダ・ヘッダの境界に合わせているのは慣習的にやっているだけで、あまり意味は無い。気持ちの問題。
  3. VMWareの場合はイメージファイルも合わせないといけないのではないか。と思ったが、VMFSのブロックサイズはMB単位なので、ここの話題とは関係ない。

参考