対象は外付け USB2.0接続のHDD。128GBのパーティション。空き領域は28GB程度。
データを消さずに変換出来る筈だ。
Windows XP には、FAT→NTFS の変換ツールが標準で用意されているのだが、NTFSに変換した際に、MFT(Master File Table)領域が断片化しているとパフォーマンスに影響が出る。
充分な空き領域があればいいのだが、念のためダミーファイルを使用して、予めインデックス領域を確保してみた。
(MFTをデフラグすることの出来る"PowerX PerfectDisk 8 Pro"などの市販ツールもあるが、Windows標準のデフラグツールでは出来ないので、初めに連続領域を作成しておくに越したことはない。)
ダミーファイルの作成については専用のソフトウェアも公開されているが、ここでは Windows XP に標準で付属している fsutil.exe を使ってダミーファイルを作成する。
fsutil には、0x00で埋められたファイルを任意のサイズで作成するサブコマンドがある。
サイズはバイトで指定する。
バイト換算については、Googleで「400MB in byte」とやると、「400メガバイト = 419 430 400 byte」と出てくる。
400MB in byte - Google 検索
http://www.google.co.jp/search?q=400MB+in+byte
400MBのダミーファイル testfile を作成するコマンドは以下のようになる。
fsutil file createnew testfile 419430400
コマンドプロンプトで、ドライブを移動してから実行するとカレントドライブに作成される。ダミーファイルは変換対象ドライブのルートに置いておく。
指定するサイズは、そのボリュームの1割程度にすればいいようだ。ファイルシステム変更の際に余った場合は解放してくれる。
このコマンドでファイルを作成する際は、ファイルシステムによる制限がある。具体的には、FATの場合、4GB以上のファイルを扱えないので、作成も出来ないということになる。
ダミーファイルが出来たら、これをデフラグする。
今は Microsoft TechNet から公開されている Sysinternals製 contig があればファイル単独のデフラグでいいし、無ければドライブ全体でも構わない。前述の市販ツールでもファイル単独のデフラグが可能だ。
次に convert.exe を用いた変換作業に入る。
convert.exe は NT系の Windows に標準で付属しているファイルシステム変換コマンドだが、Windows XP 付属になっているものは使えるオプションが増えている。
ごく単純な使用法は以下の通り。
convert ドライブ名: /fs:ntfs
これで指定したドライブがNTFSファイルシステムに変換される。
convert /? で出てきた詳細なコマンドラインオプションは以下の通り。
CONVERT ボリューム /FS:NTFS [/V] [/CvtArea:ファイル名] [/NoSecurity] [/X]
ボリューム
ドライブ文字 (文字の後にはコロンを付ける)、マウントポイント、ボリューム名を指定します。
/FS:NTFS
ボリュームを NTFS に変換することを指定します。
/V
詳細モードで変換することを指定します。
/CvtArea:ファイル名
NTFS システム ファイルのプレースホルダにするルート ディレクトリの連続ファイルを指定します。
/NoSecurity
変換されたファイルとディレクトリのセキュリティ設定にどのユーザーもアクセスが可能になるように指定します。
/X
必要であれば、最初にボリュームを強制的にマウント解除します。それからボリュームへの開いているハンドルをすべて無効にします。
例えば、以下のようにすると、先ほど作成した testfile をMFT用の連続領域に指定してKドライブをNTFSに変換することになる。
convert k: /fs:ntfs /v /cvtarea:testfile /nosecurity /x
画面上を流れていくファイル名をしばらく眺めていると変換が完了する筈。
風呂に行ったのでよく分からないが、128GB程度なら、さほど時間もかからないようで、シャワーを浴びている間に終了していた。
まぁ、こんなことをするより、通常の一般家庭なら、外付けHDDをもう一台買ってきてコピー、コピー先の内容をベリファイしてから、元のディスクをNTFSでフォーマット、というのが一番安全な方法なんだけど。
逆に、NTFSをFAT32にする方法は、WindowsのCD-ROM(または起動ディスク)でブートして、回復コンソールから format k: /fs:fat32 (Kドライブの場合)とする方法しかないのでは?但し、この場合はフォーマットなのでデータは全部消える。
※ここで紹介した方法を試すときはバックアップを忘れずに自己責任でどうぞ。
FAT から NTFS への変換に必要なディスクの空きスペース
http://support.microsoft.com/kb/156560/JA/
(↑最終更新日が2005年8月19日なので、現状に合わない部分も。)
Convert.exe を使用してパーティションを NTFS ファイル システムに変換する方法
http://support.microsoft.com/kb/314097/JA/
FAT から NTFS への変換に必要なディスクの空きスペース
http://support.microsoft.com/kb/156560/JA/
@IT:Windows TIPS -- Tips:巨大なサイズのファイルを簡単に作る方法
http://www.atmarkit.co.jp/fwin2k/win2ktips/243largefile/largefile.html
@IT:Windows TIPS -- Hint:FAT→NTFSにファイル・システムを変換する
http://www.atmarkit.co.jp/fwin2k/win2ktips/350fat2ntfsconv/fat2ntfsconv.html

