ディスクフォーマットとは、ハードディスクドライブ、ソリッドステートドライブ、フロッピーディスク、メモリーカード、USBフラッシュドライブなどのデータストレージデバイスを初期使用のために準備するプロセスです。場合によっては、フォーマット操作によって1つ以上の新しいファイルシステムが作成されることもあります。フォーマットプロセスの最初の部分で、基本的なメディアの準備を行う部分は、「低レベルフォーマット」と呼ばれることがよくあります。[ 1 ]パーティショニングは、プロセスの2番目の部分で、デバイスを複数のサブデバイスに分割し、場合によってはデバイスに情報を書き込み、そこからオペレーティングシステムを起動できるようにする一般的な用語です。 [ 1 ] [ 2 ] プロセスの3番目の部分は、通常「高レベルフォーマット」と呼ばれ、多くの場合、新しいファイルシステムを生成するプロセスを指します。[ 1 ]一部のオペレーティングシステムでは、これら3つのプロセスのすべてまたは一部を異なるレベルで組み合わせたり繰り返したりすることができます[ a ]。また、「フォーマット」という用語は、新しいディスクメディアをファイルを保存するのに完全に準備する操作を意味すると理解されています。一部の書式設定ユーティリティでは、既存のデータをすべて消去しないクイックフォーマットと、既存のデータをすべて消去するロングフォーマットを区別することができます。
一般的に、[ b ]ディスクをデフォルトでフォーマットすると、ディスク媒体上の既存データのほとんど、あるいはすべてが残ります。その一部または大部分は、特権[ c ]または特殊ツール[ 6 ]で復元できる可能性があります。特殊ツールは、すべてのファイルと空き領域を一度上書きする ことでユーザーデータを削除できます。[ 7 ]
ブロックとは、連続したバイト数であり、ディスク ドライバによってディスクから読み書きされる最小の記憶単位です。初期のディスク ドライブはブロック サイズが固定されていました (たとえば、1950 年代後半のIBM 350ディスク ストレージ ユニットのブロック サイズは 100 個の 6 ビット文字でした) が、 1301 [ 8 ]以降、IBM は可変ブロック サイズを備えたサブシステムを販売しました。特定のトラックには、異なるサイズのブロックを持たせることができました。IBM System/360のディスク サブシステムやその他の直接アクセス ストレージ デバイスは、カウント キー データ(CKD) および後に拡張カウント キー データ(ECKD)の形でこの概念を拡張しました。しかし、HDD での可変ブロック サイズの使用は 1990 年代に廃れました。可変ブロック サイズをサポートした最後の HDD の 1 つは、1993 年 5 月に発表された IBM 3390 モデル 9 でした。[ 9 ]
Serial Attached SCSI (SAS) [ d ]やSerial ATA (SATA) [ 10 ]ドライブなどの最新のハードディスクドライブは、インターフェース上で固定サイズのブロックの連続したセットとして表示されます。長年にわたり512バイト長でしたが、2009年から始まり2011年にかけて加速し、主要なハードディスクドライブメーカーはすべて、 4096バイトの論理ブロックのAdvanced Formatを使用するハードディスクドライブプラットフォームをリリースし始めました。 [ 11 ] [ 12 ]
フロッピーディスクは一般的に固定ブロックサイズを使用していたが、これらのサイズはホストのOSとコントローラとの相互作用によって決まるため、特定の種類のメディア(例えば5¼インチDSDD)でも、ホストのOSとコントローラによってブロックサイズが異なっていた。
光ディスクは一般的に固定ブロックサイズのみを使用する。
オペレーティングシステムとそのアプリケーションで使用するためにディスクをフォーマットするには、通常、3つの異なるプロセスが必要です。[ e ]
フロッピーディスク(および初期のハードディスク)の低レベルフォーマットは、ディスクドライブのコントローラによって実行されます。
標準的な1.44MBフロッピーディスクの場合、低レベルフォーマットでは通常、フロッピーディスクの160トラック(両面に80トラックずつ)それぞれに512バイトのセクターを18個書き込み、ディスク上に1,474,560バイトのストレージ容量を提供します。
物理セクターは実際には512バイトよりも大きく、512バイトのデータフィールドに加えて、セクター識別子フィールド、CRCバイト(場合によってはエラー訂正バイト)、およびフィールド間のギャップが含まれます。これらの追加バイトは通常、ディスク全体の記憶容量の数値には含まれません。
同じメディア上で異なる低レベルフォーマットを使用することができます。例えば、レコード間の間隔を小さくするために、大きなレコードを使用できます。
いくつかのフリーウェア、シェアウェア、およびフリーソフトウェアプログラム(例:GParted、FDFORMAT、NFORMAT、VGA-Copy、2M)は、フォーマットに関してかなり詳細な制御を可能にし、最大2MBの容量を持つ高密度3.5インチディスクのフォーマットを可能にした。
使用される技術には以下が含まれます。
Linuxはさまざまなセクターサイズをサポートしており[ 13 ]、DOSとWindowsは大きなレコードサイズのDMF形式のフロッピーフォーマットをサポートしています[ 14 ] 。
トラックの構造を確立した後、フォーマッタはフロッピー全体を塗りつぶし、不良セクタを探す必要もあります。従来、 IBM互換機でのフォーマット中、物理セクタはINT 1Ehのディスクパラメータテーブル(DPT)0xF6に従って、のフィル値で初期化されていました。この値はAtari Portfolioでも使用されています。CP /M 8インチフロッピーは通常、の値で事前にフォーマットされていました[ 15 ] 。また、 Digital Research経由で、この値はAtari STや一部のAmstradフォーマット済みフロッピーでも使用されました。 [ f ] Amstradでは、フィル値として他にはが使用されていました。 0xE50xF4

1990年代以前のハードディスクドライブは、通常、メディアへのデータのエンコード方法を定義する独立したディスクコントローラを備えていました。メディア、ドライブ、コントローラは別々のベンダーから調達される可能性があり、ユーザーは低レベルのフォーマットを実行できることがよくありました。しかし、別々の調達は、各コンポーネント間の互換性の問題により、サブシステムがデータを確実に保存できない可能性もありました。[ g ]
ミニコンピュータやパーソナルコンピュータシステムでは、1990年代まで、ユーザーが開始するハードディスクドライブの低レベルフォーマット(LLF)が一般的でした。IBMをはじめとするメインフレームシステムベンダーは、通常、ハードディスクドライブ(リムーバブルメディアHDDの場合はメディア)に低レベルフォーマットを施して提供していました。これは通常、ディスク上の各トラックを1つ以上のブロックに分割し、各ブロックにユーザーデータと関連する制御情報を格納するというものでした。コンピュータによってブロックサイズは異なり、特にIBMは可変ブロックサイズを採用していましたが、IBM PCの普及により、1980年代半ばまでに業界全体で1ブロックあたり512バイトのユーザーデータという標準が採用されるようになりました。
システムによっては、低レベルのフォーマットは一般的にオペレーティングシステムのユーティリティによって行われていました。IBM互換PCでは、MS-DOSデバッグプログラムを使用して呼び出されるBIOSを使用して、BIOSごとに異なるアドレスに隠されたルーチンに制御を移していました。[ 16 ]
1980年代後半から、IBM互換PCの普及に伴い、HDDは互換性のある低レベルフォーマットで事前にフォーマットされた状態で一般的に入手できるようになりました。同時に、業界は従来の(単純な)ビットシリアルインターフェースから、工場で低レベルフォーマットが実行される最新の(インテリジェントな)ビットシリアルインターフェースおよびワードシリアルインターフェースへと移行しました。 [ 17 ] [ 18 ] そのため、エンドユーザーが最新のハードディスクドライブを低レベルフォーマットすることはできません。
最新のハードディスクドライブでは、ポストプロダクションのLLF(記録面上の「トラック」と「ブロック」の基本レイアウトを再構築する処理)は実行できなくなりました。再初期化とは、ディスクを工場出荷時のような構成に戻す処理のことです。つまり、データもパーティションもすべて削除され、すべてのブロックが使用可能な状態になります。
SCSI はフォーマット ユニットコマンドを提供します。このコマンドは、不良セクタを除外するために必要な認証ステップを実行し、セクタ サイズを変更する機能があります。コマンドライン sg_format プログラムを使用してコマンドを発行できます。[ 19 ]さまざまなセクタ サイズを選択できますが、すべてのデバイスで使用できるわけではありません。512、520、524、528、4096、4112、4160、および 4224 バイトのセクタです。[ 20 ] SCSI コマンドはサイズ変更を含む多くのオプションを提供しますが、低レベル フォーマットが行われるトラック レイヤーには影響しません。[ 21 ]
ATA は低レベルのフォーマット機能を公開していませんが、SET SECTOR CONFIGURATION ( --set-sector-size in ) を介してセクタサイズを変更できます。(コンシューマー向けドライブは通常、512 バイトと4096 バイトのセクタのみをサポートしています。) セクタサイズの変更はデータをスクランブルする可能性がありますが、安全なデータ消去方法ではなく、認証も行われていません。ATA は、消去用に別のSECURITY ERASE ( --security-erase in ) コマンドを提供しています。[ 22 ]hdparmhdparm
NVMeドライブには、例えば Linux コマンドライン プログラムnvme formatで利用できる標準的なフォーマット方法があります。セクター サイズの変更やセキュア消去のオプションが利用可能です。[ 23 ] NVMe ドライブは一般的にソリッドステートであるため、この「トラック」の区別は無意味であることに注意してください。
Seagate TechnologyのドライブにはTTLシリアルデバッグコンソールが搭載されています。[ 24 ]このコンソールでは、欠陥チェック(事前に確立された論理ブロックの再初期化)を実行しながら「システム」パーティションと「ユーザー」パーティションをフォーマットしたり、トラックパラメータを変更したり(実際の低レベルフォーマットを管理)することができます。[ 25 ]
ハードドライブの内蔵再初期化機能(上記参照)がドライバまたはシステムの制限により利用できない場合、代わりにディスク全体を埋めることができます。不良セクタ管理機能のない古いハードドライブでは、[ 26 ]プログラムで破損したセクタをチェックし、それらを回避する必要があります。欠陥管理機能を備えた新しいドライブでは、再割り当てされたセクタは消去されずに残る可能性がありますが、内蔵の再初期化機能ではそれらを消去します。[ 27 ]
現代では、ハードディスクをゼロ値で埋めることが最も一般的です0x00。ハードディスクでこのゼロフィル操作を実行する一般的な方法の 1 つは、/dev/zeroストリームを入力ファイルとして、ドライブ自体 (または特定のパーティション) を出力ファイルとして、 Unix ddユーティリティを使用してドライブにゼロ値のバイトを書き込むことです。 [ 28 ]このコマンドは完了までに何時間もかかる場合があり、すべてのファイルとファイルシステムが消去されます。
0xFFフラッシュディスクでは、摩耗を軽減するためにの値が使用されています。後者の値は通常、ROMディスク(再フォーマット不可)で使用されるデフォルト値でもあります。一部の高度なツールでは、フィル値を設定できます。[ h ]
ドライブをゼロで埋めることは、暗号化ファイルシステムで使用するドライブを準備する安全な方法ではありません。そうすると、暗号化された領域(暗号が破られない限り、鍵なしではランダムと区別できない)がゼロブロックの中で目立つため、プロセスの否認可能性が失われます。正しい手法は、一時的な暗号化レイヤー内でゼロを埋めてから、鍵とレイヤーの設定を破棄することです。( /dev/urandom も同様の安全性を提供しますが、処理速度が遅くなる傾向があります。)[ 29 ]
現在、低レベルフォーマットという用語に曖昧さが生じているのは、ウェブサイト上のドキュメントに一貫性がないことと、多くのユーザーが高レベル(ファイルシステム)フォーマットより下のプロセスはすべて低レベルフォーマットと呼ぶべきだと考えていることの両方が原因のようです。現在、低レベルフォーマット処理の多くは工場でしか実行できないため、様々なドライブメーカーが自社のウェブサイトで再初期化ソフトウェアをLLFユーティリティと呼んでいます。ユーザーは一般的に、完全なLLFと再初期化の違いを判断する方法がなく(ソフトウェアを実行すると、ハードディスクが高レベルフォーマットされる必要があると認識するだけ)、情報不足のユーザーと様々なドライブメーカーからの矛盾した情報によって、この誤解が広まっています。
注:このような用語の誤用が存在する可能性はあるものの、多くのサイトでは、ハードディスク上のすべてのバイトを上書きし、破損したセクターをチェックするための再初期化ユーティリティ(起動可能なフロッピーディスクやCDイメージファイルなど)を提供しています。
パーティショニングとは、ストレージデバイスまたはメディアのブロックに情報を書き込むことで、デバイスを複数のサブデバイスに分割するプロセスです。各サブデバイスはオペレーティングシステムによって個別のデバイスとして扱われ、場合によっては、デバイスからオペレーティングシステムを起動できるようにします。
MS-DOS、Microsoft Windows 、およびUNIXベースのオペレーティングシステム( BSD、Linux、macOSなど)では、通常、 fdisk、GNU Parted、ディスクユーティリティなどのパーティションエディタを使用してパーティションを作成します。これらのオペレーティングシステムは、複数のパーティションをサポートしています。
フロッピーディスクはパーティション分割されていませんが、OSによっては、OSからアクセスするためにボリューム情報が必要になる場合があります。
パーティションエディタやICKDSFは現在、HDDや光ディスクドライブのタイミングマークの書き込みといった低レベル機能に対応しておらず、消磁されたり工場出荷時のフォーマットが失われた最新のディスクを再初期化することもできません。
IBMのCP-67をベースとしたオペレーティングシステム(例:z/VM)は、ミニディスクのパーティション情報をドライブ外部に保持する。

高レベルフォーマットとは、ディスクパーティションまたは論理ボリューム上に空のファイルシステムを設定し、PCの場合はブートセクタをインストールするプロセスです。[ 1 ]これは多くの場合、高速な操作であり、クイックフォーマットと呼ばれることもあります。
論理ドライブ全体またはパーティション全体をフォーマットする際に、オプションで欠陥のスキャンを実行する場合がありますが、これにはかなりの時間がかかる可能性があります。
フロッピーディスクの場合、通常、ディスクフォーマットソフトウェアによって高レベルフォーマットと低レベルフォーマットの両方が一度に実行されます。8インチフロッピーは通常、低レベルフォーマットされており、フォーマットフィラー値で満たされていました0xE5。[ 15 ] [ f ] 1990年代以降、ほとんどの5.25インチおよび3.5インチフロッピーは、工場出荷時にDOS FAT12フロッピーとしてフォーマットされています。
OS/360およびDOS/360から派生した現在の IBM メインフレーム オペレーティング システム( z/OSおよびz/VSEなど) では、ドライブのフォーマットはICKDSFユーティリティの INIT コマンドによって行われます。[ 30 ]これらの OS は、ボリュームと呼ばれるデバイスごとに単一のパーティションのみをサポートしています。ICKDSF の機能には、すべてのトラックにレコード 0 を書き込むこと、IPLテキストを書き込むこと、ボリューム ラベルを作成すること、ボリューム目次(VTOC) を作成すること、およびオプションで VTOC 索引 (VTOCIX) を作成することが含まれます。高レベルのフォーマットは、ファイルの割り当ての一部として、ファイルシステム固有のユーティリティによって、または一部の古いアクセス方式では新しいデータが書き込まれる際にオンザフライで行われる場合もあります。z/OS Unix システム サービスでは、高レベルのフォーマットには 3 つの明確なレベルがあります。
IBMのCP-67をベースとしたオペレーティングシステムでは、ボリュームをフォーマットするとトラック0とダミーVTOCが初期化されます。ミニディスクのフォーマットはゲストオペレーティングシステムが担当し、CMS FORMATコマンドはCMSミニディスク上にCMSファイルシステムをフォーマットします。
ホスト保護領域(隠し保護領域とも呼ばれる)は、ハードドライブ上の領域であり、通常はオペレーティングシステム(OS)から見えないように高レベルフォーマットされている。
再フォーマットとは、動作中のディスクドライブからデータを完全に消去するために行われる高度なフォーマット処理です。再フォーマットの方法はオペレーティングシステムごとに異なり、既存のデータに対して実際に行われる処理はOSによって異なります。この処理で最も重要な点は、ディスクの空き容量を確保し、他のデータに利用できるようにすることです。実際にすべてのデータを「消去」するには、メディア上の各データブロックを上書きする必要がありますが、多くの高度なフォーマットユーティリティではこの処理は行われません。
再フォーマットというと、フォーマット完了後にオペレーティングシステムとその他すべてのソフトウェアが再インストールされるというニュアンスが含まれることが多い。不具合やセキュリティ侵害が発生したインストールを修復するのではなく、すべてを再フォーマットして最初からやり直す必要がある場合もある。このプロセスには、「ワイプ・アンド・リロード」、「ニューク・アンド・ペイブ」、「リイメージ」など、さまざまな俗語が存在する。ただし、ユーザーデータのみを含むドライブを再フォーマットする場合、OSの再インストールは不要である。

format コマンド: MS-DOS、PC DOS、OS/2、およびMicrosoft Windowsでは、このformatコマンドを使用してディスクのフォーマットを実行できます。format通常、プログラムはデータの誤削除を防ぐために事前に確認を求めますが、一部の DOS バージョンには非公開の/AUTOTESTオプションがあり、これを使用すると通常の確認がスキップされ、すぐにフォーマットが開始されます。WM/FormatCマクロウイルスは、このコマンドを使用して、ドキュメントを開くとすぐにドライブ C: をフォーマットします。
無条件フォーマット:無条件/Uフォーマットを実行するパラメータもあり、ほとんどの場合、パーティション全体を上書きし、[ 31 ]ソフトウェアによるデータの復元を防ぎます。ただし、このスイッチはフロッピーディスクでのみ確実に機能することに注意してください (右の画像を参照)。技術的には、が使用されない限り、フロッピーは常に高レベルフォーマットに加えて低レベルフォーマットされます。ただし、ハードドライブパーティションの場合、特定の状況では、このスイッチはフォーマットするパーティション内の情報の作成を防止するだけで、それ以外の場合はパーティションの内容は完全にそのまま残ります (ディスク上には残っていますが、削除済みとしてマークされます)。このような場合、ユーザーのデータはEnCaseやディスクエディタなどの専門ツールを使用して復元できます。したがって、ハードドライブパーティションの安全な上書きにに依存することはお勧めできません。代わりに、 DBANなどの専用ツールを検討してください。/U/Q/Uunformat/U
上書き:Windows Vista以降では、非クイックフォーマットは処理中に上書きされます。Windows XP以前のバージョンではそうではありません。[ 32 ]
OS/2 :OS/2では、ロング/Lフォーマットを指定するパラメーターを使用すると、フォーマットによってパーティションまたは論理ドライブ全体が上書きされます。これにより、 CHKDSKによるファイルの復元能力が向上します。
これらのシステムでのディスクの高レベルフォーマットは、従来mkfsコマンドを使用して行われてきました。Linux (および他のシステムでも) では、mkfs通常、 という名前のファイルシステム固有のコマンドのラッパーです。ここで、fsnameはディスクをフォーマットするファイルシステムの名前です。[ 33 ]の特定の実装でサポートされていないファイルシステムには、独自の操作ツールがあります。たとえば、Ntfsprogs はNTFSファイルシステム用のフォーマットユーティリティを提供します。mkfs.fsnamemkfs
Unix系およびUnixライクなオペレーティングシステムには、より高度なフォーマットツールが用意されているものがあり、通常はディスクのフォーマットを容易にしたり、同じツールでディスクをパーティション分割したりできるようにするために提供されています。例としては、GNU Parted (およびGPartedやKDEパーティションマネージャなどの様々なGUIフロントエンド)や、Mac OS Xのディスクユーティリティアプリケーションなどが挙げられます。
オペレーティングシステムによるファイル削除と同様に、ディスク上のデータはすべての高レベルフォーマットで完全に消去されるわけではありません。代わりに、データを含むディスク上の領域は単に使用可能としてマークされ、上書きされるまで古いデータが保持されます。ディスクがパーティションに以前存在していたファイルシステムとは異なるファイルシステムでフォーマットされた場合、同じファイルシステムを使用していた場合には上書きされなかったデータが上書きされる可能性があります。ただし、一部のファイルシステム(NTFSなど、FATは除く)では、ファイルインデックス(NTFSの$MFT、ext2/3のinodeなど)がまったく同じ場所に書き込まれない場合があります。また、パーティションサイズが増加すると、FATファイルシステムであっても、新しいパーティションの先頭でより多くのデータが上書きされます。
リカバリツールによる機密データの復旧を防止するという観点から、データは(すべてのセクターを)完全に上書きする必要があります。これは、専用のツールを使用するか、フォーマット処理中に実行する必要があります。DOS、OS/2、Windowsでは、フォーマット時に/L (ロング)オプションを使用するとデータが消去されます。また、 MVSのパーティションデータセット(PDS)やIBMメインフレームの新しいファイルシステムでは、常にデータが消去されます。
古い (1990 年代まで) 磁気ストレージ上の機密データを破壊するのにゼロフィルを 1 回実行するだけで十分かどうかは議論の余地がある。グートマン (35 パスのグートマン法で知られる) は、磁気力顕微鏡でフロッピー上の古いビットを「見る」ことができるかもしれないと主張しているが[ 34 ]、彼が引用した情報源ではそれを証明していない。ランダムフィルは固定パターンフィルよりも強力であると考えられている。[ 35 ] NIST (2014) および Wright ら (2008) によると、ゼロフィルを 1 回実行するだけでデータ残留を防ぐのに十分である。 [ 36 ] [ 37 ]ハードドライブに組み込まれているSecure Eraseオプションは信頼できると考えられているが[ 27 ] [ 38 ] 、初期のソリッドステートドライブではこの機能が正しく実装されていないことが知られているという注意点がある。[ 39 ]
0xE5ため、 の値はFAT12、 FAT16、 FAT32ファイルシステム0xE5のディレクトリ エントリで特別な意味を持ちます。これにより、86-DOS は、箱から出してすぐに、または FAT を初期化するだけで 8 インチ フロッピーディスクを使用できました。/W:246(フィル値 の場合) を備えた DR-DOS の FDISK R2.31 です。他のFDISK0xF6ユーティリティとは異なり、DR-DOS FDISK はパーティションツールであるだけでなく、新しく作成されたパーティションをFAT12、 FAT16、またはFAT32としてフォーマットすることもできます。これにより、誤って間違ったボリュームをフォーマットしてしまうリスクが軽減されます。RECOMP オプションまたは LABEL オプションのいずれも指定しない場合、ディスク領域は、デバイス依存の数のレコード (バイナリ ゼロを含む) を各トラックに書き込むことによって初期化されます。ディスク上の以前のデータはすべて消去されます。
TSS/360 仮想組織データセットが格納される直接アクセスボリュームには、固定長のページサイズデータブロックがあります。キーフィールドは不要です。レコードオーバーフロー機能を使用して、必要に応じてデータブロックがトラックをまたぐことができます。識別用に使用される最初のシリンダの一部を除き、ボリューム全体がページサイズブロックにフォーマットされます。
Windows Vista では format コマンドの動作が変更されました。Windows Vista では、デフォルトでは、完全フォーマットを実行すると format コマンドはディスク全体にゼロを書き込みます。Windows XP およびそれ以前のバージョンの Windows オペレーティングシステムでは、完全フォーマットを実行しても format コマンドはディスク全体にゼロを書き込みません。