「SSD tech2」の編集履歴(バックアップ)一覧はこちら

SSD tech2 - (2011/05/03 (火) 05:52:08) の最新版との変更点

追加された行は緑色になります。

削除された行は赤色になります。

***理屈編 ****AFT / BigSector / 4096byte/sector とパーティションオフセットの関係 #region(クリックで展開) -従来の HDD は特殊なものを除き 1 セクタあたり 512byte であったが 2010 年頃の新機種から 4096 byte のセクタサイズを採用する機種が現れ始めた。大きなセクタサイズを採用する理由はセクタギャップを減らしプラッタの容量効率を高め ECC の bit 数を増やして信頼性を高める為だが、現在の BIOS、各種 OS・ソフトウェア・デバイスドライバ等との互換性を考え、HDD 内部では 4096 byte/sector であるものの SATA インターフェース上では従来の論理セクタ 512byte の HDD と同様に振舞うエミュレーションデバイスである。その為、従来の 512byte/Sector の HDD を前提に設計されてきた従来のファイルシステム・OS ではパフォーマンスが著しく低下する現象が発生する。PC の場合は各種設定を変更する事でパフォーマンス低下を有る程度解消できるものの HDD レコーダーやナビのようにユーザーが容易に設定を変更できない機器に使用するのは止めた方が良いだろう。またこれらの設定を理解できない人もトラブルを回避する為 512byte/sector 以外の HDD は使用しない方が良い。 |従来の&br()512byte/sector&br()のHDD|物理セクタ&br()=論理セクタ|BGCOLOR(grey):0|BGCOLOR(lightgrey):1|BGCOLOR(grey):2|BGCOLOR(lightgrey):3|BGCOLOR(grey):4|BGCOLOR(lightgrey):5|BGCOLOR(grey):6|BGCOLOR(lightgrey):7|BGCOLOR(grey):8|BGCOLOR(lightgrey):9|BGCOLOR(grey):10|~|BGCOLOR(grey):58|BGCOLOR(lightgrey):59|BGCOLOR(grey):60|BGCOLOR(lightgrey):61|BGCOLOR(grey):62|BGCOLOR(lightgrey):63|BGCOLOR(grey):64|BGCOLOR(lightgrey):65|BGCOLOR(grey):66|BGCOLOR(lightgrey):67|BGCOLOR(grey):68|~| |AFT&br()(4096byte/sector)&br()のHDD|論理セクタ|BGCOLOR(grey):0|BGCOLOR(lightgrey):1|BGCOLOR(grey):2|BGCOLOR(lightgrey):3|BGCOLOR(grey):4|BGCOLOR(lightgrey):5|BGCOLOR(grey):6|BGCOLOR(lightgrey):7|BGCOLOR(grey):8|BGCOLOR(lightgrey):9|BGCOLOR(grey):10|~|BGCOLOR(grey):58|BGCOLOR(lightgrey):59|BGCOLOR(grey):60|BGCOLOR(lightgrey):61|BGCOLOR(grey):62|BGCOLOR(lightgrey):63|BGCOLOR(grey):64|BGCOLOR(lightgrey):65|BGCOLOR(grey):66|BGCOLOR(lightgrey):67|BGCOLOR(grey):68|~| |~|物理セクタ|>|>|>|>|>|>|>|BGCOLOR(grey):0|>|>|BGCOLOR(lightgrey):1|~|>|>|>|>|>|BGCOLOR(grey):7|>|>|>|>|BGCOLOR(lightgrey):8|~| -XP /Server2003 以前の Windows でパーティションを作成すると 63 論理セクタ目がパーティションの先頭になる。通常クラスタ/アロケーションユニットサイズは 4096byte の為、一つのクラスタにアクセスすると実際には二つの物理セクタに跨ってアクセスする事になる為ランダムアクセス性能が半減してしまう。パーティション開始セクタを 64 論理セクタ目に設定する事によりこのような無駄なアクセス大幅に減少する為パフォーマンスが向上する (それでも MFT 等 512byte 単位のアクセスが発生する為 Windows 7 SP1 よりはパフォーマンスが出ない)。以下の例ではパーティション開始セクタを 64 論理セクタにしたが、64 論理セクタ目以降の 8 の倍数論理セクタならどこでもいい (72、80、88、96論理セクタ目等。データドライブとしての利用であれば一応 8 論理セクタ目をパーティション開始セクタにしても Windows で認識可能だがお勧めはしない) 。 -Vista 以降で作成したパーティションの開始セクタは 2048 セクタ目となる。Windows Vista 以降ではシングルパーティションではミスアライメントは発生しないが同じドライブに複数のパーティションを作成した場合ミスアライメントが発生する可能性がある。Windows 7 /Server 2008R2 以降ででは「IDENTIFY DEVICE コマンドで物理セクタサイズ (word 106) やオフセット (word 209) の取得が可能な機種の HDD」を使用した上で AFT の HDD に対応する為の更新プログラム ([[KB982018>>http://support.microsoft.com/kb/982018/en-us]] 又は SP1) を適用した場合完全にミスアライメントが発生しなくなるだけでなく、4KB 以下のブロックサイズのアクセスが完全にゼロになる為 AFT の HDD の本来のパフォーマンスが得られる (Windows Vista /Server 2008 以下の Windows ではオフセットを調整しても僅かだが OS 上で 4KB 未満のアクセスが発生し、僅かでもその悪影響は小さくない)。Windows を例にとって解説したが、他のファイルシステムや OS でも同様の理屈でパーティションオフセット調整が必要な場合がある。どの程度影響を受けるかはファイルシステムによる。[[4KB セクター・ディスクで Linux を使用する: 実用的なアドバイス>>http://www.ibm.com/developerworks/jp/linux/library/l-4kb-sector-disks/]] -AFT とパーティションオフセット (MBR パーティションテーブルの場合) |従来の512byte/sector&br()のHDDの物理セクタ&br()(=論理セクタ)|BGCOLOR(grey):0|BGCOLOR(lightgrey):1|BGCOLOR(grey):2|BGCOLOR(lightgrey):3|BGCOLOR(grey):4|BGCOLOR(lightgrey):5|BGCOLOR(grey):6|BGCOLOR(lightgrey):7|BGCOLOR(grey):8|BGCOLOR(lightgrey):9|BGCOLOR(grey):10|~|BGCOLOR(grey):58|BGCOLOR(lightgrey):59|BGCOLOR(grey):60|BGCOLOR(lightgrey):61|BGCOLOR(grey):62|BGCOLOR(lightgrey):63|BGCOLOR(grey):64|BGCOLOR(lightgrey):65|BGCOLOR(grey):66|BGCOLOR(lightgrey):67|BGCOLOR(grey):68|~| |XPで作成した&br()パーティション|BGCOLOR(palegreen):MBR|||||||||||~||||||BGCOLOR(palegreen):PBR|BGCOLOR(palegreen):|BGCOLOR(palegreen):|BGCOLOR(palegreen):|BGCOLOR(palegreen):|BGCOLOR(palegreen):|~| |64セクタ目から&br()パーティションを&br()開始した場合|BGCOLOR(palegreen):MBR|||||||||||~|||||||BGCOLOR(palegreen):PBR|BGCOLOR(palegreen):|BGCOLOR(palegreen):|BGCOLOR(palegreen):|BGCOLOR(palegreen):|~| |AFT(4096byte/sector)の&br()HDDの物理セクタ|>|>|>|>|>|>|>|BGCOLOR(grey):0|>|>|BGCOLOR(lightgrey):1|~|>|>|>|>|>|BGCOLOR(grey):7|>|>|>|>|BGCOLOR(lightgrey):8|~| ※セクタ0はいわゆるMBR、マスターブートレコードである。セクタ1~62は通常は使用されないが、RAIDカード等が管理情報を書き込む場合があるので互換性の為に開けておくべきである。 -GPT パーティションテーブルを使用している場合は論理セクタ 0 にはダミーの MBR があり、論理セクタ 1 に GPT ヘッダー、論理セクタ 2~33 にパーティションエントリが記述されている。またディスク後端に予備の GPT ヘッダーとパーティションエントリがある。 -[[Wikipedia>>http://ja.wikipedia.org/wiki/GUID%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB]] -[[microsoft>>http://msdn.microsoft.com/ja-jp/windows/hardware/gg463524.aspx]] ---- #endregion ****SSD とパーティションオフセットの関係 #region(クリックで展開) -SSD が使用している NAND フラッシュメモリは書き込みはページ、消去はブロック単位でアクセスする構造になっており、IMFT 34nm では ページサイズは 4KB、IMFT 25nm ではページサイズ 8KB 、IMFT 34/25nm の場合ブロックサイズはページサイズの 256 倍である (これらのパラメータは NAND フラッシュメモリの機種によって異なる) なので AFT 同様パーティションオフセットを調整した方がパフォーマンスが高まったり、二つのブロックに跨った書き込みが減る為 WA も低くなる場合が多い。 -但し同じ NAND フラッシュメモリを使用していても SSD コントローラーの構造・制御方法によってオフセットの重要度が大きく違い単純に NAND フラッシュメモリのページ・ブロックサイズのサイズだけオフセットすれば良いというものでもない。例えば Intel の X25-M (G1/G2) や PLDS M2S/CORSAIR P3 は 512byte 単位のアクセスが高速である (うまくコントローラーがアライメントのズレを隠蔽している) 為パーティションオフセットを気にする必要は殆ど無く RealSSD C300 の場合は 4096byte 以下のブロックサイズのアクセスを非常に苦手としている為パーティションオフセット調整は必須である。それ以外の SSD もできれば調整した方が良い。具体的なオフセット位置は AFT の HDD 同様 64 セクタ目 や 2048 セクタ目 にすれば大抵は問題ない。SSD コントローラーによっては特殊な位置にオフセットした方が性能が良くなる可能性があり、SSD のメーカーやベンダーが推奨オフセットを公開している場合はそれに従う事。 -AFT の HDD 同様物理セクタサイズを表明する仕組みを使用すればパーティションオフセット調整が必要な SSD のパフォーマンスを高められる。 ---- #endregion ****RAID とパーティションオフセットの関係 #region(クリックで展開) -RAID0、RAID5、RAID6、あるいはそれ以上のレベルのストライピングではパーティションオフセットはストライプサイズの整数倍にするべきでミスアライメントの場合 AFT や SSD 同様にパフォーマンスが低下する。microsoft は殆どのストライプサイズに対応できる 2048 セクタにアライメント調整する事を推奨している。AFT の HDD を使用する場合はストライプサイズは必ず 4KB か 4KB の整数倍のサイズにする事。 ---- #endregion ****【Windows 7 + AFT HDD】物理セクタサイズ・オフセット値取得の仕組み #region(クリックで展開) &color(#3366CC){&font(18){概要}} -物理セクタサイズを取得するには以下の条件が揃っている必要がある 1、BIOS、SATA ホストコントローラーのドライバの対応 2、ATA/ATAPI-7 又は ATA8-ACS に対応しており、しかも物理セクタサイズ等を表明する AFT の HDD 3、ATA/ATAPI-7 又は ATA8-ACS に対応しており、しかも物理セクタサイズ等の取得に対応している OS &color(#3366CC){&font(18){AFT の HDD の物理セクタサイズ・オフセット表明の仕組み}} -ATA/ATAPI-7 からは IDENTIFY DEVICE の word 106 で物理セクタサイズ、117-118 で論理セクタサイズを取得でき、ATA8-ACS では更に word 209 でオフセット値が定義されている。これらのパラメータは固定値なので HDD の状態によって変化する事はなく機種ごとに値は固定されている。これらの IDENTIFY DEVICE 情報はたとえ ATA8-ACS に対応した AFT の HDD であっても表明しない、或いは表明していても 512byte と偽りの情報を持っているものがあり、確認するにはそれぞれの HDD/SSD のデータシートを参照し、明記されていない場合は実機を使用して ExamDisk 他のディスクのパラメータ取得ツールで確認する必要がある。 word 106 が 4000h の場合 → ホストは物理セクタサイズは 512byte と認識 word 106 が 6003h の場合 → ホストは物理セクタサイズは 4096byte と認識 -[[smartmontools の forum より解説>>http://sourceforge.net/apps/trac/smartmontools/ticket/62]] -[[AF Tech.book (IDEMA、PDF)>>http://www.idema.org/wp-content/plugins/download-monitor/download.php?id=1178]] -[[ExamDisk (現在の環境・ドライブで物理セクタサイズを取得できるか確認可能、よっしゅの館より)>>http://hpcgi1.nifty.com/yosh/sp/aft/]] &color(#3366CC){&font(18){AFT の HDD の物理セクタサイズ・オフセット取得に対応した OS}} -Windows 7 /Server 2008R2 以降で AFT 対応修正パッチ適用済みの場合はこれらの値を取得できた場合にパーティションをフォーマットする際に物理セクタサイズ未満のクラスタサイズは使用出来なくなり、物理セクタサイズ未満のブロックサイズでのアクセスもしなくるので AFT が原因のパフォーマンス低下はしなくなる。 -[[Windows の AFT ドライブへの対応状況 (Windosw 7 /Server 2008R2 以降は修正プログラムの適用で完全にミスアラインが発生しなくなる。Vista /Server 2008 の場合は物理セクタ取得には対応しないが AFT の HDD を使用したときに発生しうる問題を修正するプログラムが提供されている。512byte エミュレーションではない 4096byte ネイティブのドライブには対応しない。microsoft)>>http://support.microsoft.com/kb/2510009/ru/en-us]] ---- &color(#3366CC){&font(18){各 AFT 採用 HDD や SSD の物理セクタサイズ表明対応状況}} #openclose(){ |WestenDigital 3.5" |WD**EARS-00MVWB0 以前は現在のところ"非対応"報告のみ| |~ |WD10EARS-22Y5B1 は"対応"報告あり| |~ |WD**EARX-* 不明 | |~ |WD**EZRS-* 不明 | |~ |WD**EZRX-* 不明 | |HGST 3.5" |AFT の機種無し (今後 WD に売却)| |HGST 2.5" |全数対応? (現在の所"対応"報告のみ)| |Seagate 3.5" |ST2000DL003 は非対応 (データシートより)| |Samsung 3.5" |全数非対応 (HD204UI は非対応、今後 Seagate に HDD 部門売却)| |東芝 2.5" |全数対応? (現在の所"対応"報告のみ)| |各社 SSD |現在のところ"対応"の機種見当たらず| } ---- &color(#3366CC){&font(18){word 106 の詳細}} #openclose(){{ -word 106 の各 Bit の意味 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 の関数電卓使え -word 106 が 16 進数で 4000h の場合 (2進数で 0100 0000 0000 0000b) 0100 0000 0000 0000 || Bit 15=0、Bit 14=0 の為 word 106 有効、但し Bit 13 が 0 の為 ホストは物理セクタサイズ=論理セクタサイズ (つまり通常の 512byte/sector) と認識 -word 106 が 16 進数で 6003h の場合 (2進数で 0110 0000 0000 0011b) 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) と認識する #aa(){                        ヘ(^o^)ヘ いいぜ                          |∧                        /  /                  (^o^)/ AFT が PC のパフォーマンスを                 /(  )    低下させるってなら        (^o^) 三  / / >  \     (\\ 三  (/o^)  < \ 三   ( /  / く  まずはそのふざけた        物理セクタサイズを取得する! } }} ---- &color(#3366CC){&font(18){word 209 の詳細}} #openclose(){ -word 209 の各 Bit の意味 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 にしなければならない。 -word 209 が 16 進数で 4001h の場合 (2進数で 0100 0000 0000 0001b) 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 にしなければならない。 } ---- #endregion ***実践編 ****新たにパーティションを作成する場合 #region(クリックで展開) &color(#3366CC){&font(18){Windows Vista /7 のインストールディスクを利用する}} -Windows Vista /7 のインストール DVD (評価版でも良い) を持っている場合、これから起動しシステム修復オプションから起動できるコマンドプロンプトにて Diskpart コマンドを使いパーティションを作成する。オプションとして"align=1024" (align=数値 の数値は KB 単位。1024 と入力した場合は 1024 KB = 2048 セクタ目からパーティションを開始する事になる。) 等を指定してオフセットを揃えてパーティションを作成する。 -Windows XP のインストールディスクでは Diskpart は使用可能だが「align=n」等のオプションが存在しない為 Windows XP のインストールディスクではアライメントを考慮したパーティションを作成する事は不可能である。 -[[Dickpart コマンドについて>http://support.microsoft.com/kb/300415/ja]] -[[Diskpart の各コマンドとそのオプション>http://technet.microsoft.com/ja-jp/library/cc766465%28WS.10%29.aspx]] -[[RAID の場合>http://support.microsoft.com/kb/929491/ja]] -[[Windows 7 Enterprise 90 日評価版 (2011/12/31 迄、IT プロフェッショナルが対象の為それ以外の職業の場合はダウンロード不可。またダウンロードの目的が Microsoft の意図しないものである場合もダウンロード不可。Live ID でのサインインが必要。)>>http://technet.microsoft.com/ja-jp/evalcenter/cc442495]] -Diskpart コマンドでパーティションを作成する手順 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 ではフォーマットやパーティションのアクティブ化も行える。他にダイナミックディスクへの操作やパーティションの属性等も変更可能。 &color(#3366CC){&font(18){Windows 上で作成する}} -フリーソフトの [[ExamDisk>>http://hpcgi1.nifty.com/yosh/sp/aft/]] を使用すれば面倒なセクタ位置の計算無しで Windows 上で手軽にオフセットが合ったパーティションを作成できる。但しシステムパーティションの位置を変更することは不可能。 -Windows Vista 以降がインストール済みの PC と SATA-USB 変換アダプタを持っている場合は Windows Vista 以降の PC に USB 接続してパーティションを確保すればオフセットが合ったパーティションを作成できる。但し複数のパーティションを作成すると二番目以降のパーティションはオフセットが合わなくなる場合がある。 ※その他にも様々な方法がある。 &color(#3366CC){&font(18){Linux の Gparted を利用する}} -フリーソフトの [[Gparted Live CD/USB>>http://gparted.sourceforge.net/download.php]] を使用し、「Align to」で「MiB」 単位にアライメントを合わせたパーティションを作成する。この場合、特に前方に余白を取らなければパーティション開始オフセットは 1024KB (2048 セクタ目) になる。パーティション作成後に「情報 (infomation)」でパーティションオフセットを確認可能。旧バージョンやパーティション開始セクタを 64 セクタ目にしたい等の場合は[[ここ>http://tri.dw.land.to/doc/1002270WDxxEARS_AFT.html]]を参考に Terminal からセクタ位置を指定してパーティションを作成する事もできる。尚、Gparted は Gparted Live CD だけでなく各 Linux ディストリビューションや Ultimate BOOT CD 等にも統合されており、同様の方法でパーティションの作成が可能。 &color(#3366CC){&font(18){WestenDigital の HDD 限定}} -WD の HDD の場合、セクタ位置を一つずらす為のジャンパが用意されている。作成するパーティションが一つだけの場合はこのジャンパをショートさせるだけでよい。(但し、既にデータを保存している HDD のジャンパ変更したり経年劣化でジャンパが接点不良になると全てのデータが見えなくなるので注意) ---- #endregion ****既に存在するパーティションをデータを保ったままオフセットしたい場合 #region(クリックで展開) &color(#3366CC){&font(18){注意}} -データが入っているパーティションの位置を変更する場合、データの量にもよるが、TB 級の HDD でしかもデータがパンパンに入っている場合日単位の時間が掛かる場合があり、またパーティション操作ソフトの誤作動や実行中の停電等により全てのデータを失う場合があるので基本的に勧められない方法である。他に HDD を用意しデータを逃がしておいて新たにパーティションを作成した方が速い。 &color(#3366CC){&font(18){Windows 上で現在のパーティションオフセット位置を確認する}} 「スタートメニュー」の「ファイル名を指定して実行」をクリック ↓ 「msinfo32」と入力して「OK」をクリック ↓ 「コンポーネント」→「記憶域」→「ディスク」とツリーを辿る ↓ 各ディスクの各パーティションの開始オフセット (byte 単位で表示される) を確認する ↓ 開始オフセットの byte 数を 4096 で割って割り切れればアライメントが合っている。 &color(#3366CC){&font(18){HDD メーカーが提供するオフセット調整ソフトを使用する}} -WD の HDD の場合、[[「WD Align - Paragon (Paragon OEM)」か「True Image WD Edition (Acronis True Image OEM)」が利用可能。>http://support.wdc.com/product/download.asp?groupid=805&lang=en]] -HGST の HDD の場合は HGST が配布している [[Hitachi Align Tool (Acronis True Image OEM)>http://www.hitachigst.com/support/downloads/#ALIGN]] が利用可能。 -それ以外のメーカーの HDD、SSD を使用している場合は商用ソフトを利用する事になる。 ※いずれの場合も RAID ボリュームの一部になっている場合等、接続方式によっては HDD を認識出来ない、或いは調整が行えない場合がある。 &color(#3366CC){&font(18){Gparted を使用する}} -[[Gparted Live CD/USB>>http://gparted.sourceforge.net/download.php]] ではファイルを保ったままパーティションサイズの変更及びオフセット位置の変更が出来る。 ---- #endregion ****既に存在するパーティションをコピーする場合 #region(クリックで展開) -フリーソフトの [[Gparted Live CD/USB>>http://gparted.sourceforge.net/download.php]] を使用し、移行先のドライブに「Align to」で「MiB」 単位にアライメントを合わせたパーティションを作成する。この場合、特に前方に余白を取らなければパーティション開始オフセットは 1024KB (2048 セクタ目) になる。パーティション作成後に「情報 (infomation)」でパーティションオフセットを確認可能。旧バージョンやパーティション開始セクタを 64 セクタ目にしたい等の場合は[[ここ>http://tri.dw.land.to/doc/1002270WDxxEARS_AFT.html]]を参考に Terminal からセクタ位置を指定してパーティションを作成する事もできる。次に移行元のドライブのパーティションを移行先のドライブの先ほど作成したパーティションにコピーする。こうするとパーティションの際に任意のオフセットを行える。コピーしたパーティションがブートドライブの場合はこの作業では自動的にフラグは付かないのでコピー後に手動で boot フラグを付加する (MS-DOS 用語で言うところのパーティションをアクティブ化する) 事を忘れないように。またこの方法では移行先ドライブの MBR のブートストラップローダは Gparted のものになるので HDD リカバリ等の特殊な MBR が必要な PC のパーティションをコピーする際は注意。この手順でパーティションをコピーした場合は初回起動時は chkdsk によるチェックが始まり、チェック後一度再起動する。二回目の起動時にプラグアンドプレイでデバイスの変更 (HDD交換、あるいはSSDへの換装) が検出される為にもう一度再起動が必要である。尚、Gparted は Gparted Live CD だけでなく各 Linux ディストリビューションや Ultimate BOOT CD 等にも統合されており、同様の方法でパーティションの作成が可能。 -WD か HGST の HDD の場合はパーティションオフセットが考慮された Acronis True Image の OEM 版を無償で利用可能。ダウンロード先は上記の「既に存在するパーティションをデータを保ったままオフセットしたい場合」を参照する事。 -Seagate の場合「Seagate DiscWizard」、Intel の SSD の場合「Intel Data Migration Software」(いずれも Acronis True Image OEM) が利用可能だが、こちらはパーティションオフセットが考慮されているかは不明。 -その他の AFT 対応のパーティションバックアップソフトやパーティション編集ソフトでも可能。 #endregion ---- **NTFS の クラスタ/アロケーションユニットサイズ (ファイルシステムのブロックサイズ) #region(クリックで展開) &color(#3366CC){&font(18){AFT の HDD、SSD、RAID ボリュームでは基本的に 4KB 未満にしてはいけない}} -AFT の HDD 上のパーティションのフォーマット時には物理セクタサイズである 4KB を下回るクラスタサイズ (ブロックサイズ/アロケーションユニットサイズ) は選択してはいけない。理由はパーティションアライメントと同様。 NTFS のデフォルトのクラスタサイズは 4096byte なので特に弄らない限りは問題ない。RAID0/5/6 等のストライピングボリューム上のパーティションのクラスタサイズはストライプサイズの整数倍にする事。SSD の場合は基本的に 4KB 以上であれば問題ないが、将来的に NAND フラッシュメモリのページサイズが更に大きくなった際には 8KB やそれ以上でないと本来のパフォーマンスが出ない機種が登場する可能性がある。NTFS 以外のファイルシステムでもブロックサイズ等の名称で同様の設定がある。 &color(#3366CC){&font(18){4KB を超えるクラスタサイズのメリットとデメリット}} -従来の物理セクタ 512byte の HDD でもクラスタサイズは大きければ大きいほどドライブへアクセスする際のブロックサイズが大きくなるため若干だが体感速度が向上し、MFT やレジストリハイブ等の通常のデフラグでは断片化を解消できないものを含めファイルシステムの断片化が発生しにくくなる為継続使用時のフラグメンテーションによる体感速度の悪化もしにくくなる。通常はデフラグせずに使用する SSD にもお勧めである。但しクラスタギャップが増え容量の無駄が大きくなる。また NTFS では 4KB を超えるクラスタサイズではファイルシステム暗号化・圧縮が使用できない。クラスタサイズを指定してパーティションをフォーマットするにはディスクの管理上で GUI で行う方法の他、コマンドプロンプトにて「format z: /FS:ntfs /A:64kb /Q (z: は例であって実際にはフォーマットしたいドライブ文字を指定する)」等のコマンドを使う。 &color(#3366CC){&font(18){システムドライブのクラスタサイズを 4KB を超えるサイズにする}} -Windows 7 の場合 #openclose(){ 事前にインストールディスクからコマンドプロンプトを起動し、Diskpart と format コマンドでクラスタサイズ 64KB のパーティションを作成しておけば問題なくそこにインストールが可能。 } -VISTA は不明。 -2000 /XP /2003 Server の場合 #openclose(){ -NTLDR が 64KB セクタには対応してないので NTLDR 等のブートローダだけはクラスタサイズ 4KB のシステムパーティションを作成し配置する必要がある。 -新規インストール場合、OS をインストールする前に Windows Vista /7 のインストールディスク等にて、予め Diskpart と format コマンドを使用してクラスタサイズ 64KB の OS インストール用パーティション (ブートパーティション) とアクティブにしたクラスタサイズ 4KB の NTLDR 用パーティション (システムパーティション) を作成して置く必要がある。パーティション配置の一例を以下に示す。(VISTA でも同様に BOOTMGR を別パーティションに配置することでインストール可能と思われる) この状態で普通に Windows をインストールすれば勝手に NTLDR 等のファイルはクラスタサイズ 4KB のパーティションに配置され、後は普通に使用可能。 -例 |LBA|0|1~1023|1024~25599 (12MiB※1)|25600~| |状態|BGCOLOR(palegreen):MBR|空き|BGCOLOR(palegreen):C:\、システムパーティション、NTLDR 等&br()クラスタサイズ 4KB、アクティブ|D:\、ブートパーティション、OS 等&br()クラスタサイズ 64KB ※2| ※1 最低限必要な容量は 460KB 程だが、一応 NTFS は最低でも 10MB 程度確保する事が推奨されてるので 12MB にした ※2 NTLDR はデフォルトの 4KB より大きいサイズ、つまり 8KB~32KB のクラスタサイズに 2000/XP/2003 の NTLDR が対応しているかどうかは不明。64KB には非対応。 ※ いずれも基本パーティションでのみ動作確認 -上の例では NTLDR 等が配置されるシステムパーティションを先頭に配置したが、このままでは OS がインストールされるブートパーティションは D:\ になり一部のアプリケーションが正常に動作しない、あるいは OS のドライブが D:\ だとなんとなく気持ち悪いという問題が発生する。この場合、ドライブ先頭のパーティション (C:\ とする) のクラスタサイズを 64KB にしておき、ドライブ末尾に NTLDR 等を配置する為の 10MB 程度のパーティションを配置 (D:\ とする) してクラスタサイズ 4KB でフォーマットしアクティブにしておいて Windows をインストールすると良い。こうすると勝手にクラスタサイズ 4KB のパーティションに NTLDR 等が配置され普通にインストールが可能。(勝手に NTLDR 等が配置されない場合があり、その場合は Windows のインストール中最初の再起動後に"A disk error occard"等のエラーメッセージが出てどうにもならなくなってしまう。これは C:\ に NTLDR 等が配置されてしまった場合に発生し、NTLDR が 64KB のクラスタサイズに対応していない事が原因で起動プロセスが途中で停止する為に起こる。この場合は Windows Vista /7 のインストールディスクにて xcopy コマンドを使用するか CD ブートの Linux や他の PC を使用し、C:\ に配置されてしまった NTLDR、boot.ini、bootfont.bin、NTDETECT.COM を D:\ にコピーしてやると Windows のセットアップが起動できるようになる。その際、C:\ がアクティブになってしまっていたら C:\ から BOOT フラグを削除し D:\ に BOOT フラグを付ける必要がある。) -例 |LBA|0|1~1023|1024~20972543 (10GiB)|20972544~31458303 (10MiB)| |状態|BGCOLOR(palegreen):MBR|空き|C:\、ブートパーティション、OS 等&br()クラスタサイズ 64KB|BGCOLOR(palegreen):D:\、システムパーティション、NTLDR 等&br()クラスタサイズ 4KB、アクティブ| ※ いずれも基本パーティションでのみ動作確認 -2000 /XP /2003 Server で既に使用中の OS 用パーティションのクラスタサイズを変更したい場合は、他の HDD/SSD を用意し上の例を参考にパーティションを作成する。そして OS 用パーティション直下にある ntldr /boot.ini[[(Partition(*) 部分等は移行後の環境に合わせて編集が必要)>>http://www.atmarkit.co.jp/fwin2k/win2ktips/502bootini/bootini.html]] /bootfont.bin /NTDETECT.COM /bootsect.dos(マルチブート環境のみ) を NTLDR 用パーティションにコピーし、他のファイルを 4KB を超えるクラスタサイズでフォーマット済みのパーティションに配置 (コピー元のパーティションにインストールされている OS から起動している場合はコピーできないファイルがあるので CD ブートの Linux や Windows Vista 以降のインストールディスクの xcopy コマンド等で作業を行うこと) し、現在の HDD と交換する。 -これらの例では NTLDR 等が格納されたシステムパーティションはマイコンピューターに表示されたままになるが、なんとなく消したい場合でもディスクの管理からはシステムパーティションのドライブ文字の削除等は行うことはできない。この場合は Gparted 等を利用し、"システム"パーティションに"hiddun"フラグを付けてやると Windows ではドライブ文字が消えマイコンピューターには表示されなくなる。しかしこのようにしてドライブ文字を消してしまうと Windows のシステムのプロパティ上での boot.ini の編集が不可能になる。 ---- -上のように強引に NTLDR、boot.ini、bootfont.bin、NTDETECT.COM 等を他のドライブに配置した場合、特にサービスパックなどの大容量の修正パッチを適用しようとすると C:\WINDOWS\$NtServicePackUninstall$ に Service Pack ? をインストールするための十分な空きディスク領域がありません。 セットアップには少なくとも ?MB の追加の空き領域が必要です。 また、アンインストールのためのファイルをアーカイブする場合は、セットアップに ?MB の追加の空き領域が必要です。 ハードディスクに空き領域を増やして、再試行してください。 ※ ?は環境によって異なる。詳細なログは \Windows\svcpack.log に保存される -といったエラーでサービスパックや修正パッチがあてられなくなる。これは実際にドライブの空き領域が十分にあったり /nobuckup オプションを付けても発生する。原因はサービスパックを適用する途中経過で NTLDR 等のファイルが存在を確認する為で、ブートパーティションにもしも NTLDR、boot.ini、bootfont.bin、NTDETECT.COM が無ければ CD ブートの Linux 等を使用してシステムパーティションからこれらのファイルをブートパーティションにコピーしてやった上で、 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup] に文字列値を作成し名前を"BootDir"とし、値を"C:\"とする事で回避できる。尚、この問題は Intel Mac に Bootcamp を使用して Windows XP 等をインストールした場合にも発生する場合があり、同じ方法で解決する。 -[[参考:Help Installing SP3 Error Everytime>>http://social.technet.microsoft.com/forums/en-US/itproxpsp/thread/28bcf118-f377-4b2a-a57e-6894abcf5c53/]] } ---- #endregion **Windows 7 新規インストール時に作成される隠しパーティションの挙動 #region(クリックで展開) -[[参考 Windows 7/2008 R2のインストールにおけるパーティション構成とデュアル/マルチブート>>http://www.corso-b.net/itaya/TIPS/TIPS05.html]] ---- &color(#3366CC){&font(15){1、Windows 7 インストール対象のドライブに事前にパーティションが作成されてない場合}} -C:ドライブの前に 100MiB の「システム予約済み」パーティションが作成される。内容は起動に必要なブート・コード(BCD ストア)とシステム回復オプションで使用されるファイルが格納される他 C:ドライブに BitLocker 暗号化を使用する場合は暗号化されたパーティションにはブート・コードを置けない為このパーティションがあると便利である。C:ドライブではなくこの 100MiB のパーティションがアクティブになる。[[ちなみに BitLocker ドライブ暗号化が使用出来るのは Windows Server 2008R2 と Windows 7 では Ultimate と Enterprise Edition のみである>>http://windows.microsoft.com/ja-JP/windows7/products/features/bitlocker]]ので他の Edition の場合はこのシステム予約済みパーティションは不要である。 (Ultimate /Enterprise /Server 2008R2 でもこのパーティションを削除しても C:\ ドライブ以外のリムーバブルドライブやブートドライブ以外のドライブの暗号化は可能であるし、他にブートマネージャを格納するドライブがあれば C:\ の暗号化も可能。) ||セクタ0|セクタ1~2047?|セクタ2048~206847?|セクタ206848~?|・・・| |ドライブ1|BGCOLOR(palegreen):MBR|空き|BGCOLOR(palegreen):システム予約済み(100MiB、アクティブ)|C:ドライブ|~| ※ パーティションの位置関係は正しいが正確な位置は未確認の為間違っている可能性がある ---- &color(#3366CC){&font(15){2、Windows 7 インストール対象のドライブに事前にパーティションが作成されており、かつ他にパーティションが作成されていないドライブが接続されていない場合}} -本来隠しパーティションに格納されるはずのファイルは C:ドライブの隠しフォルダに格納される。その為他にブート・コードを格納するドライブを用意しない限り C:ドライブを BitLocker で暗号化する事は出来ない。 ||セクタ0|セクタ1~2047|セクタ2048~|・・・| |ドライブ1|BGCOLOR(palegreen):MBR|空き|C:ドライブ(アクティブ)|~| ※ 事前に作成したパーティション位置によって C:ドライブ位置は変わる。 ---- &color(#3366CC){&font(15){3、Windows 7 インストール対象のドライブに事前にパーティションが作成されており、かつ他にパーティションが作成されていないドライブが接続されている場合}} -他のドライブの先頭に 100MB 程度の隠しパーティションが作成され、そのパーティションにブート・コードが配置されアクティブに設定される。このドライブを取り外すと Windows 7 は起動しなくなる。 ||セクタ0|セクタ1~2047|セクタ2048~|・・・| |ドライブ1|BGCOLOR(palegreen):MBR|空き|C:ドライブ|~| |ドライブ2|BGCOLOR(palegreen):MBR|空き|BGCOLOR(palegreen):システム予約済み(100MiB、アクティブ)|~| ※ 事前に作成したパーティション位置によって C:ドライブ位置は変わる。 ---- &color(#3366CC){&font(15){何らかの原因でこの隠しパーティションを削除/変更してしまった場合}} -上記の 1 の場合にこの隠しパーティションを削除してしまったり、3 の場合に他のドライブを取り外した場合は当然 Windows 7 は起動不能になる。Windows 7 のインストールディスクから起動すると自動的に修復できる。 ---- #endregion **おい、コピーしたパーティションから OS を起動できないんだが・・・ #region(クリックで展開) &color(#3366CC){&font(18){パーティションがアクティブになってない}} -基本中の基本だが、OS がインストールされているパーティションはアクティブ (BOOT フラグ) という状態になっていなければならない。具体的には MBR のパーティションテーブルのブート識別子がマークされている状態の事で、パーティションをアクティブにするには通常は FDISK、Windows のディスクの管理、Windows の Diskpart、Linux の Gparted その他のパーティション編集ツールを使う。正直言ってこれが原因で起動できてなかったとしたらかなり恥ずかしい。 &color(#3366CC){&font(18){ドライブのジオメトリがおかしい}} -他のドライブからパーティションをコピーした環境で極稀に起こりうる。MBR のパーティションテーブルやパーティションブートセクタには C/H/S 方式のジオメトリが書いてあり、パーティションコピーソフトはこれをそのままコピーする場合が多いがこれがコピー先のドライブやそのドライブを使用している環境に合致していない場合に Windows 2000 /XP /2003 Server やそれより古い OS は起動しなくなる。解消するには知識があればジオメトリを編集しても良いし、簡単で確実なのはパーティションコピーではなく移行先のドライブに先にパーティションを作成しておき、移行元ドライブの内容をファイル単位で隠しファイルも含めコピーする。もちろん移行元のドライブから OS を起動している場合はコピーできないファイルもあるので CD ブートの Linux 等でコピーを行う。ゆとりは知らない場合が多い。 -[[参考:Vector>>http://hp.vector.co.jp/authors/VA012947/pcat/bios_chs.html]] -[[ディスクイメージツールを使ってコピーしたパーティションから起動できない場合の修復方法>>http://www.pc-every.com/TIPS/tips07.html]] &color(#3366CC){&font(18){メーカー PC だけど、リカバリ領域から起動出来なくなったんだけど?どうしてくれんの?}} -サポセンに電話すれば? #openclose(){ -HDD リカバリの機種は特殊なブートストラップローダを使用している場合が多い。ブートストラップローダは MBR の先頭 446byte に格納されている OS 起動プログラムで、Linux の dd コマンドで全セクタをコピーしたのでも無い限り、事前に移行先のドライブに MBR が無い場合は大抵のパーティションコピーツールはブートストラップローダまではコピーしてくれず、そのパーティションコピーツール独自のブートストラップローダを書き込んでしまう。[[参考:ブートストラップローダとは>>http://www37.tok2.com/home/nobusan/boot/bootstrap.html]]なので移行先ドライブにリカバリ領域をコピーしたとしても、移行先ドライブでリカバリ領域からの起動が出来なくなる場合がある。また、特殊なブートストラップローダでないとリカバリ領域のみならず OS 自体起動が出来ない機種もあるかもしれんな。 -解消方法①:事前に移行先のドライブをリカバリディスクでリカバリすると移行先のドライブに特殊なブートストラップローダが書き込まれるのでその後パーティションコピーツールでパーティションをコピーする (Gparted、EASEUS Disk Copy、Partition Wizard あたりは事前にブートストラップローダがあればそれを上書きしない -解消方法②:移行元ドライブからブートストラップローダをコピーする。方法は Windows 環境であれば Microsoft の [[Disk Probe>>http://itaya.corso-b.net/TIPS/DiskProbe/index.html]] で移行元ドライブのセクタ 0 をファイルとして保存し、パーティションテーブルを移行先に合わせて編集した上で移行先ドライブのセクタ 0 に書き込む。Linux であれば単純に dd でブートストラップローダをコピーして書き戻すだけである。まず以下のコマンドでブートストラップローダをファイルとして保存する |# dd if=/dev/(移行元の HDD のデバイス名) of=(ブートストラップローダのダンプのファイル名) bs=446 count=1| -次にこのブートストラップローダを移行先ドライブに書き込む |# dd if=(ブートストラップローダのダンプのファイル名) of=/dev/(移行先ドライブのデバイス名) bs=446 count=1| } &color(#3366CC){&font(18){どれやっても起動できないんだけど?次はどうすんの?}} #openclose(){{                                          糸冬                ━━━━━━━                制作・著作 NHK }} ---- #endregion
**パーティションオフセット調整等 (SSD/AFT HDD/RAID) ***理屈編 ****AFT / BigSector / 4096byte/sector とパーティションオフセットの関係 #region(クリックで展開) -従来の HDD は特殊なものを除き 1 セクタあたり 512byte であったが 2010 年頃の新機種から 4096 byte のセクタサイズを採用する機種が現れ始めた。大きなセクタサイズを採用する理由はセクタギャップを減らしプラッタの容量効率を高め ECC の bit 数を増やして信頼性を高める為だが、現在の BIOS、各種 OS・ソフトウェア・デバイスドライバ等との互換性を考え、HDD 内部では 4096 byte/sector であるものの SATA インターフェース上では従来の論理セクタ 512byte の HDD と同様に振舞うエミュレーションデバイスである。その為、従来の 512byte/Sector の HDD を前提に設計されてきた従来のファイルシステム・OS ではパフォーマンスが著しく低下する現象が発生する。PC の場合は各種設定を変更する事でパフォーマンス低下を有る程度解消できるものの HDD レコーダーやナビのようにユーザーが容易に設定を変更できない機器に使用するのは止めた方が良いだろう。またこれらの設定を理解できない人もトラブルを回避する為 512byte/sector 以外の HDD は使用しない方が良い。 |従来の&br()512byte/sector&br()のHDD|物理セクタ&br()=論理セクタ|BGCOLOR(grey):0|BGCOLOR(lightgrey):1|BGCOLOR(grey):2|BGCOLOR(lightgrey):3|BGCOLOR(grey):4|BGCOLOR(lightgrey):5|BGCOLOR(grey):6|BGCOLOR(lightgrey):7|BGCOLOR(grey):8|BGCOLOR(lightgrey):9|BGCOLOR(grey):10|~|BGCOLOR(grey):58|BGCOLOR(lightgrey):59|BGCOLOR(grey):60|BGCOLOR(lightgrey):61|BGCOLOR(grey):62|BGCOLOR(lightgrey):63|BGCOLOR(grey):64|BGCOLOR(lightgrey):65|BGCOLOR(grey):66|BGCOLOR(lightgrey):67|BGCOLOR(grey):68|~| |AFT&br()(4096byte/sector)&br()のHDD|論理セクタ|BGCOLOR(grey):0|BGCOLOR(lightgrey):1|BGCOLOR(grey):2|BGCOLOR(lightgrey):3|BGCOLOR(grey):4|BGCOLOR(lightgrey):5|BGCOLOR(grey):6|BGCOLOR(lightgrey):7|BGCOLOR(grey):8|BGCOLOR(lightgrey):9|BGCOLOR(grey):10|~|BGCOLOR(grey):58|BGCOLOR(lightgrey):59|BGCOLOR(grey):60|BGCOLOR(lightgrey):61|BGCOLOR(grey):62|BGCOLOR(lightgrey):63|BGCOLOR(grey):64|BGCOLOR(lightgrey):65|BGCOLOR(grey):66|BGCOLOR(lightgrey):67|BGCOLOR(grey):68|~| |~|物理セクタ|>|>|>|>|>|>|>|BGCOLOR(grey):0|>|>|BGCOLOR(lightgrey):1|~|>|>|>|>|>|BGCOLOR(grey):7|>|>|>|>|BGCOLOR(lightgrey):8|~| -XP /Server2003 以前の Windows でパーティションを作成すると 63 論理セクタ目がパーティションの先頭になる。通常クラスタ/アロケーションユニットサイズは 4096byte の為、一つのクラスタにアクセスすると実際には二つの物理セクタに跨ってアクセスする事になる為ランダムアクセス性能が半減してしまう。パーティション開始セクタを 64 論理セクタ目に設定する事によりこのような無駄なアクセス大幅に減少する為パフォーマンスが向上する (それでも MFT 等 512byte 単位のアクセスが発生する為 Windows 7 SP1 よりはパフォーマンスが出ない)。以下の例ではパーティション開始セクタを 64 論理セクタにしたが、64 論理セクタ目以降の 8 の倍数論理セクタならどこでもいい (72、80、88、96論理セクタ目等。データドライブとしての利用であれば一応 8 論理セクタ目をパーティション開始セクタにしても Windows で認識可能だがお勧めはしない) 。 -Vista 以降で作成したパーティションの開始セクタは 2048 セクタ目となる。Windows Vista 以降ではシングルパーティションではミスアライメントは発生しないが同じドライブに複数のパーティションを作成した場合ミスアライメントが発生する可能性がある。Windows 7 /Server 2008R2 以降ででは「IDENTIFY DEVICE コマンドで物理セクタサイズ (word 106) やオフセット (word 209) の取得が可能な機種の HDD」を使用した上で AFT の HDD に対応する為の更新プログラム ([[KB982018>>http://support.microsoft.com/kb/982018/en-us]] 又は SP1) を適用した場合完全にミスアライメントが発生しなくなるだけでなく、4KB 以下のブロックサイズのアクセスが完全にゼロになる為 AFT の HDD の本来のパフォーマンスが得られる (Windows Vista /Server 2008 以下の Windows ではオフセットを調整しても僅かだが OS 上で 4KB 未満のアクセスが発生し、僅かでもその悪影響は小さくない)。Windows を例にとって解説したが、他のファイルシステムや OS でも同様の理屈でパーティションオフセット調整が必要な場合がある。どの程度影響を受けるかはファイルシステムによる。[[4KB セクター・ディスクで Linux を使用する: 実用的なアドバイス>>http://www.ibm.com/developerworks/jp/linux/library/l-4kb-sector-disks/]] -AFT とパーティションオフセット (MBR パーティションテーブルの場合) |従来の512byte/sector&br()のHDDの物理セクタ&br()(=論理セクタ)|BGCOLOR(grey):0|BGCOLOR(lightgrey):1|BGCOLOR(grey):2|BGCOLOR(lightgrey):3|BGCOLOR(grey):4|BGCOLOR(lightgrey):5|BGCOLOR(grey):6|BGCOLOR(lightgrey):7|BGCOLOR(grey):8|BGCOLOR(lightgrey):9|BGCOLOR(grey):10|~|BGCOLOR(grey):58|BGCOLOR(lightgrey):59|BGCOLOR(grey):60|BGCOLOR(lightgrey):61|BGCOLOR(grey):62|BGCOLOR(lightgrey):63|BGCOLOR(grey):64|BGCOLOR(lightgrey):65|BGCOLOR(grey):66|BGCOLOR(lightgrey):67|BGCOLOR(grey):68|~| |XPで作成した&br()パーティション|BGCOLOR(palegreen):MBR|||||||||||~||||||BGCOLOR(palegreen):PBR|BGCOLOR(palegreen):|BGCOLOR(palegreen):|BGCOLOR(palegreen):|BGCOLOR(palegreen):|BGCOLOR(palegreen):|~| |64セクタ目から&br()パーティションを&br()開始した場合|BGCOLOR(palegreen):MBR|||||||||||~|||||||BGCOLOR(palegreen):PBR|BGCOLOR(palegreen):|BGCOLOR(palegreen):|BGCOLOR(palegreen):|BGCOLOR(palegreen):|~| |AFT(4096byte/sector)の&br()HDDの物理セクタ|>|>|>|>|>|>|>|BGCOLOR(grey):0|>|>|BGCOLOR(lightgrey):1|~|>|>|>|>|>|BGCOLOR(grey):7|>|>|>|>|BGCOLOR(lightgrey):8|~| ※セクタ0はいわゆるMBR、マスターブートレコードである。セクタ1~62は通常は使用されないが、RAIDカード等が管理情報を書き込む場合があるので互換性の為に開けておくべきである。 -GPT パーティションテーブルを使用している場合は論理セクタ 0 にはダミーの MBR があり、論理セクタ 1 に GPT ヘッダー、論理セクタ 2~33 にパーティションエントリが記述されている。またディスク後端に予備の GPT ヘッダーとパーティションエントリがある。 -[[Wikipedia>>http://ja.wikipedia.org/wiki/GUID%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB]] -[[microsoft>>http://msdn.microsoft.com/ja-jp/windows/hardware/gg463524.aspx]] ---- #endregion ****SSD とパーティションオフセットの関係 #region(クリックで展開) -SSD が使用している NAND フラッシュメモリは書き込みはページ、消去はブロック単位でアクセスする構造になっており、IMFT 34nm では ページサイズは 4KB、IMFT 25nm ではページサイズ 8KB 、IMFT 34/25nm の場合ブロックサイズはページサイズの 256 倍である (これらのパラメータは NAND フラッシュメモリの機種によって異なる) なので AFT 同様パーティションオフセットを調整した方がパフォーマンスが高まったり、二つのブロックに跨った書き込みが減る為 WA も低くなる場合が多い。 -但し同じ NAND フラッシュメモリを使用していても SSD コントローラーの構造・制御方法によってオフセットの重要度が大きく違い単純に NAND フラッシュメモリのページ・ブロックサイズのサイズだけオフセットすれば良いというものでもない。例えば Intel の X25-M (G1/G2) や PLDS M2S/CORSAIR P3 は 512byte 単位のアクセスが高速である (うまくコントローラーがアライメントのズレを隠蔽している) 為パーティションオフセットを気にする必要は殆ど無く RealSSD C300 の場合は 4096byte 以下のブロックサイズのアクセスを非常に苦手としている為パーティションオフセット調整は必須である。それ以外の SSD もできれば調整した方が良い。具体的なオフセット位置は AFT の HDD 同様 64 セクタ目 や 2048 セクタ目 にすれば大抵は問題ない。SSD コントローラーによっては特殊な位置にオフセットした方が性能が良くなる可能性があり、SSD のメーカーやベンダーが推奨オフセットを公開している場合はそれに従う事。 -AFT の HDD 同様物理セクタサイズを表明する仕組みを使用すればパーティションオフセット調整が必要な SSD のパフォーマンスを高められる。 ---- #endregion ****RAID とパーティションオフセットの関係 #region(クリックで展開) -RAID0、RAID5、RAID6、あるいはそれ以上のレベルのストライピングではパーティションオフセットはストライプサイズの整数倍にするべきでミスアライメントの場合 AFT や SSD 同様にパフォーマンスが低下する。microsoft は殆どのストライプサイズに対応できる 2048 セクタにアライメント調整する事を推奨している。AFT の HDD を使用する場合はストライプサイズは必ず 4KB か 4KB の整数倍のサイズにする事。 ---- #endregion ****【Windows 7 + AFT HDD】物理セクタサイズ・オフセット値取得の仕組み #region(クリックで展開) &color(#3366CC){&font(18){概要}} -物理セクタサイズを取得するには以下の条件が揃っている必要がある 1、BIOS、SATA ホストコントローラーのドライバの対応 2、ATA/ATAPI-7 又は ATA8-ACS に対応しており、しかも物理セクタサイズ等を表明する AFT の HDD 3、ATA/ATAPI-7 又は ATA8-ACS に対応しており、しかも物理セクタサイズ等の取得に対応している OS &color(#3366CC){&font(18){AFT の HDD の物理セクタサイズ・オフセット表明の仕組み}} -ATA/ATAPI-7 からは IDENTIFY DEVICE の word 106 で物理セクタサイズ、117-118 で論理セクタサイズを取得でき、ATA8-ACS では更に word 209 でオフセット値が定義されている。これらのパラメータは固定値なので HDD の状態によって変化する事はなく機種ごとに値は固定されている。これらの IDENTIFY DEVICE 情報はたとえ ATA8-ACS に対応した AFT の HDD であっても表明しない、或いは表明していても 512byte と偽りの情報を持っているものがあり、確認するにはそれぞれの HDD/SSD のデータシートを参照し、明記されていない場合は実機を使用して ExamDisk 他のディスクのパラメータ取得ツールで確認する必要がある。 word 106 が 4000h の場合 → ホストは物理セクタサイズは 512byte と認識 word 106 が 6003h の場合 → ホストは物理セクタサイズは 4096byte と認識 -[[smartmontools の forum より解説>>http://sourceforge.net/apps/trac/smartmontools/ticket/62]] -[[AF Tech.book (IDEMA、PDF)>>http://www.idema.org/wp-content/plugins/download-monitor/download.php?id=1178]] -[[ExamDisk (現在の環境・ドライブで物理セクタサイズを取得できるか確認可能、よっしゅの館より)>>http://hpcgi1.nifty.com/yosh/sp/aft/]] &color(#3366CC){&font(18){AFT の HDD の物理セクタサイズ・オフセット取得に対応した OS}} -Windows 7 /Server 2008R2 以降で AFT 対応修正パッチ適用済みの場合はこれらの値を取得できた場合にパーティションをフォーマットする際に物理セクタサイズ未満のクラスタサイズは使用出来なくなり、物理セクタサイズ未満のブロックサイズでのアクセスもしなくるので AFT が原因のパフォーマンス低下はしなくなる。 -[[Windows の AFT ドライブへの対応状況 (Windosw 7 /Server 2008R2 以降は修正プログラムの適用で完全にミスアラインが発生しなくなる。Vista /Server 2008 の場合は物理セクタ取得には対応しないが AFT の HDD を使用したときに発生しうる問題を修正するプログラムが提供されている。512byte エミュレーションではない 4096byte ネイティブのドライブには対応しない。microsoft)>>http://support.microsoft.com/kb/2510009/ru/en-us]] ---- &color(#3366CC){&font(18){各 AFT 採用 HDD や SSD の物理セクタサイズ表明対応状況}} #openclose(){ |WestenDigital 3.5" |WD**EARS-00MVWB0 以前は現在のところ"非対応"報告のみ| |~ |WD10EARS-22Y5B1 は"対応"報告あり| |~ |WD20EARX-00PASB0 は"対応"報告あり| |~ |WD**EZRX-* 不明 | |HGST 3.5" |AFT の機種無し (今後 WD に売却)| |HGST 2.5" |全数対応? (現在の所"対応"報告のみ)| |Seagate 3.5" |ST2000DL003 は非対応 (データシートより)| |Samsung 3.5" |全数非対応 (HD204UI は非対応、今後 Seagate に HDD 部門売却)| |東芝 2.5" |全数対応? (現在の所"対応"報告のみ)| |各社 SSD |現在のところ"対応"の機種見当たらず| } ---- &color(#3366CC){&font(18){word 106 の詳細}} #openclose(){{ -word 106 の各 Bit の意味 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 の関数電卓使え -word 106 が 16 進数で 4000h の場合 (2進数で 0100 0000 0000 0000b) 0100 0000 0000 0000 || Bit 15=0、Bit 14=0 の為 word 106 有効、但し Bit 13 が 0 の為 ホストは物理セクタサイズ=論理セクタサイズ (つまり通常の 512byte/sector) と認識 -word 106 が 16 進数で 6003h の場合 (2進数で 0110 0000 0000 0011b) 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) と認識する #aa(){                        ヘ(^o^)ヘ いいぜ                          |∧                        /  /                  (^o^)/ AFT が PC のパフォーマンスを                 /(  )    低下させるってなら        (^o^) 三  / / >  \     (\\ 三  (/o^)  < \ 三   ( /  / く  まずはそのふざけた        物理セクタサイズを取得する! } }} ---- &color(#3366CC){&font(18){word 209 の詳細}} #openclose(){ -word 209 の各 Bit の意味 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 にしなければならない。 -word 209 が 16 進数で 4001h の場合 (2進数で 0100 0000 0000 0001b) 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 にしなければならない。 } ---- #endregion ***実践編 ****新たにパーティションを作成する場合 #region(クリックで展開) &color(#3366CC){&font(18){Windows Vista /7 のインストールディスクを利用する}} -Windows Vista /7 のインストール DVD (評価版でも良い) を持っている場合、これから起動しシステム修復オプションから起動できるコマンドプロンプトにて Diskpart コマンドを使いパーティションを作成する。オプションとして"align=1024" (align=数値 の数値は KB 単位。1024 と入力した場合は 1024 KB = 2048 セクタ目からパーティションを開始する事になる。) 等を指定してオフセットを揃えてパーティションを作成する。 -Windows XP のインストールディスクでは Diskpart は使用可能だが「align=n」等のオプションが存在しない為 Windows XP のインストールディスクではアライメントを考慮したパーティションを作成する事は不可能である。 -[[Dickpart コマンドについて>http://support.microsoft.com/kb/300415/ja]] -[[Diskpart の各コマンドとそのオプション>http://technet.microsoft.com/ja-jp/library/cc766465%28WS.10%29.aspx]] -[[RAID の場合>http://support.microsoft.com/kb/929491/ja]] -[[Windows 7 Enterprise 90 日評価版 (2011/12/31 迄、IT プロフェッショナルが対象の為それ以外の職業の場合はダウンロード不可。またダウンロードの目的が Microsoft の意図しないものである場合もダウンロード不可。Live ID でのサインインが必要。)>>http://technet.microsoft.com/ja-jp/evalcenter/cc442495]] -Diskpart コマンドでパーティションを作成する手順 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 ではフォーマットやパーティションのアクティブ化も行える。他にダイナミックディスクへの操作やパーティションの属性等も変更可能。 &color(#3366CC){&font(18){Windows 上で作成する}} -フリーソフトの [[ExamDisk>>http://hpcgi1.nifty.com/yosh/sp/aft/]] を使用すれば面倒なセクタ位置の計算無しで Windows 上で手軽にオフセットが合ったパーティションを作成できる。但しシステムパーティションの位置を変更することは不可能。 -Windows Vista 以降がインストール済みの PC と SATA-USB 変換アダプタを持っている場合は Windows Vista 以降の PC に USB 接続してパーティションを確保すればオフセットが合ったパーティションを作成できる。但し複数のパーティションを作成すると二番目以降のパーティションはオフセットが合わなくなる場合がある。 ※その他にも様々な方法がある。 &color(#3366CC){&font(18){Linux の Gparted を利用する}} -フリーソフトの [[Gparted Live CD/USB>>http://gparted.sourceforge.net/download.php]] を使用し、「Align to」で「MiB」 単位にアライメントを合わせたパーティションを作成する。この場合、特に前方に余白を取らなければパーティション開始オフセットは 1024KB (2048 セクタ目) になる。パーティション作成後に「情報 (infomation)」でパーティションオフセットを確認可能。旧バージョンやパーティション開始セクタを 64 セクタ目にしたい等の場合は[[ここ>http://tri.dw.land.to/doc/1002270WDxxEARS_AFT.html]]を参考に Terminal からセクタ位置を指定してパーティションを作成する事もできる。尚、Gparted は Gparted Live CD だけでなく各 Linux ディストリビューションや Ultimate BOOT CD 等にも統合されており、同様の方法でパーティションの作成が可能。 &color(#3366CC){&font(18){WestenDigital の HDD 限定}} -WD の HDD の場合、セクタ位置を一つずらす為のジャンパが用意されている。作成するパーティションが一つだけの場合はこのジャンパをショートさせるだけでよい。(但し、既にデータを保存している HDD のジャンパ変更したり経年劣化でジャンパが接点不良になると全てのデータが見えなくなるので注意) ---- #endregion ****既に存在するパーティションをデータを保ったままオフセットしたい場合 #region(クリックで展開) &color(#3366CC){&font(18){注意}} -データが入っているパーティションの位置を変更する場合、データの量にもよるが、TB 級の HDD でしかもデータがパンパンに入っている場合日単位の時間が掛かる場合があり、またパーティション操作ソフトのバグや実行中の停電等により全てのデータを失う場合があるので基本的に勧められない方法である。他に HDD を用意しデータを逃がしておいて新たにパーティションを作成した方が速い上安全である。 &color(#3366CC){&font(18){Windows 上で現在のパーティションオフセット位置を確認する}} 「スタートメニュー」の「ファイル名を指定して実行」をクリック ↓ 「msinfo32」と入力して「OK」をクリック ↓ 「コンポーネント」→「記憶域」→「ディスク」とツリーを辿る ↓ 各ディスクの各パーティションの開始オフセット (byte 単位で表示される) を確認する ↓ 開始オフセットの byte 数を 4096 で割って割り切れればアライメントが合っている。 &color(#3366CC){&font(18){HDD メーカーが提供するオフセット調整ソフトを使用する}} -WD の HDD の場合、[[「WD Align - Paragon (Paragon OEM)」か「True Image WD Edition (Acronis True Image OEM)」が利用可能。>http://support.wdc.com/product/download.asp?groupid=805&lang=en]] -HGST の HDD の場合は HGST が配布している [[Hitachi Align Tool (Acronis True Image OEM)>http://www.hitachigst.com/support/downloads/#ALIGN]] が利用可能。 -それ以外のメーカーの HDD、SSD を使用している場合は商用ソフトを利用する事になる。 ※いずれの場合も RAID ボリュームの一部になっている場合等、接続方式によっては HDD を認識出来ない、或いは調整が行えない場合がある。 &color(#3366CC){&font(18){Gparted を使用する}} -[[Gparted Live CD/USB>>http://gparted.sourceforge.net/download.php]] ではファイルを保ったままパーティションサイズの変更及びオフセット位置の変更が出来る。 ---- #endregion ****既に存在するパーティションをコピーする場合 #region(クリックで展開) -フリーソフトの [[Gparted Live CD/USB>>http://gparted.sourceforge.net/download.php]] を使用し、移行先のドライブに「Align to」で「MiB」 単位にアライメントを合わせたパーティションを作成する。この場合、特に前方に余白を取らなければパーティション開始オフセットは 1024KB (2048 セクタ目) になる。パーティション作成後に「情報 (infomation)」でパーティションオフセットを確認可能。旧バージョンやパーティション開始セクタを 64 セクタ目にしたい等の場合は[[ここ>http://tri.dw.land.to/doc/1002270WDxxEARS_AFT.html]]を参考に Terminal からセクタ位置を指定してパーティションを作成する事もできる。次に移行元のドライブのパーティションを移行先のドライブの先ほど作成したパーティションにコピーする。こうするとパーティションの際に任意のオフセットを行える。コピーしたパーティションがブートドライブの場合はこの作業では自動的にフラグは付かないのでコピー後に手動で boot フラグを付加する (MS-DOS 用語で言うところのパーティションをアクティブ化する) 事を忘れないように。またこの方法では移行先ドライブの MBR のブートストラップローダは Gparted のものになるので HDD リカバリ等の特殊な MBR が必要な PC のパーティションをコピーする際は注意。この手順でパーティションをコピーした場合は初回起動時は chkdsk によるチェックが始まり、チェック後一度再起動する。二回目の起動時にプラグアンドプレイでデバイスの変更 (HDD交換、あるいはSSDへの換装) が検出される為にもう一度再起動が必要である。尚、Gparted は Gparted Live CD だけでなく各 Linux ディストリビューションや Ultimate BOOT CD 等にも統合されており、同様の方法でパーティションの作成が可能。 -WD か HGST の HDD の場合はパーティションオフセットが考慮された Acronis True Image の OEM 版を無償で利用可能。ダウンロード先は上記の「既に存在するパーティションをデータを保ったままオフセットしたい場合」を参照する事。 -Seagate の場合「Seagate DiscWizard」、Intel の SSD の場合「Intel Data Migration Software」(いずれも Acronis True Image OEM) が利用可能だが、こちらはパーティションオフセットが考慮されているかは不明。 -その他の AFT 対応のパーティションバックアップソフトやパーティション編集ソフトでも可能。 #endregion ---- **NTFS の クラスタ/アロケーションユニットサイズ (ファイルシステムのブロックサイズ) #region(クリックで展開) &color(#3366CC){&font(18){AFT の HDD、SSD、RAID ボリュームでは基本的に 4KB 未満にしてはいけない}} -AFT の HDD 上のパーティションのフォーマット時には物理セクタサイズである 4KB を下回るクラスタサイズ (ブロックサイズ/アロケーションユニットサイズ) は選択してはいけない。理由はパーティションアライメントと同様。 NTFS のデフォルトのクラスタサイズは 4096byte なので特に弄らない限りは問題ない。RAID0/5/6 等のストライピングボリューム上のパーティションのクラスタサイズはストライプサイズの整数倍にする事。SSD の場合は基本的に 4KB 以上であれば問題ないが、将来的に NAND フラッシュメモリのページサイズが更に大きくなった際には 8KB やそれ以上でないと本来のパフォーマンスが出ない機種が登場する可能性がある。NTFS 以外のファイルシステムでもブロックサイズ等の名称で同様の設定がある。 &color(#3366CC){&font(18){4KB を超えるクラスタサイズのメリットとデメリット}} -従来の物理セクタ 512byte の HDD でもクラスタサイズは大きければ大きいほどドライブへアクセスする際のブロックサイズが大きくなるため若干だが体感速度が向上し、MFT やレジストリハイブ等の通常のデフラグでは断片化を解消できないものを含めファイルシステムの断片化が発生しにくくなる為継続使用時のフラグメンテーションによる体感速度の悪化もしにくくなる。通常はデフラグせずに使用する SSD にもお勧めである。但しクラスタギャップが増え容量の無駄が大きくなる。また NTFS では 4KB を超えるクラスタサイズではファイルシステム暗号化・圧縮が使用できない。クラスタサイズを指定してパーティションをフォーマットするにはディスクの管理上で GUI で行う方法の他、コマンドプロンプトにて「format z: /FS:ntfs /A:64kb /Q (z: は例であって実際にはフォーマットしたいドライブ文字を指定する)」等のコマンドを使う。 &color(#3366CC){&font(18){システムドライブのクラスタサイズを 4KB を超えるサイズにする}} -Windows 7 の場合 #openclose(){ 事前にインストールディスクからコマンドプロンプトを起動し、Diskpart と format コマンドでクラスタサイズ 64KB のパーティションを作成しておけば問題なくそこにインストールが可能。 } -VISTA は不明。 -2000 /XP /2003 Server の場合 #openclose(){ -NTLDR が 64KB セクタには対応してないので NTLDR 等のブートローダだけはクラスタサイズ 4KB のシステムパーティションを作成し配置する必要がある。 -新規インストール場合、OS をインストールする前に Windows Vista /7 のインストールディスク等にて、予め Diskpart と format コマンドを使用してクラスタサイズ 64KB の OS インストール用パーティション (ブートパーティション) とアクティブにしたクラスタサイズ 4KB の NTLDR 用パーティション (システムパーティション) を作成して置く必要がある。パーティション配置の一例を以下に示す。(VISTA でも同様に BOOTMGR を別パーティションに配置することでインストール可能と思われる) この状態で普通に Windows をインストールすれば勝手に NTLDR 等のファイルはクラスタサイズ 4KB のパーティションに配置され、後は普通に使用可能。 -例 |LBA|0|1~1023|1024~25599 (12MiB※1)|25600~| |状態|BGCOLOR(palegreen):MBR|空き|BGCOLOR(palegreen):C:\、システムパーティション、NTLDR 等&br()クラスタサイズ 4KB、アクティブ|D:\、ブートパーティション、OS 等&br()クラスタサイズ 64KB ※2| ※1 最低限必要な容量は 460KB 程だが、一応 NTFS は最低でも 10MB 程度確保する事が推奨されてるので 12MB にした ※2 NTLDR はデフォルトの 4KB より大きいサイズ、つまり 8KB~32KB のクラスタサイズに 2000/XP/2003 の NTLDR が対応しているかどうかは不明。64KB には非対応。 ※ いずれも基本パーティションでのみ動作確認 -上の例では NTLDR 等が配置されるシステムパーティションを先頭に配置したが、このままでは OS がインストールされるブートパーティションは D:\ になり一部のアプリケーションが正常に動作しない、あるいは OS のドライブが D:\ だとなんとなく気持ち悪いという問題が発生する。この場合、ドライブ先頭のパーティション (C:\ とする) のクラスタサイズを 64KB にしておき、ドライブ末尾に NTLDR 等を配置する為の 10MB 程度のパーティションを配置 (D:\ とする) してクラスタサイズ 4KB でフォーマットしアクティブにしておいて Windows をインストールすると良い。こうすると勝手にクラスタサイズ 4KB のパーティションに NTLDR 等が配置され普通にインストールが可能。(勝手に NTLDR 等が配置されない場合があり、その場合は Windows のインストール中最初の再起動後に"A disk error occard"等のエラーメッセージが出てどうにもならなくなってしまう。これは C:\ に NTLDR 等が配置されてしまった場合に発生し、NTLDR が 64KB のクラスタサイズに対応していない事が原因で起動プロセスが途中で停止する為に起こる。この場合は Windows Vista /7 のインストールディスクにて xcopy コマンドを使用するか CD ブートの Linux や他の PC を使用し、C:\ に配置されてしまった NTLDR、boot.ini、bootfont.bin、NTDETECT.COM を D:\ にコピーしてやると Windows のセットアップが起動できるようになる。その際、C:\ がアクティブになってしまっていたら C:\ から BOOT フラグを削除し D:\ に BOOT フラグを付ける必要がある。) -例 |LBA|0|1~1023|1024~20972543 (10GiB)|20972544~31458303 (10MiB)| |状態|BGCOLOR(palegreen):MBR|空き|C:\、ブートパーティション、OS 等&br()クラスタサイズ 64KB|BGCOLOR(palegreen):D:\、システムパーティション、NTLDR 等&br()クラスタサイズ 4KB、アクティブ| ※ いずれも基本パーティションでのみ動作確認 -2000 /XP /2003 Server で既に使用中の OS 用パーティションのクラスタサイズを変更したい場合は、他の HDD/SSD を用意し上の例を参考にパーティションを作成する。そして OS 用パーティション直下にある ntldr /boot.ini[[(Partition(*) 部分等は移行後の環境に合わせて編集が必要)>>http://www.atmarkit.co.jp/fwin2k/win2ktips/502bootini/bootini.html]] /bootfont.bin /NTDETECT.COM /bootsect.dos(マルチブート環境のみ) を NTLDR 用パーティションにコピーし、他のファイルを 4KB を超えるクラスタサイズでフォーマット済みのパーティションに配置 (コピー元のパーティションにインストールされている OS から起動している場合はコピーできないファイルがあるので CD ブートの Linux や Windows Vista 以降のインストールディスクの xcopy コマンド等で作業を行うこと) し、現在の HDD と交換する。 -これらの例では NTLDR 等が格納されたシステムパーティションはマイコンピューターに表示されたままになるが、なんとなく消したい場合でもディスクの管理からはシステムパーティションのドライブ文字の削除等は行うことはできない。この場合は Gparted 等を利用し、"システム"パーティションに"hiddun"フラグを付けてやると Windows ではドライブ文字が消えマイコンピューターには表示されなくなる。しかしこのようにしてドライブ文字を消してしまうと Windows のシステムのプロパティ上での boot.ini の編集が不可能になる。 ---- -上のように強引に NTLDR、boot.ini、bootfont.bin、NTDETECT.COM 等を他のドライブに配置した場合、特にサービスパックなどの大容量の修正パッチを適用しようとすると C:\WINDOWS\$NtServicePackUninstall$ に Service Pack ? をインストールするための十分な空きディスク領域がありません。 セットアップには少なくとも ?MB の追加の空き領域が必要です。 また、アンインストールのためのファイルをアーカイブする場合は、セットアップに ?MB の追加の空き領域が必要です。 ハードディスクに空き領域を増やして、再試行してください。 ※ ?は環境によって異なる。詳細なログは \Windows\svcpack.log に保存される -といったエラーでサービスパックや修正パッチがあてられなくなる。これは実際にドライブの空き領域が十分にあったり /nobuckup オプションを付けても発生する。原因はサービスパックを適用する途中経過で NTLDR 等のファイルが存在を確認する為で、ブートパーティションにもしも NTLDR、boot.ini、bootfont.bin、NTDETECT.COM が無ければ CD ブートの Linux 等を使用してシステムパーティションからこれらのファイルをブートパーティションにコピーしてやった上で、 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup] に文字列値を作成し名前を"BootDir"とし、値を"C:\" (環境によって異なる。Windows のブートパーティションを指定する事) とする事で回避できる。尚、この問題は Intel Mac に Bootcamp を使用して Windows XP 等をインストールした場合にも発生する場合があり、同じ方法で解決する。 -[[参考:Help Installing SP3 Error Everytime>>http://social.technet.microsoft.com/forums/en-US/itproxpsp/thread/28bcf118-f377-4b2a-a57e-6894abcf5c53/]] } ---- #endregion **Windows 7 新規インストール時に作成される隠しパーティションの挙動 #region(クリックで展開) -[[参考 Windows 7/2008 R2のインストールにおけるパーティション構成とデュアル/マルチブート>>http://www.corso-b.net/itaya/TIPS/TIPS05.html]] ---- &color(#3366CC){&font(15){1、Windows 7 インストール対象のドライブに事前にパーティションが作成されてない場合}} -C:ドライブの前に 100MiB の「システム予約済み」パーティションが作成される。内容は起動に必要なブート・コード(BCD ストア)とシステム回復オプションで使用されるファイルが格納される他 C:ドライブに BitLocker 暗号化を使用する場合は暗号化されたパーティションにはブート・コードを置けない為このパーティションがあると便利である。C:ドライブではなくこの 100MiB のパーティションがアクティブになる。[[ちなみに BitLocker ドライブ暗号化が使用出来るのは Windows Server 2008R2 と Windows 7 では Ultimate と Enterprise Edition のみである>>http://windows.microsoft.com/ja-JP/windows7/products/features/bitlocker]]ので他の Edition の場合はこのシステム予約済みパーティションは不要である。 (Ultimate /Enterprise /Server 2008R2 でもこのパーティションを削除しても C:\ ドライブ以外のリムーバブルドライブやブートドライブ以外のドライブの暗号化は可能であるし、他にブートマネージャを格納するドライブがあれば C:\ の暗号化も可能。) ||セクタ0|セクタ1~2047?|セクタ2048~206847?|セクタ206848~?|・・・| |ドライブ1|BGCOLOR(palegreen):MBR|空き|BGCOLOR(palegreen):システム予約済み(100MiB、アクティブ)|C:ドライブ|~| ※ パーティションの位置関係は正しいが正確な位置は未確認の為間違っている可能性がある ---- &color(#3366CC){&font(15){2、Windows 7 インストール対象のドライブに事前にパーティションが作成されており、かつ他にパーティションが作成されていないドライブが接続されていない場合}} -本来隠しパーティションに格納されるはずのファイルは C:ドライブの隠しフォルダに格納される。その為他にブート・コードを格納するドライブを用意しない限り C:ドライブを BitLocker で暗号化する事は出来ない。 ||セクタ0|セクタ1~2047|セクタ2048~|・・・| |ドライブ1|BGCOLOR(palegreen):MBR|空き|C:ドライブ(アクティブ)|~| ※ 事前に作成したパーティション位置によって C:ドライブ位置は変わる。 ---- &color(#3366CC){&font(15){3、Windows 7 インストール対象のドライブに事前にパーティションが作成されており、かつ他にパーティションが作成されていないドライブが接続されている場合}} -他のドライブの先頭に 100MB 程度の隠しパーティションが作成され、そのパーティションにブート・コードが配置されアクティブに設定される。このドライブを取り外すと Windows 7 は起動しなくなる。 ||セクタ0|セクタ1~2047|セクタ2048~|・・・| |ドライブ1|BGCOLOR(palegreen):MBR|空き|C:ドライブ|~| |ドライブ2|BGCOLOR(palegreen):MBR|空き|BGCOLOR(palegreen):システム予約済み(100MiB、アクティブ)|~| ※ 事前に作成したパーティション位置によって C:ドライブ位置は変わる。 ---- &color(#3366CC){&font(15){何らかの原因でこの隠しパーティションを削除/変更してしまった場合}} -上記の 1 の場合にこの隠しパーティションを削除してしまったり、3 の場合に他のドライブを取り外した場合は当然 Windows 7 は起動不能になる。Windows 7 のインストールディスクから起動すると自動的に修復できる。 ---- #endregion **おい、コピーしたパーティションから OS を起動できないんだが・・・ #region(クリックで展開) &color(#3366CC){&font(18){パーティションがアクティブになってない}} -基本中の基本だが、OS がインストールされているパーティションはアクティブ (BOOT フラグ) という状態になっていなければならない。具体的には MBR のパーティションテーブルのブート識別子がマークされている状態の事で、パーティションをアクティブにするには通常は FDISK、Windows のディスクの管理、Windows の Diskpart、Linux の Gparted その他のパーティション編集ツールを使う。正直言ってこれが原因で起動できてなかったとしたらかなり恥ずかしい。 &color(#3366CC){&font(18){ドライブのジオメトリがおかしい}} -他のドライブからパーティションをコピーした環境で極稀に起こりうる。MBR のパーティションテーブルやパーティションブートセクタには C/H/S 方式のジオメトリが書いてあり、パーティションコピーソフトはこれをそのままコピーする場合が多いがこれがコピー先のドライブやそのドライブを使用している環境に合致していない場合に Windows 2000 /XP /2003 Server やそれより古い OS は起動しなくなる。解消するには知識があればジオメトリを編集しても良いし、簡単で確実なのはパーティションコピーではなく移行先のドライブに先にパーティションを作成しておき、移行元ドライブの内容をファイル単位で隠しファイルも含めコピーする。もちろん移行元のドライブから OS を起動している場合はコピーできないファイルもあるので CD ブートの Linux 等でコピーを行う。ゆとりは知らない場合が多い。 -[[参考:Vector>>http://hp.vector.co.jp/authors/VA012947/pcat/bios_chs.html]] -[[ディスクイメージツールを使ってコピーしたパーティションから起動できない場合の修復方法>>http://www.pc-every.com/TIPS/tips07.html]] &color(#3366CC){&font(18){メーカー PC だけど、リカバリ領域から起動出来なくなったんだけど?どうしてくれんの?}} -サポセンに電話すれば? #openclose(){ -HDD リカバリの機種は特殊なブートストラップローダを使用している場合が多い。ブートストラップローダは MBR の先頭 446byte に格納されている OS 起動プログラムで、Linux の dd コマンドで全セクタをコピーしたのでも無い限り、事前に移行先のドライブに MBR が無い場合は大抵のパーティションコピーツールはブートストラップローダまではコピーしてくれず、そのパーティションコピーツール独自のブートストラップローダを書き込んでしまう。[[参考:ブートストラップローダとは>>http://www37.tok2.com/home/nobusan/boot/bootstrap.html]]なので移行先ドライブにリカバリ領域をコピーしたとしても、移行先ドライブでリカバリ領域からの起動が出来なくなる場合がある。また、特殊なブートストラップローダでないとリカバリ領域のみならず OS 自体起動が出来ない機種もあるかもしれんな。 -解消方法①:事前に移行先のドライブをリカバリディスクでリカバリすると移行先のドライブに特殊なブートストラップローダが書き込まれるのでその後パーティションコピーツールでパーティションをコピーする (Gparted、EASEUS Disk Copy、Partition Wizard あたりは事前にブートストラップローダがあればそれを上書きしない -解消方法②:移行元ドライブからブートストラップローダをコピーする。方法は Windows 環境であれば Microsoft の [[Disk Probe>>http://itaya.corso-b.net/TIPS/DiskProbe/index.html]] で移行元ドライブのセクタ 0 をファイルとして保存し、パーティションテーブルを移行先に合わせて編集した上で移行先ドライブのセクタ 0 に書き込む。Linux であれば単純に dd でブートストラップローダをコピーして書き戻すだけである。まず以下のコマンドでブートストラップローダをファイルとして保存する |# dd if=/dev/(移行元の HDD のデバイス名) of=(ブートストラップローダのダンプのファイル名) bs=446 count=1| -次にこのブートストラップローダを移行先ドライブに書き込む |# dd if=(ブートストラップローダのダンプのファイル名) of=/dev/(移行先ドライブのデバイス名) bs=446 count=1| } &color(#3366CC){&font(18){どれやっても起動できないんだけど?次はどうすんの?}} #openclose(){{                                          糸冬                ━━━━━━━                制作・著作 NHK }} ---- #endregion

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー