パーティションオフセット調整等 (SSD/AFT HDD/RAID)
理屈編
AFT / BigSector / 4096byte/sector とパーティションオフセットの関係
+ | クリックで展開 |
※セクタ0はいわゆるMBR、マスターブートレコードである。セクタ1~62は通常は使用されないが、RAIDカード等が管理情報を書き込む場合があるので互換性の為に開けておくべきである。
|
SSD とパーティションオフセットの関係
+ | クリックで展開 |
|
RAID とパーティションオフセットの関係
+ | クリックで展開 |
|
【Windows 7 + AFT HDD】物理セクタサイズ・オフセット値取得の仕組み
+ | クリックで展開 |
概要
1、BIOS、SATA ホストコントローラーのドライバの対応 2、ATA/ATAPI-7 又は ATA8-ACS に対応しており、しかも物理セクタサイズ等を表明する AFT の HDD 3、ATA/ATAPI-7 又は ATA8-ACS に対応しており、しかも物理セクタサイズ等の取得に対応している OS
AFT の HDD の物理セクタサイズ・オフセット表明の仕組み
word 106 が 4000h の場合 → ホストは物理セクタサイズは 512byte と認識 word 106 が 6003h の場合 → ホストは物理セクタサイズは 4096byte と認識
AFT の HDD の物理セクタサイズ・オフセット取得に対応した OS
各 AFT 採用 HDD や SSD の物理セクタサイズ表明対応状況
word 106 の詳細
Bit 15: この Bit は 0 にしなければならない Bit 14: この Bit は 1 にしなければならない Bit 13: この値が 1 の場合は物理セクタサイズと論理セクタサイズが異なる。 この値が 1 の場合 Bit 3-0 が有効化される Bit 12: この値が 1 の場合は論理セクタサイズは 256 Words より長い Bit 11-4: 未使用 Bit 3-0: 0000b の場合は 物理セクタサイズは論理セクタサイズが 512byte の場合は倍の 1024byte、 同様に 0001b の場合は 4 倍の 2048byte、0011b の場合 8 倍の 4096byte、 0111b の場合 16 倍の 8192KB、1111b の場合 32 倍の 16384KB の意味になる。 word 117-118 で定義される論理セクタサイズが 512byte よりも大きい場合 (例:1024byte)、 Bit 3-0 が 0011b だと物理セクタサイズは更にその 8 倍になる (例:8192byte) 但し現在 512byte を超える論理セクタサイズは互換性の問題がある為、 当分論理セクタサイズは 512byte だと思ってよい 各 Bit は 反対側から読む事 (リトルエンディアン) Bit 15 Bit 0 ↓ ↓ 0100 0000 0000 0000b ↑を 16 進数に直すと 4000h となる。よくわからなければ Windows の関数電卓使え
0100 0000 0000 0000 || Bit 15=0、Bit 14=0 の為 word 106 有効、但し Bit 13 が 0 の為 ホストは物理セクタサイズ=論理セクタサイズ (つまり通常の 512byte/sector) と認識
Bit 15=0、Bit 14=0 の為 word 106 有効 || ||Bit 13=1 の為、Bit 3-0 を読みにいく ||| 0110 0000 0000 0011 |||| Bit 3-0 が 0011b なので、2*2*2 でホストは物理セクタサイズを 論理セクタ の 8 倍 (論理セクタサイズが 512byte の場合 4096byte) と認識する ヘ(^o^)ヘ いいぜ |∧ / / (^o^)/ AFT が PC のパフォーマンスを /( ) 低下させるってなら (^o^) 三 / / > \ (\\ 三 (/o^) < \ 三 ( / / く まずはそのふざけた 物理セクタサイズを取得する!
word 209 の詳細
Bit 15: この Bit は 0 にしなければならない Bit 14: この Bit は 1 にしなければならない Bit 13-0: この Bit は必要なオフセット値を示す word 209 が 16 進数で 4000h の場合 (2進数で 0100 0000 0000 0000b) Bit 15 が 0、Bit 14 が 1 の場合特別なオフセットが必要である事を示す || 0100 0000 0000 0001 || |||| |||| |||| Bit 13-0 は必要なオフセット値を示すが、指定されていないのでオフセットは 0 通常の AFT の HDD は word 209 は 4000h にしなければならない。
Bit 15 が 0、Bit 14 が 1 の場合特別なオフセットが必要である事を示す || 0100 0000 0000 0001 || |||| |||| |||| Bit 13-0 は必要なオフセット値を示す。 word 106 の Bit 3-0 の値 x2 で求められる値 (0011b だと 2^2 の更に 2 倍で 8 になる) から word 209 の Bit 13-0 で示される値 (上の例では 1b = 1) が引かれ、その分 (7) 論理セクタがオフセットされる。 WD20EARS 等でジャンパを使って論理セクタ位置を一つずらしたような状態で 固定されている HDD があるとすれば、Windows XP 未満の OS ではアライメント調整は不要だが 逆に Windows Vista 以上の OS でアライメント調整が必要になってしまう為、 word 209 を 4001h にしなければならない。 |
実践編
新たにパーティションを作成する場合
+ | クリックで展開 |
Windows Vista /7 のインストールディスクを利用する
1、Windows Vista / 7 のインストールディスクから起動し、システム回復オプションからコマンドプロンプトを起動する 2、「Diskpart」コマンドで Diskpart を起動する 3、「select disk 0 (数字は環境によって異なる)」でパーティションを作成する HDD を選択する。 「detail disk」コマンドで接続されている HDD を一覧表示も出来る| 4、「create partition primary align=1024」でパーティションを作成する。 既にパーティションが存在する場合は「clean」コマンドで MBR からパーティション情報を削除できる 5、「exit」で Diskpart を終了する
※あくまでも基本的な流れであって、環境によって必要な操作は異なる。Diskpart ではフォーマットやパーティションのアクティブ化も行える。他にダイナミックディスクへの操作やパーティションの属性等も変更可能。
Windows 上で作成する
※その他にも様々な方法がある。
Linux の Gparted を利用する
WestenDigital の HDD 限定
|
既に存在するパーティションをデータを保ったままオフセットしたい場合
+ | クリックで展開 |
注意
Windows 上で現在のパーティションオフセット位置を確認する
「スタートメニュー」の「ファイル名を指定して実行」をクリック ↓ 「msinfo32」と入力して「OK」をクリック ↓ 「コンポーネント」→「記憶域」→「ディスク」とツリーを辿る ↓ 各ディスクの各パーティションの開始オフセット (byte 単位で表示される) を確認する ↓ 開始オフセットの byte 数を 4096 で割って割り切れればアライメントが合っている。
HDD メーカーが提供するオフセット調整ソフトを使用する
※いずれの場合も RAID ボリュームの一部になっている場合等、接続方式によっては HDD を認識出来ない、或いは調整が行えない場合がある。
Gparted を使用する
|
既に存在するパーティションをコピーする場合
+ | クリックで展開 |
|
NTFS の クラスタ/アロケーションユニットサイズ (ファイルシステムのブロックサイズ)
+ | クリックで展開 |
AFT の HDD、SSD、RAID ボリュームでは基本的に 4KB 未満にしてはいけない
4KB を超えるクラスタサイズのメリットとデメリット
システムドライブのクラスタサイズを 4KB を超えるサイズにする
事前にインストールディスクからコマンドプロンプトを起動し、Diskpart と format コマンドでクラスタサイズ 64KB のパーティションを作成しておけば問題なくそこにインストールが可能。
※1 最低限必要な容量は 460KB 程だが、一応 NTFS は最低でも 10MB 程度確保する事が推奨されてるので 12MB にした
※2 NTLDR はデフォルトの 4KB より大きいサイズ、つまり 8KB~32KB のクラスタサイズに 2000/XP/2003 の NTLDR が対応しているかどうかは不明。64KB には非対応。 ※ いずれも基本パーティションでのみ動作確認
※ いずれも基本パーティションでのみ動作確認
C:\WINDOWS\$NtServicePackUninstall$ に Service Pack ? をインストールするための十分な空きディスク領域がありません。 セットアップには少なくとも ?MB の追加の空き領域が必要です。 また、アンインストールのためのファイルをアーカイブする場合は、セットアップに ?MB の追加の空き領域が必要です。 ハードディスクに空き領域を増やして、再試行してください。 ※ ?は環境によって異なる。詳細なログは \Windows\svcpack.log に保存される
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup]
に文字列値を作成し名前を"BootDir"とし、値を"C:\" (環境によって異なる。Windows のブートパーティションを指定する事) とする事で回避できる。尚、この問題は Intel Mac に Bootcamp を使用して Windows XP 等をインストールした場合にも発生する場合があり、同じ方法で解決する。
|
Windows 7 新規インストール時に作成される隠しパーティションの挙動
+ | クリックで展開 |
1、Windows 7 インストール対象のドライブに事前にパーティションが作成されてない場合
※ パーティションの位置関係は正しいが正確な位置は未確認の為間違っている可能性がある
2、Windows 7 インストール対象のドライブに事前にパーティションが作成されており、かつ他にパーティションが作成されていないドライブが接続されていない場合
※ 事前に作成したパーティション位置によって C:ドライブ位置は変わる。
3、Windows 7 インストール対象のドライブに事前にパーティションが作成されており、かつ他にパーティションが作成されていないドライブが接続されている場合
※ 事前に作成したパーティション位置によって C:ドライブ位置は変わる。
何らかの原因でこの隠しパーティションを削除/変更してしまった場合
|
おい、コピーしたパーティションから OS を起動できないんだが・・・
+ | クリックで展開 |
パーティションがアクティブになってない
ドライブのジオメトリがおかしい
メーカー PC だけど、リカバリ領域から起動出来なくなったんだけど?どうしてくれんの?
どれやっても起動できないんだけど?次はどうすんの?
糸冬 ━━━━━━━ 制作・著作 NHK |