章 – 3
ディスクとOSへの論理的アプローチ
ハードディスクはハードウェア自体を実行できず、操作を実行するにはBIOS(基本入出力システム)とDOS(またはオペレーティングシステム)の2つの基本ソフトウェアが必要です。ディスクオペレーティングシステムは、コンピュータやハードディスクのハードウェアと直接通信しませんが、その間にBIOSが必要です。そのため、BIOSはコンピューターで重要な役割を果たしています。
BIOS
BIOSの基本的な仕事は、コンピューターに接続されているハードウェアまたはデバイスとDOSの間の標準インターフェイスを提供することです。 システムBIOSは、システムのハードウェアとシステム上で実行されるソフトウェアの間の最下位レベルのインターフェイスです。 ハードディスクへのアクセスの制御において、次のようないくつかの重要な役割を果たします。
- BIOS割り込みルーチン;
- ハードディスクの検出と構成
- ハードディスクインターフェイスモードのサポート
さまざまなハードウェアおよびソフトウェア製品の相互運用性を確保するために、システムのBIOSはそのハードウェアのニーズに合わせて調整され、ソフトウェアがハードウェアに対応できるようにする標準的な方法を提供します。これらはBIOSサービスと呼ばれ、多くのオペレーティングシステムおよびアプリケーションプログラムで使用されます。これらはハードディスクへの統一されたインターフェイスを提供するため、アプリケーションは各タイプのハードディスクと個別に通信する方法を知る必要はありません。
標準のIDE / ATAハードディスクは、さまざまなBIOS設定を使用してBIOSで構成されます。最新のBIOSプログラムは、最新のIDE / ATAディスクを検出して、これらのパラメーターを判別し、それらを自動的に構成できます。 BIOSは、マザーボード上のシステムチップセットとシステムI / Oバスを操作して、ハードディスクで使用できるインターフェイスモードのタイプを制御します。
INT13HインターフェースおよびINT13H拡張機能
BIOSへの主要なインターフェイスはソフトウェア割り込み13Hで、これは一般にINT 13Hとして知られています。ここで、INTは割り込みを表し、13Hは16進表記の番号19です。
この本のプログラミング段階では、プログラミングにおける割り込みの使用について詳しく学び、説明します。 Int13Hインターフェースは、BIOSに与えることができる多くの異なるコマンドをサポートし、BIOSはそれらをハードディスクに渡します。割り込み13Hには、読み取り、書き込み、フォーマットなど、ディスクで実行する必要のあるほとんどのタスクが含まれています。
Int13Hを使用および操作するには、呼び出し側プログラムがハードディスクの特定のパラメーターを認識し、ディスクアクセスを可能にするために、ルーチンに正確なヘッド、シリンダー、およびセクターのアドレス指定を提供する必要があります。
BIOSは、BIOSセットアッププログラムでセットアップされたハードディスクのジオメトリを使用します。 Int13Hインターフェイスは、ドライブのジオメトリの仕様に24ビットを割り当て、次のように分割されます。
- シリンダー番号は10ビット、または合計1,024シリンダー。
- ヘッド番号は8ビット、または合計256ヘッド。
- セクター番号は6ビット、または合計63セクター。
したがって、ディスク内の可能な最大セクター数は次のようになります。
= 1024 * 256 * 63
= 16515072
ここでわかるように、INT 13Hインターフェイスは、セクターあたり512バイトで最大16515072セクターを含むディスクをサポートできます。したがって、最大ディスクサイズは次のようになります。
= 16515072 * 512
= 8455716864 Bytes
~ 8.456 GB
したがって、INT 13Hインターフェースは、最大約8.456 GB(または7.875 GiB)のディスクサイズをサポートできます。
今日、ほとんどのコンピューターユーザーは、容量が8 GBよりもはるかに大きいハードディスクを使用しています。そのため、INT 13Hインターフェイスは、最近のコンピューターシステムでの有用性がなくなり、INTと呼ばれる新しいインターフェイスに置き換えられました。ただし、13H拡張機能は、DOSやその他の古いオペレーティングシステム、およびその他の互換性の目的で引き続き使用される場合があります。
Int13H拡張機能
INT 13Hインターフェイスが開発されたとき、ハードディスクで8GBのサイズを取得することを誰も期待していなかったのは本当に興味深い話です。しかし、今日では、ホームユーザーのパーソナルコンピュータであっても、8GBのハードディスクの容量がはるかに小さいと感じるかもしれません。
古い規格には、24ビットのアドレス情報を使用するという重要な制限があります。そのため、最大容量が8.456 GB(7.875 GiB)になる、セクターあたり512バイトの最大16515072セクターを含むドライブのみを処理できます。
したがって、問題はアクセスパスを24ビットからもっと大きなものに広げることでしたが、これを行おうとすると多くの古いハードウェアとソフトウェアが機能しなくなるため、既存のINT13HBIOSインターフェイスを拡張することはできませんでした。そして実際には、多くの古いハードウェアとソフトウェアが開発で機能していない状態で、コンピューターの世界で立派な場所を獲得する望みはありません。
そのため、Int13Hに代わる新しいインターフェイスが開発されました。これらのルーチンは、Int13H拡張機能と呼ばれます。 この新しいインターフェイスは、アドレス指定に24ビットではなく64ビットを使用し、ハードドライブの最大サイズを9.4 * 1021バイト(9.4兆ギガバイト)にすることができます。
この本のプログラミングセクションでは、INT13HとINT13Hの両方の拡張機能の使用法を学びます。以前に行われた他の多くのサイズ制限があります。一般的な論理的および物理的制限のいくつかを以下に説明します。
2.1GBの制限
このサイズ制限は、シリンダー数を示すCMOSRAMのフィールドに12ビットしか割り当てない一部の古いBIOSで観察されました。したがって、この数は最大で111111111111B(可能な最大12ビット2進数)であり、これは4095に相当します。このようにして、アクセス可能な16ヘッドの最大ディスクサイズは次のようになります。
= 4095 * 16 * 63 * 512 Bytes
= 2113413120 Bytes are accessible.
33.8GBの制限
このハードディスクサイズの障壁は1999年の初めに気づきました。大きなディスクは16ヘッド、63セクター/トラック、16383シリンダーを報告します。多くのBIOSは、合計容量を16 * 63で割って実際のシリンダー数を計算します。
33.8 GBを超えるディスクの場合、これにより65535を超えるシリンダー数になります。この特定のケースでは、AwardBIOSの一部のバージョンは65,535シリンダーを超えるドライブを処理できません。これで、BIOSがクラッシュまたはハングします。ハードディスクのパラメータは通常16個のヘッドと63個のセクターを使用するため、問題が発生する前に、これは約33.8GBまたは31.5GiBの容量になります。
解決策は、BIOSをアップグレードするか、ジャンパーを使用してディスクを小さく見せることです。
IDEディスクのATA仕様-137GBの制限
古いATA仕様では、137GBを超えるディスクへのアクセスは許可されていません。実際には、セクター番号を指定するために28ビットしか使用しません。ただし、ATA-6は48ビットのセクター番号で拡張を定義します。
ディスクサイズの制限は、0から65535までカウントする最大65536シリンダー、0から15までカウントする16ヘッド、および1から255までカウントするトラックあたり255セクター、ディスクの最大合計容量の組み合わせで生成されました。
= 65535 * 16 * 255 Sectors
= 267386880 Sectors
= 136902082560 Bytes (Sector of 512 Bytes Each)
~ 137 GB
2台および4台のディスクBIOSIDEのサポート
現在、最新のBIOSプログラムのほとんどは、ハードディスクの自動検出をサポートしています。これにより、BIOSは各ハードディスクに問い合わせて、論理ジオメトリ、サポートされている転送モード、およびその他の情報を判別できます。これは、BIOSに応じて、セットアップ時に実行することも、マシンが起動するたびに動的に実行することもできます。
システムBIOSはIDE / ATAハードディスクのネイティブサポートを提供するため、システム内のハードディスクとその制御方法をBIOSに通知するために設定できるパラメータがいくつかある場合があります。システム内の各ハードディスクには独自の設定があるため、プライマリマスター用に1つ、プライマリスレーブ用に1つ、というように設定されます。ただし、SCSIハードディスクは、ホストアダプタと組み込みのSCSIBIOSを介して構成されます。
サイズが8GBを超えるハードディスクドライブは、従来のIDE / ATA BIOSジオメトリパラメータを使用して記述できないため、動的自動検出は、特に古いコンピュータシステムの場合、最新のドライブを設定する標準的な方法ですが、ユーザーは引き続き一部のドライブを設定できます。パラメータを手動で。
以下は、IDE / ATAハードディスクを構成するためのBIOSセットアッププログラムに通常見られる設定です。最近のシステムでは、最も古い互換性設定のいくつかはもう存在しない可能性があります。
- ディスクタイプ: これは元々、ユーザーが事前定義されたリストからハードディスクを選択できるようにするために使用されていましたが、現在はドライブの自動または手動のパラメーター設定を制御するために使用されています。
- サイズ: 10進メガバイト単位のハードディスクドライブのサイズ。これは、シリンダー、ヘッド、セクターなどの他のパラメーターから計算されます。
- シリンダー: ディスク上の論理シリンダーの数。
ヘッド:ディスク上の論理ヘッドの数。
- セクター: ディスク上の各論理トラック内の各512バイトの論理セクターの数。通常、最近のハードディスクドライブには、1つのトラックに63のセクターがあります。
- 事前補償を書く: これは、非常に古いドライブに対してどのシリンダー番号の書き込み調整を行う必要があるかを指定する互換性設定です。
- ランディングゾーン(パーキングヘッド): ランディングゾーンは、ドライブがオフになっているときにデータの損失や不良セクタの作成を回避するために、BIOSによってヘッドがパークされるシリンダーです。最新のハードディスクドライブは自動的にヘッドをパークするため、今日ではほとんど必要ありません。
- 翻訳モード: 504MBを超えるハードディスクをサポートするために使用されるBIOS変換モード。
- ブロックモード: ブロック単位でディスク転送を実行するBIOSの機能を制御します。
- プログラムドI / O(DMA)モード: ハードディスクとの間の転送を実行するために使用されるプログラムドI / OモードまたはDMAモード。
- 32ビット転送モード: 高性能の32ビットデータ転送の使用を制御します。
ファイルシステムの制限
各ファイルシステムは、最大ボリュームサイズ、ファイルサイズ、およびボリュームあたりのファイル数をサポートします。
たとえば、 通常、FAT16とFAT32のボリュームは、それぞれ4GBと32GB(一般的に)に制限されています。以下に示すように、知っておく必要のあるFATファイルシステムに関連するいくつかの制限があります。
- FAT12: 16 MB未満のFATボリュームは、FAT12としてフォーマットされます。これは最も古いFATタイプであり、12ビットのバイナリを使用してクラスター番号を保持します。 FAT12を使用してフォーマットされたボリュームは、最大4,086クラスターを保持できます。これは、212からFATで使用されるいくつかの予約値を引いたものに相当します。 (これについては、この章で次に説明するディスクの論理構造で詳しく説明します)。したがって、FAT12は少量に最適です。フロッピーディスクおよび約16MB未満のハードディスクパーティションで使用されます。
- FAT16: FAT16は、16ビットの2進数を使用してクラスター番号を保持します。 FAT16を使用するボリュームは、最大65,526クラスターを保持できます。これは、216からFATで使用されるいくつかの予約値を引いたものに相当します。 (これについては、この章で次に説明するディスクの論理構造で詳しく説明します)。 FAT16は、16MBから2,048MBのサイズのハードディスクボリュームに使用されます。 2 GBを超えるFAT16ボリュームには、MS-DOS、Windows 95/98 / ME、およびその他の多くのオペレーティングシステムを実行しているコンピューターからはアクセスできません。この制限は、これらのオペレーティングシステムが32 KBを超えるクラスターサイズをサポートしていないために発生します。その結果、2GBの制限が発生します。 (この章で次に示すクラスターの制限を参照してください)。
- FAT32: 理論的には、最大FAT32ボリュームは最大2048 GB(約2テラバイト)になる可能性があります。 FAT32は、Windows95のOEMSR2リリース、およびWindows 98 / MEでサポートされています。 FAT32は28ビットのバイナリクラスター番号を使用します(32ビットのうち4ビットが「予約済み」であるため、32ではないことに注意してください)。したがって、理論的には、FAT32は2億6800万クラスター(実際には268,435,456クラスター)を超えるボリュームを処理でき、最大2TBのサイズのドライブをサポートします。ただし、これを行うと、FATのサイズが非常に大きくなります。 (これについては、この章の次のトピックで説明します)。
次に、FATタイプの比較を表に示します。
NTFS:NTFSは、New Technology FileSystemの略です。これは、Windows 2000 / XPで使用されます。理論的には、NTFSパーティションの最大サイズは(2 64 – 1)クラスターです。.
NTFSファイルシステムの詳細な説明は、この本の制限を超えていますが、次の表にいくつかの制限があります。
Description
|
Limit |
Maximum file size
|
16 Exabytes – 1 KB (2 64 Bytes – 1 KB) |
Maximum volume size
|
(2 64 – 1) clusters |
Files (and Folders) per volume
|
4,294,967,295 (2 32 – 1 ) Flies and Folders |
集まる
すべてのソフトウェアがアクセスできる割り当て用のハードディスク上のスペースの最小単位は、512バイトを含むセクターです。各ファイルに必要な数の個別のセクターが割り当てられるディスクの割り当てシステムを使用することができます。たとえば、1 MBのファイルでは、データを保存するために約2,048の個別のセクターが必要になります。
FATファイルシステムの場合、つまりほとんどのファイルシステムでは、個々のセクターは使用されていません。これにはいくつかのパフォーマンス上の理由があります。 DOSがハードディスクに情報を書き込む場合、スペースセクターごとに割り当てられるのではなく、クラスターと呼ばれる新しいストレージユニットを使用します。
FATは何年も前に設計された単純なファイルシステムであり、個々のセクターを管理することはできません。代わりにFATが行うことは、セクターをクラスターまたは割り当てユニットと呼ばれるより大きなブロックにグループ化することです。
クラスターは、ファイルに割り振ることができるディスク域の最小単位です。 これが、クラスターが割り当てユニットと呼ばれることが多い理由です。ファイルが512バイトに分割されている場合、ディスクの管理が非常に難しい場合があります。
個別に管理される512バイトのセクターを使用する20GBのディスクボリュームには、4,100万を超える個別のセクターが含まれ、この多くの情報を追跡することは時間とリソースを消費します。ただし、一部のオペレーティングシステムは、セクターごとにファイルにスペースを割り当てますが、これを適切に行うには、高度なインテリジェンスが必要です。
クラスタは、ディスクに情報を保存するときにDOSによって割り当てられる最小のスペースです。 1バイト長の情報のみをディスクに保存する場合でも、ディスク表面に少なくとも1つのクラスター領域が必要です。
1つのクラスターが512バイトの情報を格納できる場合、513バイトを格納するには、2つのクラスターが必要になります。すべてのファイルには、整数個のクラスターを割り当てる必要があります。つまり、ボリュームが4,096バイトを含むクラスターを使用する場合、610バイトのファイルは1つのクラスター、つまりディスク上で4,096バイトを使用しますが、4,097バイトのファイルは2つのクラスター、つまりディスク上で8,192バイトを使用します。
これが、ディスクを最大限に活用するためにクラスターサイズが非常に重要である理由です。したがって、クラスターサイズが大きいほど、無駄なスペースが増えることがわかります。
次の図は、BINARY.Cという名前のファイルのプロパティを示しており、ディスク内のファイルによって使用されているスペースの事実を明確にしています。ファイルの実際のサイズは610バイトですが、単一のクラスターが4,096バイトであるため、ファイルはディスク内の1つのクラスター(4,096バイト)を使用します。
クラスターは、1つ以上のセクターで構成できます。使用しているディスクの種類によって異なります。クラスタは複数のセクターで構成できるため、アロケーションユニットとしてクラスタを使用すると、DOSが使用済みの空のディスク領域の情報を保持するために使用するファイルアロケーションテーブルのサイズが小さくなります。
クラスタサイズは、主にディスクボリュームのサイズによって決まります。厳密に言えば、一般的に、ボリュームが大きいほど、クラスターサイズも大きくなります。ハードディスクボリュームの場合、各クラスターのサイズは4セクター(2,048バイト)から64セクター(32,768バイト)の範囲です。
フロッピーディスクははるかに小さなクラスターを使用し、場合によっては1セクターのサイズのクラスターを使用します。クラスター内のセクターは連続しているため、各クラスターはディスク上の連続したスペースのブロックです。
クラスタサイズ、つまりパーティションまたはボリュームサイズは直接関連しているため、パフォーマンスとディスク使用率に重要な影響を及ぼします。クラスタサイズは、ディスクボリュームがパーティション化されたときに決定されます。
特定の条件の範囲内で既存のパーティションのクラスターサイズを変更できるPartitionMagicのようなユーティリティがいくつかありますが、一般的なケースでは、パーティションサイズとクラスターサイズを選択すると修正されます。
前に説明したように、シリンダーまたはトラック番号は0から始まり、最初のセクター番号は常に1と見なされます。もう1つ覚えておくべきことは、最初のクラスター番号は常に2と見なされることです。
クラスターサイズ
クラスタは、データ領域にのみストレージ領域を割り当てるために使用されます。 FATとディレクトリ領域は、クラスタサイズに応じて割り当てられません。 512バイトのセクターを使用するディスクでは、512バイトのクラスターには1つのセクターが含まれますが、4KBのクラスターには8つのセクターが含まれます。
次の表に、DOSがさまざまなディスク形式で使用するデフォルトのクラスターサイズを示します。ただし、状況によっては、クラスターのサイズがデフォルトのサイズと異なる場合があります。
Floppy Disk Drive (FDD) |
Drive Types |
Sectors/Cluster |
Total Cluster size in bytes (Sectors of 512 bytes Each) |
5.25” 360Kb FDD |
2 sectors |
1,024 |
5.25”1.2Mb FDD |
1 sector |
512 |
3.5” 720Kb FDD |
2 sectors |
1,024 |
3.5”1.44Mb FDD |
1 sector |
512 |
3.5”2.88MB FDD |
2 sectors |
1,024 |
FAT16、FAT32、およびNTFSはそれぞれ、パーティションのサイズに応じて異なるクラスターサイズを使用し、各ファイルシステムにはサポートできるクラスターの最大数があります。クラスタサイズが小さいほど、クラスタ内の未使用領域を他のファイルで使用できないため、ディスクはより効率的に情報を格納します。
次の表は、FAT16、FAT32、およびNTFSファイルシステムパーティションのデフォルトのクラスターサイズを示しています。 FAT 32は、はるかに効率的なストレージとより大きなハードドライブの使用を可能にします。32ビットFATは、Windows 95OSR-2およびWindows98 / MEとのみ互換性があります。 FAT 16は、MS-DOS、Windows 3.1、Windows 95、およびWindowsNTでサポートされています。オペレーティングシステムWindows2000 / XPは、NTFSファイルシステムを使用します。
ノート : ここで、1 KiBは1バイナリキロバイトに対して記述されています。つまり、1 KiBは1024バイトであるか、512バイトの2つのセクターは1KiBに相当すると言えます。
FAT16パーティションのサイズが大きくなると、ディスクスペースの浪費も大きくなります。 FAT32を使用すると、クラスターサイズが小さくなり、効率的なストレージが提供されます。 FAT32では、より大きなハードディスクを使用でき、クラスターサイズを大幅に削減できますが、FAT32を使用する際には、数十ギガバイトの巨大なハードディスクがFAT32を新しいシステムに不可欠なものにしているという重要なパフォーマンス上の考慮事項があります。むしろ、FAT16とFAT32のどちらかを選択する必要がなくなったと言えます。
FAT16がサポートできる最大の2,048MBのパーティションについて考えてみましょう。このパーティションがFAT16で設定されている場合、65,526個のクラスターを含むファイルアロケーションテーブルが作成され、各クラスターは32KiBのディスクスペースを占有します。
クラスターサイズが大きいと、実際にディスクスペースが大幅に浪費されます。したがって、このパーティションでFAT32を使用することをお勧めします。これにより、クラスターサイズが32KiBから4KiBに減少します。
実際、これにより、ディスクのスラックが最大30%まで大幅に削減され、以前は無駄になっていた数百メガバイトのディスク領域が解放される可能性があります。通常、この状況で行うのは正しいことです。しかし、それは別の側面を持っています。この縮小されたクラスターサイズを無料で入手することはできません。
各クラスターは小さいため、同じ量のディスクをカバーするには、クラスターを増やす必要があります。したがって、65,526クラスターの代わりに、524,208クラスターになります。
さらに、FAT32のFATエントリは32ビット幅(各エントリは4バイト)ですが、FAT16のエントリは16ビット(各エントリは2バイト)です。最終的な結果として、FATのサイズはFAT16の場合よりもFAT32の場合の16倍になります。次の表を要約します。
FAT 16 and FAT 32 for 2,048 MB Disk Volume |
FAT Type |
FAT16 |
FAT32 |
Cluster Size |
32 KiB |
4 KiB |
Number of FAT Entries |
65,526 |
524,208 |
Size of FAT |
131052 Bytes
(~ 128 KiB) |
2096832 Bytes
(~ 2 MiB) |
FAT32ボリュームのサイズを2GBから8GBに増やすと、FATのサイズは約2MiBから8MiBに増えます。これの重要性は、FAT32ボリュームがFATを保持するためにディスク上の数メガバイトのスペースを浪費しなければならないという事実ではありません。これを行うだけで、FATのサイズを縮小するよりもはるかに多くのスペースを節約できるからです。本当の問題は、FATがボリューム内のすべてのファイルのすべてのクラスターポインターを保持していることです。 FATのサイズが大幅に大きくなると、システム速度に悪影響を与える可能性があります。
このため、ファイルアロケーションテーブルのサイズを適切なサイズの数に制限することが重要です。実際、ほとんどの場合、クラスターサイズとFATサイズのバランスを見つけることが問題になります。これの良い例は、FAT32自体によって行われたクラスターサイズの選択です。
FAT32は約2億6800万の最大クラスターを処理できるため、4KiBクラスターサイズは概念的に1TiB(1,024 GiB)のサイズのディスクボリュームをサポートできますが、そうする際の問題は、FATサイズが1GBを超えることです。エントリあたり4バイトの2億6800万倍によると。
このため、FAT32は最大8GiBのボリュームに対して4KiBクラスターのみを使用し、クラスターサイズについては、前の表に示すように、より大きなクラスターが使用されます。公式に宣言されているFAT32でサポートされている最大パーティションサイズは2,048GiB(2 TiB)です。
ハードディスクの論理構造
基本的に、ハードディスクの論理構造は次の5つの論理用語で分けることができます。
- MBR(マスターブートレコード)
- DBR(DOSブートレコード)
- FAT(ファイルアロケーションテーブル)
- ルートディレクトリ
- データエリア
次の図は、ハードディスクの論理構造を形成するこれらの論理用語の概念的な配置を表しています。
マスターブートレコード(MBR)またはマスターパーティションテーブル(MPT)と呼ばれることもあるこのプログラムには、ハードディスクドライブからアクティブな(または起動可能な)パーティションをロードして起動するための小さなプログラムが含まれています。マスターブートレコードには、開始セクター、終了セクター、パーティションのサイズなど、ハードディスクドライブ上の4つのプライマリパーティションすべてに関する情報が含まれています。
MBRは絶対セクター0にあります。つまり、シリンダー0、ヘッド0、セクター1にあり、ディスクに複数のパーティションが存在する場合は、各拡張パーティションボリュームの先頭に拡張マスターブートレコードがあります。 (次の図を参照してください)。
MBRは、DOSのFDISK.EXEコマンドを実行することにより、ハードディスクドライブ上に作成されます。ただし、同じタスクを実行するために利用できるソフトウェアは他にもたくさんあります。 FDISKを使用すると、これらのパーティションのいずれかをアクティブまたは起動可能にすることができます。
これにより、アクティブパーティションのブートセクタは、システムの起動時に制御を受け取ることができます。フロッピーにはパーティションがないため、フロッピーにはMBRはありません。
DOSは単一の大文字のアルファベットを使用してパーティションに名前を付けるため、DOSで許可されるすべてのタイプのパーティションの最大数は24で、ドライブ文字C(C :)からドライブ文字Z(Z :)までです。したがって、複数の物理ハードディスクドライブが存在する場合でも、すべてのドライブのパーティションの総数は24を超えることはできません。
電源投入時自己診断(POST)の後、BIOSはMBR(マスターブートレコード)をハードディスクからメモリにロードして実行します。最初にMBRはハードディスクのアクティブパーティションをチェックし、次にDOSブートレコード(DBR)をメモリにロードし、制御をオペレーティングシステムのブートコードに切り替えます。次に、オペレーティングシステムのブートレコードコードが残りのオペレーティングシステムをにロードします。メモリー。
マスターブートレコード形式
ハードディスクドライブをいくつかの論理ドライブに分割する場合があります。これらの論理ドライブには、通常、DOSによって独自のドライブ文字が割り当てられます。アクティブな(または起動可能な)パーティションとしてマークできるのは、一度に1つのパーティションのみです。
マスターブートレコードには、マスターパーティションテーブルのエントリが4つに制限されています。ただし、拡張マスターブートレコードの場所は、拡張パーティションテーブルを含むマスターブートレコードを使用して取得できます。このフォーマットは、ブートコードがないことを除いて、メインパーティションテーブルとまったく同じです。
拡張マスターブートレコードでは、この446バイトのスペースは通常、ブートコード用に予約されており、空のままです。表に示すように、マスターブートレコードの512バイトはすべて次のように壊れています。
Offset |
Description |
Size |
000H |
Initial Program Loader (IPL) , Executable Code (Provides very first booting to the Computer) |
446 Bytes |
1BEH |
First Partition Entry (See Next Table) |
16 Bytes |
1CEH |
Second Partition Entry |
16 Bytes |
1DEH |
Third Partition Entry |
16 Bytes |
1EEH |
Fourth Partition Entry |
16 Bytes |
1FEH |
Executable Marker or Bootable Sector Signature or Magic Number (AAH 55H) |
2 Bytes |
Total = 512 Bytes |
すべての拡張パーティションは、拡張パーティションエントリによって予約されたスペース内に存在する必要があります。拡張パーティションのうち2つだけが使用されるようになっています。最初のパーティションは通常のパーティションとして使用され、2番目のパーティションは存在する場合は別の拡張パーティションとして使用されます。したがって、1つのマスターパーティションテーブルを使用して、その隣にある別の拡張マスターパーティションテーブルの場所を取得できます(存在する場合)。
パーティションテーブルのエントリ形式
MBRのパーティションのパーティションテーブルエントリの形式は、次の表に示されています。 MBRのすべてのパーティションエントリは、特定の意味を持つ次のバイトに分割される場合があります。
ブートタイプインジケータバイト(1バイト): このバイトが00Hの場合、パーティションがアクティブではないことを意味し、バイトが80Hの場合、パーティションがアクティブパーティションまたはブータブルパーティションであることを意味します。他のバイトが存在する場合、これらは予期されませんが、他のバイトが存在する場合は、パーティションテーブルの破損またはパーティションテーブルでのVIRUS攻撃が原因である可能性があります。
開始シリンダー–ヘッド–パーティションのセクター番号(3バイト):任意のディスクのCHS(シリンダー、ヘッド、およびセクター)を計算すると、物理CHSは次のようにカウントされます。
- 物理セクターは1から数えられます。
- 物理ヘッドは0から数えられます。
- 物理シリンダーは0からカウントされます(詳細については前の章を参照してください)
- オフセット01Hのバイトは、パーティションの16進システムの開始ヘッド番号を表します。
オフセット02Hのバイトの6つの最下位ビットは、パーティションの開始セクター番号と、残りの2ビット(2つの最上位ビットとして)とオフセット03Hの別のバイトの8ビットの組み合わせ(10ビット数の残りの8つの最下位ビット)になります。 )パーティションの開始シリンダー番号を作成します。
Offset |
Meaning |
Size |
Description |
00H |
Boot Type Indicator Byte |
1 Byte |
If Byte is 00H, the Partition is Inactive and if Byte is 80H , The Partition is Active (or Bootable) |
01H |
Head Number of Beginning of the Partition |
1 Byte |
Starting Head number of the Partition in Hexadecimal System |
02H |
Sector and Cylinder Number of Beginning of the Partition |
2 Bytes |
6 Bits of First Byte make Starting Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Starting Cylinder Number of the Partition |
04H |
File System indicator Byte |
1 Byte |
File System Indicator Byte in Hexadecimal system (See the Table given next for Indicators) |
05H |
Head Number of End of the Partition |
1 Byte |
Ending Head Number of the Partition in Hexadecimal System |
06H |
Sector and Cylinder Number of End of the Partition |
2 Bytes |
6 Bits of First Byte make Ending Sector Number and Combination of remaining 2 Bits (as Two Most Significant Bits) plus 8 Bits of another Byte (Rest 8 least Significant Bits of the 10-Bit Number ) make the Ending Cylinder Number of the Partition |
08H |
Relative Sector number of Beginning of the Partition |
4 Bytes |
Number of Sectors Between the MBR and the First Sector in the Partition |
0CH |
Number of Sectors of the Partition |
4 Bytes |
Number of Sectors in the Partition |
Total = 16 Bytes |
シリンダーとセクターのエンコードは、次に実行されるパーティションテーブルのサンプル調査の例で示されています。
ファイルシステムインジケータバイト(1バイト): オフセット04Hのファイルシステムインジケータバイトは、そのパーティションのファイルシステムを表します。この章では、さまざまなファイルシステムのファイルシステムインジケータバイトを一覧表示した表を次に示します。
終了シリンダー–ヘッド–パーティションのセクター番号(3バイト) : エンコーディングは、パーティションの開始シリンダー–ヘッド–セクター番号の場合と同じです。
パーティションの開始の相対セクター番号(4バイト) : MBRと16進法のパーティションの最初のセクターの間のセクターの数。
パーティションのセクター数(4バイト) : 16進法のパーティション内のセクターの数。
シリンダー、ヘッド、セクターの番号はBIOSに渡す必要がある番号であることを常に覚えておく必要があります。したがって、BIOSが変換(LBAモードまたはINT 13H拡張機能サポート)を使用している場合、値は物理CHS値を表していない可能性があります。大型ハードドライブ(8.4 GBを超える)の場合、CHS値が無効である可能性があります。これらの値は通常無視する必要があり、代わりに絶対セクター値が使用されます。
次の図は、FAT32パーティションを持つディスクのMBRを示しています。図の最後にある64バイトの強調表示された領域は、MBRのマスターパーティションテーブルを表しています。
開始CHSと終了CHSのエンコーディングは次のとおりです。
- オフセット00Hで、80(Hex)は、パーティションがアクティブパーティションであることを表します。
- オフセット01Hでは、01(16進数)は開始ヘッド番号= 1を表します。
- オフセット02Hと03Hの2バイトの組み合わせが開始セクターを形成します
次に指定されたエンコーディングによるパーティションのシリンダー番号:
したがって、パーティションの開始C-H-S = 0-0-1。
同様に、パーティションの終了のヘッド番号はFE(Hex)で、これは254であり、終了シリンダーのエンコードとパーティションのセクター番号は次の表に示されています。
したがって、パーティションの終了C-H-S = 701-254-63です。
オフセット04Hのバイト0B(16進数)は、パーティションのファイルシステムインジケーターバイトです。バイト0B(H)は、パーティションにFAT32ファイルシステムがあることを表します。次に、さまざまなファイルシステムとそのファイルシステムインジケータバイトの表を示します。
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
00H |
Unused/Empty Partition-Table Entry
(Remember this is not used to designate unused area on the disk, but marks an unused partition table entry) |
01H |
DOS 12-bit fat
(The type 01H is for partitions up to 15 MB) |
02H |
XENIX: root file system |
03H |
XENIX /usr file system (obsolete)
(XENIX is an old part of Unix V7. Microsoft XENIX Operating System was announced in August 1980. It was a portable and commercial version of the Unix operating system for the Intel 8086, Zilog Z8000, Motorola M68000 and Digital Equipment PDP-11. Microsoft introduced XENIX 3.0 in April 1983. SCO delivered its first XENIX for 8088/8086 in 1983.) |
04H |
16-bit FAT, DOS 3.0+ (Partition size < 32M)
(Some old DOS versions have had a bug which required this partition to be located in the 1st physical 32 MB of the hard disk ) |
05H |
DOS Extended (DOS 3.3+ Extended Volume)
Supports at most 8.4 GB disks. With this type 05H DOS/Windows will not use the extended BIOS call, even if it is available.) |
06H |
16-bit FAT, DOS Big, DOS 3.31+ (Partition Size >= 32M)
(Partitions are at most 2 GB for DOS and Windows 95/98 with maximum 65536 clusters with each cluster, at most 32 KB. Windows NT can create up to 4 GB FAT16 partition using 64 KB clusters.) |
07H |
OS/2 IFS (Installable File System) (HPFS is the best known example of this file system. OS/2 only looks at partitions with ID 7 for any installed IFS this is the reason that EXT2 IFS packet includes a special "Linux partition filter" device driver to fool OS/2 into thinking Linux partitions have ID 07). |
07H |
Advanced Unix |
07H |
Windows NT NTFS |
07H |
QNX2.x (pre-1988)
(For the actual file system of partition type 07H, one should inspect the partition boot record) |
08H |
OS/2 (v1.0 to v1.3 only) |
08H |
AIX boot partition
[AIX (Advanced Interactive Executive) is the IBM's version of Unix] |
08H |
SplitDrive |
08H |
DELL partition spanning multiple drives |
08H |
Commodore DOS |
08H |
QNX 1.x and 2.x
("qny" according to QNX partitions) |
09H |
AIX data partition |
09H |
Coherent file system
[Coherent was a UNIX like Operating System for the 286-386-486 systems, marketed by Mark Williams Company led by Bob Swartz. It was renowned for its good documentation. It was introduced in 1980 and died 1 Feb 1995. The last versions are V3.2 for 286-386-486 and V4.0 (May 1992, using protected mode) for 386-486 only. It sold for $99 a copy and it is rumored that 40000 copies have been sold. A Coherent partition has to be primary. ] |
09H |
QNX 1.x and 2.x ("qnz" according to QNX Partitions) |
0aH |
OS/2 Boot Manager
(OS/2 is the operating system designed by Microsoft and IBM to be the successor of MS-DOS) |
0aH |
Coherent swap partition |
0aH |
OPUS
(Open Parallel Unisys Server) |
0bH |
WIN95 OSR2 32-bit FAT
(OSR2 stands for Microsoft’s “OEM Service Release 2”. It is for Partitions up to 2047GB. Almost always, Windows 95/98/ME have the same File system which is FAT-32, within the same partitions limits) |
0cH |
LBA-mapped WIN95 OSR2 32-bit FAT
(It is using Logical Block Addressing – mode of Interrupt 13H extensions therefore we can say that this is the Extended INT 13H equivalent of 0BH. Almost always, Windows 95/98/ME have the same File system which is FAT-32, within the same partitions limits) |
0eH |
LBA-mapped WIN95: DOS 16-bit FAT or Logical Block Addressable VFAT
(It is same as 06H but using LBA-mode of INT 13H) |
0fH |
LBA-mapped WIN95: Extended partition or Logical Block Addressable VFAT
(It is same as 05H but using LBA-mode of INT 13H. Windows 95 uses 0EH and 0FH as the extended INT13H equivalents of 06H and 05H. Windows NT does not recognize the four Windows 95/98/ME types 0BH, 0CH, 0EH and 0FH) |
10H |
OPUS
(Octal Program Updating System) |
11H |
Hidden DOS 12-bit FAT or OS/2 Boot Manager hidden 12-bit FAT partition or DOS Seen From OS/2 (When OS/2 Boot manager boots a DOS partition, it will hide all primary DOS partitions except the one that is booted, by changing its ID and 01H, 04H, 06H and 07H becomes 11H, 14H, 16H and 17H, respectively. |
12H |
Compaq Configuration/diagnostics partition
(It is used by Compaq for their configuration utility partition. It is a FAT-compatible partition that boots into their utilities, and can be added to a LILO menu as if it were MS-DOS. ) |
14H |
(Hidden DOS 16-bit FAT or OS/2 Boot Manager Hidden DOS 16-bit FAT) <32M Partition
(Partition size is less than 32M. ID 14H is resulted from using Novell DOS 7.0 FDISK to delete Linux Native partition. ) |
15H |
Hidden DOS-Extended |
16H |
(Hidden DOS 16-bit FAT or OS/2 Boot Manager hidden 16-bit FAT ) >=32M Partition |
17H |
OS/2 Boot Manager hidden HPFS partition or Hidden IFS (e.g., HPFS) |
17H |
Hidden NTFS partition |
18H |
AST SmartSleep Partition or AST special Windows swap file ("Zero-Volt Suspend" partition)
[AST Research, Inc. (named from first initials of the founders, Albert Wong, Safi Qureshey and Thomas Yuen). Ascentia laptops have a “Zero – Volt Suspend Partition” or `SmartSleep Partition' of size 2MB+memory size.] |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
19H |
Willowtech Photon COS
(Code 19H is Claimed for Willowtech Photon COS by Willow Schlanger. |
1bH |
Hidden WIN95 OSR2 32-bit FAT or Hidden Windows 95 FAT32 Partition |
1cH |
LBA-mapped Hidden WIN95 OSR2 32-bit FAT
(It is hidden Windows95 FAT32 partition using LBA-mode of INT 13H Extensions) |
1eH |
LBA-mapped Hidden WIN95 16-bit FAT or Hidden LBA VFAT partition |
1FH |
LBA mapped Hidden WIN95 Extended or Hidden Extended LBA VFAT Partition |
20H |
OFSI
(Willowsoft Overture File System ) |
21H |
Officially listed as Reserved
(HP Volume Expansion, SpeedStor variant.) |
21H |
FSO2
(Claimed for FSO2 (Oxygen File System) by Dave Poirier) |
22H |
FSO2 Extended Partition
(Claimed for Oxygen Extended Partition by Dave Poirier) |
23H |
Officially listed as Reserved |
24H |
NEC DOS 3.x |
26H |
Officially listed as Reserved |
31H |
Officially listed as Reserved |
32H |
NOS (Network Operating System)
(32H is being used by the operating system NOS, being developed by Alien Internet Services in Melbourne Australia. The id 32H was chosen not only because of it was one of the few that are left available but also 32k is the size of the EEPROM the OS was originally targeted for. |
33H |
Officially listed as Reserved |
34H |
Officially listed as Reserved |
35H |
JFS on OS/2 or eCS
[35H is used by OS/2 Warp Server for e-Business, OS/2 Convenience Pack (aka version 4.5) and eComStation (eCS, an OEM version of OS/2 Convenience Pack) for the OS/2 implementation of JFS (IBM AIX Journaling File System)] |
36H |
Officially listed as Reserved |
38H |
THEOS v3.2 (2GB partition) |
39H |
Plan 9 partition
(Plan 9 is an operating system developed at Bell Labs for many architectures. Originally Plan 9 used an unallocated portion at the end of the disk. 3rd edition of Plan 9 uses partitions of type 39H, subdivided into sub partitions described in the Plan 9 partition table in the second sector of the partition.) |
39H |
THEOS v4 spanned partition |
3aH |
THEOS v4 (4GB partition) |
3bH |
THEOS v4 Extended partition
(THEOS is a multi-user multitasking Operating System for PCs founded by Timothy Williams in 1983.) |
3cH |
PartitionMagic recovery partition
(When a PowerQuest product like Partition Magic or Drive Image makes changes to the disk, it first changes the type flag to 3CH so that the Operating System will not try to modify it. At the end of the process, it is changed back to what it was at first. Therefore the only time you can see a 3CH type flag, is if the process was interrupted somehow such as power off, user reboot etc. If you change it back manually with a partition table editor or any disk editing program then most of the time everything is okay.) |
3dH |
Hidden NetWare |
40H |
Venix 80286
(It is a very old Unix-like operating system for PCs.) |
41H |
Linux/MINIX (sharing disk with DR-DOS)
(DR-DOS stands for Digital Research-Disk Operating System.) |
41H |
Personal RISC Boot |
41H |
PPC PReP (Power PC Reference Platform) Boot Partition |
42H |
Linux swap (sharing disk with DR-DOS) |
42H |
SFS (Secure File System)
(SFS is an encrypted file System driver for DOS on 386+ PCs, written by Peter Gutmann.) |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
42H |
Windows 2000 Dynamic Extended Partition Marker
(If a partition table entry of type 42H is present in the legacy partition table, then Windows 2000 ignores the legacy partition table and uses a proprietary partition table and a proprietary partitioning scheme (LDM or DDM). Pure dynamic disks (those not containing any hard-linked partitions) have only a single partition table entry, type 42H to define the entire disk. Dynamic disks store their volume configuration in a database located in a 1-MB private region at the end of each dynamic disk.) |
43H |
Linux native (sharing disk with DR-DOS) |
44H |
GoBack partition
(GoBack is a utility that records changes made to the disk, allowing you to view or go back to some earlier state. It takes over disk I/O like a Disk Manager would, and stores its logs in its own partition.) |
45H |
Boot-US boot manager
(Boot-US (Ulrich Straub) boot manager can be installed to MBR, a separate primary partition or diskette. When installed to a primary partition this partition gets the ID 45H. This partition does not contain a file system, it contains only the boot manager and occupies a single cylinder (below 8.4 GB). ) |
45H |
Priam |
45H |
EUMEL/Elan |
46H |
EUMEL/Elan |
47H |
EUMEL/Elan |
48H |
EUMEL/Elan
(EUMEL, later known as Ergos L3, are the multi-user multitasking systems developed by Jochen Liedtke at GMD, using Elan programming Language. It was used at German schools for the computer science education.) |
4aH |
AdaOS Aquila |
4aH |
ALFS/THIN lightweight filesystem for DOS |
4cH |
Oberon partition |
4dH |
QNX4.x |
4eH |
QNX4.x 2nd partition |
4fH |
QNX4.x 3rd partition
(QNX is a POSIX (Portable Operating System Interface for Unix)-certified, microkernel, distributed, fault-tolerant Operating System for the 386 and later, including support for the 386EX in embedded applications.) |
4fH |
Oberon boot/data partition |
50H |
OnTrack Disk Manager (older versions), Read-Only Partition (Disk Manager is a program of OnTrack to enable people to use IDE disks that are larger than 504MB under DOS. Linux kernel versions older than 1.3.14 do not coexist with DM.) |
50H |
Lynx RTOS (Real-Time Operating System)
(Lynx RTOS gives users the ability to place up to 14 partitions of 2 GB each on both SCSI and IDE drives, for a total of up to 28 GB of file system space.) |
50H |
Native Oberon |
51H |
OnTrack Disk Manager (DM6.0 Aux1), Read/Write Partition |
51H |
Novell |
52H |
CP/M |
52H |
Microport SysV/AT or Microport System V/386 |
53H |
OnTrack Disk Manager (DM6.0 Aux3), Write-Only partition |
54H |
OnTrack Disk Manager 6.0 Dynamic Drive Overlay |
55H |
EZ-Drive Partition
(EZ-Drive is another disk manager like program developed by MicroHouse in 1992. Now It is marketed by StorageSoft.) |
56H |
Golden Bow VFeature Partitioned Volume.
(This is also a Disk Manager like Utility software. This is a Non-Standard DOS Volume.) |
56H |
DM converted to EZ-BIOS |
57H |
DrivePro
(DrivePro was developed by MicroHouse in 1992. Now It is marketed by StorageSoft.) |
57H |
VNDI Partition |
5cH |
Priam EDisk Partitioned Volume
(Priam EDisk is Disk Manager type utility software. This is a Non-Standard DOS Volume.) |
61H |
SpeedStor
(Storage Dimensions SpeedStor Partitioned Volume. This is a Non-Standard DOS Volume. It is Disk Manager type utility software.) |
63H |
Unix System V/386, 386/ix, SCO, ISC Unix, UnixWare, Mach, MtXinu BSD 4.3 on Mach, GNU Hurd |
64H |
Novell NetWare 286, 2.xx |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
64H |
PC-ARMOUR protected partition
(64H is used by PC-ARMOUR disk protection by Dr. A. Solomon, intended to keep the disk inaccessible until the right password was given and then an INT 13H hook was loaded above top-of-memory that showed C-H-S = 0-0-2, with a copy of the real partition table, when 0-0-1 was requested). |
65H |
Novell NetWare 3.86, 3.xx or 4.xx
(Novell Netware 3.0 and later versions use one partition per drive. It allocates logical Volumes inside these partitions. The volumes can be split over several drives. The file system used is called Turbo FAT and it only very vaguely resembles the DOS FAT file system. Novell Netware used to be the main Network Operating System available. Netware 68 or S-Net (1983) was for a Motorola 68000, Netware 86 for an Intel 8086 or 8088. Netware 286 was for an Intel 80286 and existed in various versions that were later merged to Netware 2.2. Netware 386 was a rewrite in C for the Intel 386 which was later renamed to Netware 3.x (3.0, 3.1, 3.10, 3.11 and 3.12 etc) versions. Its successor Netware 4.xx had versions 4.00, 4.01, 4.02, 4.10 and 4.11. Then came Intranetware) |
66H |
Novell Netware SMS Partition
(SMS stands for Storage Management Services. It is not used now.) |
67H |
Novell |
68H |
Novell |
69H |
Novell Netware 5+ and Novell Netware NSS Partition
(NSS stands for Novell Storage Services.) |
70H |
DiskSecure Multi-Boot |
71H |
Officially listed as reserved |
73H |
Officially listed as reserved |
74H |
Officially listed as reserved |
74H |
Scramdisk partition
(Scramdisk is a disk encryption software. It supports container files, dedicated partitions type 74H and disks hidden in WAV audio files.) |
75H |
IBM PC/IX |
76H |
Officially listed as reserved |
77H |
M2FS/M2CS partition |
77H |
QNX 4.x |
78H |
XOSL File System
(XOSL Boot loader file system) |
78H |
QNY 4.x |
79H |
QNZ 4.x |
7EH |
F.I.X. |
7Fh |
Alt-OS-Development Partition Standard |
80H |
Old MINIX, MINIX v1.1 to v1.4a |
81H |
MINIX 1.4b and Later
(MINIX is a Unix-like operating system written by Andy Tanenbaum and students at the Vrije University, Amsterdam, around 1989-1991. It runs on PCs (8086 and up), Macintosh, Atari, Amiga, Sparc. |
81H |
Early Linux |
81H |
Mitac Advanced Disk Manager |
82H |
Prime |
82H |
Solaris x86
(Solaris creates a single partition with ID 82H and then uses Sun disk labels within the partition to split it further.) |
82H |
Linux Swap partition |
83H |
Linux Native Partition or Linux native file system or Linux Ext2fs
(Linux is a Unix-like operating system written by Linus Torvalds and many others on the internet since 1991. It runs on PCs 386 and later and a variety of other hardware. It is distributed under GPL (General Public License) . Various file system types like xiafs, ext2, ext3, reiserfs, etc. all use ID 83H.) |
84H |
OS/2 hidden C: drive or OS/2-renumbered type 04 partition.
(OS/2-renumbered type 04h partition is related to hiding DOS C: drive) |
84H |
Hibernation partition
(Reported for various laptop models, e.g., used on Dell Latitudes (with Dell BIOS) that use the MKS2D utility.) |
85H |
Linux Extended partition |
86H |
Old Linux RAID partition super block |
86H |
FAT16 volume/stripe set (Windows NT) or NTFS volume set
(It is Legacy Fault Tolerant FAT16 volume.) |
87H |
HPFS Fault-Tolerant mirrored partition or NTFS volume set or NTFS volume/stripe set
(Legacy Fault Tolerant NTFS volume. HPFS Fault-Tolerant mirrored partition. ) |
8aH |
Linux Kernel Partition
(It is used by AiR-BOOT) |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
8bH |
Legacy Fault Tolerant FAT32 volume |
8cH |
Legacy Fault Tolerant FAT32 volume using BIOS Extended INT 13H. |
8dH |
Free FDISK hidden Primary DOS FAT12 partition
(Free FDISK is the FDISK used by FreeDOS. It hides types 01H, 04H, 05H, 06H, 0BH, 0CH, 0EH and 0FH by adding decimal Number 140 (8CH).) |
8eH |
Linux Logical Volume Manager partition |
90H |
Free FDISK hidden Primary DOS FAT16 partition |
91H |
Free FDISK hidden DOS extended partition |
92H |
Free FDISK hidden Primary DOS large FAT16 partition |
93H |
Hidden Linux native partition |
93H |
Amoeba file system |
94H |
Amoeba bad block table
(Amoeba is a distributed operating system written by Andy Tanenbaum, together with Frans Kaashoek, Sape Mullender, Robert van Renesse and others since 1981. It runs on PCs (386 and up), Sun3, Sparc, 68030. It is free for universities for research and teaching purposes.) |
95H |
MIT EXOPC native partition |
97H |
Free FDISK hidden Primary DOS FAT32 partition |
98H |
Free FDISK hidden Primary DOS FAT32 partition (LBA) |
99H |
Mylex EISA SCSI or DCE376 logical drive
(It is used by the Mylex DCE376 EISA SCSI adaptor for partitions which are beyond the 1024 cylinder of a drive.) |
9aH |
Free FDISK hidden Primary DOS FAT16 partition (LBA) |
9bH |
Free FDISK hidden DOS extended partition (LBA) |
9fH |
BSD/OS |
a0H |
Phoenix NoteBIOS Power Management "Save-to-Disk" partition or Laptop hibernation partition
(It is Reported for various laptops like IBM Thinkpad, Phoenix NoteBIOS, Toshiba under names like zero-volt suspend partition, suspend-to-disk partition, save-to-disk partition, power-management partition, hibernation partition, usually at the start or end of the disk area.) |
a1H |
Laptop hibernation partition
(Used as "Save-to-Disk" partition on a NEC 6000H notebook. Types A0H and A1H are used on systems with Phoenix BIOS. The Phoenix PHDISK utility is used with these.) |
a1H |
HP Volume Expansion (SpeedStor variant) |
a3H |
Officially listed as Reserved |
a4H |
Officially listed as Reserved |
a5H |
BSD/386, 386BSD, NetBSD, FreeBSD
(386BSD is a Unix-like operating system, a port of 4.3BSD Net/2 to the PC done by Bill Jolitz around 1991.) |
a6H |
OpenBSD
(OpenBSD, led by Theo de Raadt, split off from NetBSD. It tries to emphasize on security.) |
a7H |
NEXTSTEP
(NEXTSTEP is Based on Mach 2.6 and features of Mach 3.0. It is a true object-oriented operating system and user environment. |
a8H |
Mac OS-X
(Apple's OS-X uses this type for its file system partition) |
a9H |
NetBSD |
aaH |
Olivetti Fat 12 1.44MB Service Partition
(It Contains a bare DOS 6.22 and a utility to exchange types 06H and AAH in the partition table.) |
abH |
Mac OS-X Boot partition
(Apple's OS-X (Darwin Intel) uses this type for its boot partition.) |
abH |
GO! partition |
aeH |
ShagOS file system |
afH |
ShagOS swap partition |
b0H |
BootStar Dummy
(The boot manager BootStar manages its own partition table, with up to 15 primary partitions. It fills unused entries in the MBR with BootStar Dummy values.) |
b1H |
Officially listed as Reserved |
b3H |
Officially listed as Reserved |
b4H |
Officially listed as Reserved |
b6H |
Officially listed as Reserved |
B6H |
Windows NT mirror set (master), FAT16 file system |
b7H |
BSDI file system (secondarily swap), BSDI BSD/386 file system |
B7H |
Windows NT mirror set (master), NTFS file system |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
b8H |
BSDI BSD/386 swap partition (secondarily file system)
(BSDI (Berkeley Software Design, Inc.) was founded by former CSRG (UCB Computer Systems Research Group) members. Their operating system, based on Net/2, was called BSD/386.) |
bbH |
Boot Wizard hidden |
beH |
Solaris 8 boot partition |
c0H |
DR-DOS/Novell DOS secured partition |
C0H |
CTOS |
c0H |
REAL/32 secure small partition |
c0H |
NTFT Partition |
c1H |
DR DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition |
c2H |
Reserved for DR-DOS 7+ |
c2H |
Hidden Linux |
c3H |
Hidden Linux swap |
c4H |
DR DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition |
c5H |
DRDOS/secured (Extended) |
c6H |
DRDOS/secured (FAT-16, >= 32M)
(DR-DOS 6.0 will add C0H to the partition type for a LOGIN.EXE - secured partition so that User can not avoid the password check by booting from an MS-DOS floppy. Otherwise it seems that the types C1H, C4H, C5H, C6H and D1H, D4H, D5H, D6H are used precisely like 1H, 4H, 5H, and 6H.) |
c6H |
Corrupted FAT16 volume/stripe set (Windows NT)
(NTFS will add C0H to the partition type for disabled parts of a Fault Tolerant set. Thus, one gets types C6H, C7H.) |
c7H |
Windows NT corrupted NTFS volume/stripe set |
c7H |
Syrinx boot |
c8H |
Officially listed as Reserved |
c9H |
Officially listed as Reserved |
caH |
Officially listed as Reserved |
cbH |
Reserved for DR-DOS secured FAT32 |
ccH |
Reserved for DR-DOS secured FAT32 (LBA) |
cdH |
CTOS Memdump |
ceH |
Reserved for DR-DOS secured FAT16 (LBA) |
d0H |
REAL/32 secure big partition
(REAL/32 is a continuation of DR Multi-user DOS.) |
d1H |
Old Multi-user DOS secured FAT12 |
d4H |
Old Multi-user DOS secured FAT16 <32M |
d5H |
Old Multi-user DOS secured extended partition |
d6H |
Old Multi-user DOS secured FAT16 >=32M |
d8H |
CP/M-86 |
daH |
Non-FS Data |
dbH |
Digital Research CP/M, Concurrent CP/M, Concurrent DOS |
dbH |
CTOS (Convergent Technologies OS -Unisys) |
dbH |
KDG Telemetry SCPU boot
(KDG Telemetry uses ID DBH to store a protected-mode binary image of the code to be run on a 'x86-based SCPU (Supervisory CPU) module from the DT800 range.) |
ddH |
Hidden CTOS Memdump |
deH |
Dell PowerEdge Server utilities (FAT) |
dfH |
DG/UX virtual disk manager partition |
dfH |
BootIt EMBRM
(The boot manager BootIt manages its own partition table, with up to 255 primary partitions.) |
e0H |
Reserved by ST Microelectronics for a file system called ST AVFS. |
e1H |
DOS access or SpeedStor 12-bit FAT extended partition
(It is a SSTOR partition on cylinders more than 1023.) |
E2H |
DOS Read-Only |
e3H |
Storage Dimensions |
e4H |
SpeedStor 16-bit FAT extended partition < 1024 cylinders |
e5H |
Officially listed as Reserved |
e5H |
Tandy DOS with logical sectored FAT |
e6H |
Officially listed as Reserved |
ebH |
BeOS BFS (BFS1)
(BeOS is an operating system that runs on Power PCs) |
edH |
Reserved for Matthias Paul’s Sprytix |
eeH |
Indication that this legacy MBR is followed by an EFI Header |
efH |
Partition that contains an EFI file system |
f0H |
Linux/PA-RISC boot loader |
f1H |
Storage Dimensions |
f2H |
DOS 3.3+ secondary partition |
f2H |
Unisys DOS with logical sectored FAT |
f3H |
Officially listed as Reserved |
f4H |
SpeedStor large partition |
F4H |
Prologue single-volume partition |
File system Indicator Byte in Hexadecimal |
Partition/ File system Description |
f5H |
Prologue multi-volume partition
(The type F4H partition contains one volume, and is not used anymore. The type F5H partition contains 1 to 10 volumes called MD0 to MD9. It supports one or more systems. Each volume can have as file system the NGF file system or TwinFS file system. ) |
f6H |
Officially listed as Reserved |
F6H |
Storage Dimensions SpeedStor |
faH |
MandrakeSoft's Bochs x86 emulator |
fbH |
VMware File System partition |
fcH |
VMware Swap partition
(VMware offers virtual machines in which one can run Linux, Windows, FreeBSD.) |
fdH |
Linux raid partition with auto detect using persistent super block |
feH |
SpeedStor more than 1024 cylinders |
feH |
LANstep |
feH |
IBM PS/2 IML (Initial Microcode Load) partition
(It is located at the end of the disk.) |
feH |
Windows NT Disk Administrator hidden partition
(Windows NT Disk Administrator marks hidden partitions, i.e. present but not to be accessed, as type FEH.) |
feH |
Linux Logical Volume Manager partition (old) |
ffH |
XENIX Bad Block Table |
DOSブートレコード(DBR)/ DOSブートセクター
パーティションテーブルに続いて、DOSブートレコード(DBR)またはDOSブートセクターと呼ばれることもある、ハードドライブで2番目に重要な情報です。ディスクリカバリ用のほとんどの商用アプリケーションは、破壊されたブートレコードを再生することができます
ハードディスクの最初のパーティションのDOSブートレコード(DBR)は、通常、絶対セクター63(ディスクドライブの64番目のセクター)にあります。CHS形式では、C–H–S = 0–1–1と言うことができます。ほとんどのドライブ。
ただし、この場所は、ドライブのSPT(トラックあたりのセクター数)によって異なる場合があります。たとえば、SPTが31しかない古い245MBドライブでは、ブートレコードは32番目のセクター(絶対セクター31)にありました。
DBRは、DOSのFORMATコマンドによって作成されます。このプログラムは、DOSフロッピーディスクから(または、OSの制限に従って、別のボリュームから直接)実行して、FDISKコマンドを使用してパーティション分割を行った後にDBRを作成できます。
DBRが存在するセクターは、DOSの特定のパーティションの論理セクター1になります。 DOSで使用されるセクター番号は、DBRが配置されている物理セクターから始まります。
各DOSパーティションの最初の論理セクターには、DOSブートレコード(DBR)またはDOSブートセクターが含まれます。 DBRの役割は、オペレーティングシステムをハードディスクドライブからコンピュータのメインメモリにロードし、ロードされたプログラムをシステムに制御させることです。
これを行うために、DBRには、マスターブートレコード(MBR)実行可能プログラムによって実行される小さなプログラムが含まれています。すべてのDOSパーティションには、マシンを起動する、つまりオペレーティングシステムをロードするためのプログラムコードが含まれていますが、そのパーティションのみが、パーティションテーブルエントリでアクティブパーティションとして指定されているマスターブートレコードによって制御されます。
DBRのブートプログラムは、パーティションのルートディレクトリで2つのプログラムファイルIBMBIO.COMまたはIO.SYSとIBMDOS.COMまたはMSDOS.SYSを探します。 IBMBIO.COMとIBMDOS.COMは、PC-DOSシステムまたは元のIBMシステム上の2つの隠しシステムプログラムファイルです。一方、IO.SYSとMSDOS.SYSは、IBM互換システムで提供されるMS-DOSオペレーティングシステム上の2つの隠しシステムプログラムファイルです。
その後、IO.SYS(またはIBMBIO.COM)プログラムは、MSDOS.SYS(またはIBMDOS.COM)プログラムとCOMMAND.COMプログラムをロードします。この完全なプロセスは、コンピューターの「起動」と呼ばれます。これらのシステムファイルがディレクトリで利用できない場合、このMBRプログラムは次のようなエラーメッセージを表示します。
“Invalid system disk or Disk I/O error,
Replace the disk, and then press any key…”
画面上で、ユーザーが上記のプログラムを含むブータブルディスクをフロッピードライブに挿入し、キーを押すのを待ちます。
フロッピーにはパーティションがないため、絶対セクター0にMBRまたはマスターパーティションテーブルがなく、代わりに最初のセクターにDBRが含まれています。
次の表は、FAT12ファイルシステムでフォーマットした後の3½インチ、1.44MBフロッピーディスクのレイアウトの簡単なマップを示しています。ブートレコード、FATの両方のコピー、ルートディレクトリ、およびデータ領域の先頭がどこにあるかを示します。
Logical Map of 3½ Inches, 1.44 MB floppy disk, Formatted with the FAT12 File System and having 18 Sectors Per Track, 80 Tracks, 2 Sides and 512 bytes per Sector (using 1 Sector per Cluster). |
Absolute Sectors |
Contents |
0 |
Boot Record |
1 – 9 |
FAT 1 |
10 – 18 |
FAT 2 |
19 – 32 |
Root Directory |
33 – 2879 |
Data Area |
データエリア内に含まれているように見えるファイルを使用して、サブディレクトリを作成することもできます。実際には、サブディレクトリは、このディレクトリ内に含まれているように見えるすべてのファイルと、各ファイルの開始クラスタの場所、日付、時刻、ファイルサイズなど、各ファイルに関連するすべてのデータを一覧表示する特別なファイルにすぎません。
DBRには、ディスクジオメトリに関するいくつかの重要な情報も含まれています。この情報は、次のように、すべてのパーティションの最初のセクターにあります。
- ジャンプコード+ NOP
- OEMの名前とバージョン
- セクターあたりのバイト数
- クラスターあたりのセクター数
- 予約セクター
- FATのコピー数
- 最大ルートディレクトリエントリ(ただし、FAT32では使用できません)
- 32MB未満のパーティション内のセクター数(したがって、FAT32では使用できません)
- メディア記述子(ハードディスクの場合はF8h)
- FATごとのセクター(古いFATシステムでは、FAT32では使用できません)
- トラックあたりのセクター数
- 頭の数
- パーティション内の非表示セクターの数
- パーティション内のセクター数
- FATあたりのセクター数
- FAT情報記述子フラグ
- FAT32ドライブのバージョン
- ルートディレクトリの開始のクラスター番号
- ファイルシステム情報セクターのセクター番号
- バックアップブートセクターのセクター番号
- 予約済み
- パーティションの論理ドライブ番号
- 拡張署名(29H)
- パーティションのシリアル番号
- パーティションのボリューム名
- FAT名
- 実行可能コード
- 実行可能マーカーまたはマジックナンバー(AAH 55H)
DBRの最初の3バイトには、情報をスキップして拡張を可能にするJMP命令が含まれています。これは、MBRがこのセクターをメモリにロードし、実行を転送するためです。通常、これらの3バイトは、次のような形式の16進数です。 E9 XX XX(16進数) また EB XX 90(16進数).
最初のJMP命令に続いて、OEM IDは、OEM識別のためにMicrosoftによって予約されている8ビットフィールドです。 OEM IDは、ブートレコードを作成したプログラムを記述します。これはしばしばです 「MSWIN4.0」 Windows 95/98 / MEの場合、 「IBM20.0」 OS / 2および 「MSDOS5.0」 MS-DOS4.0以降の場合。
ブートセクタの3番目の主要コンポーネントは、BIOSパラメータブロック(BPB)です。ディスクパラメータブロックは、DOSにとって非常に重要なデータ領域です。 DOSが以下を見つけるのに役立ちます。
- セクターあたりのバイト数
- クラスターあたりのセクター数
- 予約セクター
- FATの数
- ルートディレクトリエントリの数
FAT32 DOS Boot Record Format |
Offset |
Description |
Size |
00H |
Jump Code + NOP |
3 Bytes |
03H |
OEM Name and Version |
8 Bytes |
0BH |
Bytes Per Sector |
2 Bytes |
0DH |
Sectors Per Cluster |
1 Byte |
0EH |
Reserved Sectors |
2 Bytes |
10H |
Number of Copies of FAT |
1 Byte |
11H |
Maximum Root Directory Entries (but Not Available for FAT32) |
2 Bytes |
13H |
Number of Sectors in Partition Smaller than 32MB (Therefore Not Available for FAT32) |
2 Bytes |
15H |
Media Descriptor (F8H for Hard Disks) |
1 Byte |
16H |
Sectors Per FAT (In Older FAT Systems and Not Available for FAT32) |
2 Bytes |
18H |
Sectors Per Track |
2 Bytes |
1AH |
Number of Heads |
2 Bytes |
1CH |
Number of Hidden Sectors in Partition |
4 Bytes |
20H |
Number of Sectors in Partition |
4 Bytes |
24H |
Number of Sectors Per FAT |
4 Bytes |
28H |
Flags (Bits 0-4 Indicate Active FAT Copy) (Bit 7 Indicates whether FAT Mirroring is Enabled or Disabled <Clear is Enabled>) (If FAT Mirroring is Disabled, the FAT Information is only written to the copy indicated by bits 0-4) |
2 Bytes |
2AH |
Version of FAT32 Drive (High Byte = Major Version, Low Byte = Minor Version) |
2 Bytes |
2CH |
Cluster Number of the Start of the Root Directory |
4 Bytes |
30H |
Sector Number of the File System Information Sector (Referenced from the Start of the Partition) |
2 Bytes |
32H |
Sector Number of the Backup Boot Sector (Referenced from the Start of the Partition) |
2 Bytes |
34H |
Reserved |
12 Bytes |
40H |
Logical Drive Number of Partition |
1 Byte |
41H |
Unused (Could be High Byte of Previous Entry) |
1 Byte |
42H |
Extended Signature (29H) |
1 Byte |
43H |
Serial Number or 32 – Bit Binary ID of Partition
(Binary ID of 32 Bits provided by the OS itself) |
4 Bytes |
47H |
Volume Name of Partition |
11 Bytes |
52H |
FAT Name (FAT32 in this case) |
8 Bytes |
5AH |
Executable Code |
420 Bytes |
1FEH |
Executable Marker or Magic Number (AAH 55H) |
2 Bytes |
- 論理ボリュームの合計セクター(小さい、論理ボリュームのサイズが32 MB以下の場合)
- メディア記述子バイト
- FAあたりのセクター数
この情報は、FATの場所やその他の重要な値を見つけるのに役立ちます。ここに間違った情報を入力したり、これらの値を破損したりすると、ハードディスクドライブからの起動が不可能になります。ディスクパラメータブロックに間違った情報があると、ハードディスクドライブおよびフロッピーディスクドライブからの起動が妨げられることがあります。
セクターあたりのバイト数は、ほとんどの場合512です。 そうでない場合でも、2の整数乗である必要があります(例:64、128、256)。
クラスターあたりのセクター数は、クラスターのサイズによって異なります。 (前のこの章で説明した「クラスター」セクションを参照してください)。 FATのコピー数はほとんどの場合2です。
ルートディレクトリの数: ファイルシステムとボリュームサイズによって異なります。 (前に示したファイルシステムの制限と次に示したルートディレクトリの説明を参照してください)。
セクターの総数:非表示のセクターを除きます。 BPBで0の場合、拡張ブートレコード情報のフィールドが使用され、その逆も同様です。オフセット26Hの署名バイトを調べることにより、拡張情報(DOS 4.0以降)が利用可能かどうかを判断できることに注意してください。
論理DOSドライブのブートセクターの前のセクターは、「非表示」セクターと見なされます。 DOSは隠しセクターを解釈しません。通常のフロッピードライブには、0個の非表示セクターがあります。ハードドライブのパーティションには、ドライブ上の位置を反映した番号が付けられます。実際に使用されるのは最初のセクターのみですが、通常、最初のシリンダーの最初のヘッド全体がパーティションテーブル用に予約されていることに注意してください。
メディア記述子:メディアまたはディスクタイプを示すために使用されます。通常の値は、拡張DOSパーティションの場合は0、ハードドライブの場合はF8Hです。 Media Descriptor Bytesの値は、次の表に示されています。
Media Descriptors |
Type |
Capacity |
Size and type |
F0H |
2.88 MB |
3.5", 2-Sided, 36 Sectors per Track |
F0H |
1.44 MB |
3.5", 2-Sided, 18 Sectors per Track |
F9H |
720 KB |
3.5", 2-Sided, 9 Sectors per Track |
F9H |
1.2 MB |
5.25", 2-Sided, 15 Sectors per Track |
FDH |
360 KB |
5.25", 2-Sided, 9 Sectors per Track |
FFH |
320 KB |
5.25", 2-Sided, 8 Sectors per Track |
FCH |
180 KB |
5.25", 1-Sided, 9 Sectors per Track |
FEH |
160 KB |
5.25", 1-Sided, 8 Sectors per Track |
F8H |
--------- |
Fixed Disk |
FATのセクター数:計算する必要があります。 FATのサイズを計算する方法は、この章のFATの説明に記載されています。
FAT32ファイルシステムのDBRは、次の図に示されています。
トラックあたりのセクター(またはヘッドあたりのセクター):ヘッドあたりのセクターは、1つのヘッドの下にグループ化されたセクターの数です。同様に、シリンダーあたりのヘッド数は、ヘッドあたりのシリンダー数を反映しています。このパーティションがCHSパーティションの場合、これらの値はBIOSによって返される値と同じである必要があります。それらが同じでない場合は、ディスクが正しく構成されておらず、パーティションが使用できない可能性があることを考慮する必要があります。
非表示のセクター:すでに説明したように、これは、ボリュームの開始前の、ブートセクター自体の前の物理ディスク上のセクターの数です。ルートディレクトリとデータ領域への絶対オフセットを計算するために、ブートシーケンス中に使用されます。これは、このパーティションの先頭とパーティションテーブル自体の間のセクター数と考えてください。
このフィールドは、パーティションテーブルの「パーティションに先行するセクターの数」と同じである必要があります。セカンダリパーティションが存在する可能性があるため、必ずしも最初のセクターの物理LBAアドレスであるとは限らないことに注意してください。
非表示セクターがパーティションテーブルと同じでない場合は、ブートセクターが破損していて、パーティションが使用できないと見なすことができます。また、古いバージョンのDOSでは、通常、上位の単語にゴミが含まれていることにも注意してください。
ブートセクタが破損していると思われる場合は、上記のフィールドのいくつかをチェックして、そこにリストされている値に意味があるかどうかを確認できます。
例えば, ほとんどの場合、セクターあたりのバイト数は512になります。また、ディスクをフォーマットしたオペレーティングシステムに適した、ブートセクターの実行可能コードセクションにテキスト文字列が表示されることもあります。
たとえば、MS-DOSでフォーマットされたFATボリュームの一般的なテキスト文字列は次のとおりです。 「無効なシステムディスク」、「ディスクI / Oエラー」、「ディスクを交換してから、任意のキーを押してください」、「非システムディスクまたはディスクエラー」、「準備ができたら、交換して任意のキーを押してください。」 Windows NTでフォーマットされたFATボリュームのテキスト文字列には、「BOOT:NTLDRが見つかりません(または見つかりませんでした)」、「ディスクの読み取り中にI / Oエラーが発生しました」、「別のディスクを挿入してください」などがあります。
ただし、このリストをすべて包括的であると見なしてはならないことに注意してください。ブートセクタに他のメッセージが表示された場合、これは必ずしもブートセクタに問題があることを示しているわけではありません。 MS-DOSとWindowsNTのバージョンが異なると、ブートセクタのメッセージ文字列がわずかに異なる場合があります。
一方、テキストがまったく見つからない場合、またはテキストがMS-DOSまたはWindows NTに明らかに関連していない場合は、ブートセクタがウイルスに感染しているか、他の形式のテキストである可能性を考慮する必要があります。データの破損が発生した可能性があります。
ウイルスに感染したブートセクタから回復するには、通常、市販のアンチウイルスプログラムを使用するのが最善です。多くのウイルスやトロイの木馬は、ブートセクタにデータを書き込むだけではなく、ウイルスやトロイの木馬を完全に排除できない場合があり、場合によっては害を及ぼす可能性があるため、ブートセクタを手動で修復することはお勧めしません。ただし、この本のプログラミングセクションでDBRを扱います。
他の理由でブートセクタが損傷したと思われる場合は、上記のフィールドを手動で変更することにより、ドライブを再フォーマットせずにブートセクタの損傷から回復できる可能性があります。この本では、回復のプログラミング技術におけるプログラミングでこのような問題を克服しようとします。
ファイルアロケーションテーブル(FAT)
次のDBRは、ファイルアロケーションテーブルです。ファイルアロケーションテーブル(FAT)は、MicrosoftスタンドアロンDiskBasicのフロッピーディスクにデータを保存するために1977年に導入されました。 FATは、拡大するニーズに対応するために数回変更されています。これは、リムーバブルメディアと固定メディアの両方でデータを管理するための高速で柔軟なシステムの要件を満たすために開発されました。
1996年、FAT32はWindows 95OSR2で導入されました。前に説明したように、Windows 98 / MEはハードドライブのサイズのFAT32をサポートします。現在、これらのオペレーティングシステムでは、FAT32ファイルシステムが一般的に使用されています。
最初のDOSFATファイルシステム(DOS 1.x)は、フロッピーディスクに現在も使用されている12ビットFATシステムを使用していました。 DOS 2.xは、ハードディスクのサポートを追加しました。ボリュームが大きいため、16ビットFATエントリにシフトしました。
1987年頃、DOS 4.0は、ファイルシステムの制限についてすでに説明したように、32ビットパラメータを使用するように低レベルのセクター処理を変更して、大容量ディスクのサポートの問題を克服しました。
FATは、ディスクドライブの表面全体のマップを保持し、どの領域が空いているか、どの領域が悪いか、どの領域がどのファイルによって占められているかなどを示します。ディスク表面に保存されているデータにアクセスする場合、DOS FATを参照して、データが含まれているハードディスク表面の領域を見つけます。
使用するFATの種類は、ハードディスクドライブのパーティション分割時にFDISKプログラムによって決定されます。しかし、実際のFATはDOSのFORMATプログラムによって書かれています。
FATは、ディスクサーフェス上のすべてのセクターを追跡するのではなく、「クラスター」または「アロケーションユニット」と呼ばれるセクターのグループでディスク領域を管理します(同じ章の前に説明したクラスターを参照)。
クラスターは、DOSがファイルに割り当てるハードディスクドライブスペースの最小単位であり、ドライブサイズに応じて1つ以上のセクターで構成されます。クラスタサイズは、ハードディスクドライブの高レベルのフォーマット中にDOSFORMATプログラムによって決定および修正されます。 (前述の「クラスターのサイズ」の説明を参照してください)
実際、FATはボリューム全体のクラスターのインデックスです。 FATには、クラスターごとに1つのエントリがあります。 FATの最初の2つのエントリには、FATに関する情報が含まれています。 FATの3番目以降のエントリは、ファイルで使用できる最初のクラスターから始めて、ディスクスペースのクラスターに割り当てられます。
FATは非常に重要なアイテムであるため、DOSはFATの2つのコピー(プライマリFATまたはFAT1とセカンダリFATまたはFAT2)を保持します(通常は2つのコピーがありますが、多くの新しいオペレーティングシステムは2つ以上のFATを作成します)。
各FATはディスク上の連続したセクターを占有し、1番目のFATの直後の2番目のFATは、DOSに2番目のFATを使用させて問題を修正しません。代わりに、1番目のFATが更新されると、DOSはそれを2番目のFATにコピーし、2番目のFATを破損します。まあ、その過程で。
この更新は、DOSが1番目と2番目のFATが一致しないことを検出するたびに実行されます。したがって、1番目のFATが破損した場合は、ディスクエディタソフトウェアを使用して1番目のFATと2番目のFATを比較することにより、すぐに修復を行う必要があります。これは、DOSが破損したFATを2番目のFATにコピーする前に実行する必要があります。
FAT32の導入により、FATエントリとセクター番号の両方が32ビットになりました。つまり、4,294,967,296個の異なる32ビット値にセクターあたり512バイトを掛けると、FAT32で可能な最大ディスクサイズとして2テラバイト(2,199,023,255,552バイト)になります。
FAT 32の各ファイルのディレクトリエントリのサイズは4バイトで、FAT16で必要な2バイトではなく、ファイルの開始クラスターの値が含まれます。値が大きいほど、可能なクラスターの数が多くなります。
従来、各ディレクトリエントリは32バイトのレコードであり、これは同じままです。ディレクトリレコードの中央には、Microsoftが将来の使用のために予約した10バイト(バイト12〜21)があります。これらのバイトのうちの2つは、FAT32で開始クラスターを指定するために必要な追加のバイトに対応するために使用されます。
すでに説明したように、FATには12ビット、16ビット、および32ビットのバージョンがあります。 32ビットFATを使用すると、はるかに効率的なストレージが可能になり、最大30%効率が向上し、より大きなハードドライブを使用できるようになります。
オペレーティングシステムのファイルシステムがプログラムによって呼び出されてファイルの内容が検索されると、そのファイルのディレクトリエントリの最初のクラスタ値が読み取られ、FATチェーンの検索に使用されます。 FATチェーンは、ファイルに属するデータを含むクラスターのリストです。
FAT32 Drive Layout |
Offset |
Description |
Start of Partition |
Boot Sector |
Start of Partition + Number of Reserved Sectors |
FAT Tables |
Start of Partition + Number of Reserved Sector + (Number of Sectors Per FAT * 2)
[Assuming that FAT Mirroring is Enabled, this is almost always true] |
Root Directory |
Start of Partition + Number of Reserved Sectors + (Number of Sectors Per FAT * 2) + Number of Sectors in root directory |
Data Area |
FATエントリには、次のことを示す値を含めることができます。
- 特定のファイルのFATチェーン内の次のクラスター
- 無料のクラスター、つまり、どのファイルでも使用されていないクラスター
- 不良セクタの情報。つまり、物理的に損傷しているため使用してはならない1つ以上のセクタを含むクラスタ。
- ファイルの最後のクラスター
Entries of FAT Table |
Number (Hex.) |
Description |
0 |
Free cluster |
???? |
Cluster in use, next cluster in chain |
FF0-FF6 / FFF0-FFF6 |
Cluster is reserved |
FF7 /FFF7 |
Cluster contains bad sectors |
FF8-FFF / FFF8-FFFF |
End of file |
各FATエントリはクラスタアドレスを表し、ファイルの次のクラスタアドレス(FATエントリ)へのポインタが含まれています。ファイルの最後のFATエントリには、ポインタではなく最終的なクラスタ値が含まれています。 FATの最初の2つのエントリには、FATに関する情報が含まれています。 FATのこれらのバイトには、メディア記述子バイトが含まれています。このバイトは、このFATエントリが含まれるディスクメディアのタイプを見つけるために使用できます。
FATの3番目以降のエントリは、ファイルで使用できる最初のクラスターから始めて、ディスクスペースのクラスターに割り当てられます。 FATエントリは、伝達したい情報に基づいて、上記の表に示されている値のいずれかを持つことができます。
12ビットFATの000Hまたは16ビットFATの0000Hは、このFATロケーションに対応するクラスターが未割り当てまたは空であることを示します。 12ビットFATのFF8HからFFFH、または16ビットFATのFFF8HからFFFFHの値は、このクラスターがファイルのクラスターのチェーンの最後のクラスターであることを示します。
12のFF0HからFF7Hまでの値–ビットFATは予約済みクラスターを示します。 12ビットFATのFF7Hまたは16ビットFATのFFF7Hは、FATの場所に対応するクラスターが不良クラスターであることを示します。つまり、これは基本的に不良セクターを含むクラスターです。このクラスターはデータストレージには使用されません。
FATテーブル内の他の値は、ファイルアロケーションチェーン内の次のクラスターへのポインターです。
Windowsが不適切を検出する方法–シャットダウン
これは非常に一般的なことであり、Windowsを使用しているときに、電源障害、ソフトウェアの破損、偶発的なシャットダウンなどの理由でコンピュータが不適切にシャットダウンされた場合に、さらに再起動すると、何度も気づいたことを願っています。コンピュータの場合、起動プロセス中に「不適切–シャットダウン」のメッセージが画面に表示され、オペレーティングシステムがディスクをスキャンしてエラーを検出します。
次の2つの図は、32ビットFATの先頭の256バイトを示していますが、これについて説明するために必要なのは最初の8バイトだけです。
実際、Windowsオペレーティングシステムがメモリにロードされたとき、つまりWindowsが起動したとき、FATの8番目のバイト(またはオフセット7H)は0FHまたはFFHから07HまたはF7Hになります。
Microsoftは、実行中のオペレーティングシステムを含むボリュームにのみバイト0FHを使用し、アクセスしている他のボリュームにはバイトFFHを使用します。
Windowsが起動を開始すると、8番目のバイトが07HまたはF7Hに変更され、Windowsが適切にシャットダウンされた場合にのみ0FHまたはFFHに戻されます。
電源障害が発生した場合、コンピュータの電源スイッチが誤ってオフになった場合、またはソフトウェアの問題によりシステムが手動で再起動された場合、このバイトは07HまたはF7Hのままになり、次回のWindowsオペレーティングシステムに通知されます。ある種の不適切なシャットダウンがあったことを起動し、Windowsはディスクスキャンプログラム(Scandisk)を使用してディスクのエラーを確認します。
ルートディレクトリ
最後のFATに続くのは、ルートディレクトリです。ルートディレクトリは、ハードディスクドライブに保存されている情報の目次のようなものです。ルートディレクトリの場所は、FATの後に配置されるため、ブートレコードの値を合計することで簡単に確立できます。
ディレクトリ領域には、ファイル名、ファイル作成の日時、ファイル属性、ファイルサイズ、および特定のファイルの開始クラスターに関する情報が保持されます。ファイルに関するこの情報を説明する各ディレクトリエントリは、32バイトの情報です。
ルートディレクトリには、ルートディレクトリから分岐するファイルとディレクトリに関する情報が含まれています。それ以降のすべてのディレクトリは、ルートディレクトリと同じ形式でファイルとして保存されます。以前は、ルートディレクトリのサイズが固定され、ディスク上の固定位置に配置されていましたが、ファイルとして扱われるようになったため、必要に応じて自由に拡張できるようになりました。
ルートディレクトリに保存できるファイルの数は、使用されているFATの種類によって異なります。たとえば、12ビットFATを備えた3½インチ1.44Mbフロッピーディスクの場合、224エントリに制限されます。225番目のファイルを保存しようとすると、DOSは「ファイル作成エラー」を表示します。 16ビットFATを使用する場合、ルートディレクトリに合計512のエントリを含めることができます。フロッピーまたはハードディスク上の各メインディレクトリは、ルートディレクトリエントリとしても機能します。
次の表に、さまざまなメディアとFATのルートエントリの制限を示します。
Media and File System Description |
Maximum Root Directory Entries |
Single-sided 5¼ Inch 180K FDD |
64 |
Double-sided 5¼ Inch 320K FDD |
64 |
Double-sided 5¼ Inch 360K FDD |
112 |
Double-sided 3½ Inch 720K FDD |
112 |
Double-sided 5¼ Inch 1.2-megabyte FDD |
224 |
Double-sided 3½ Inch 1.44-megabyte FDD |
224 |
Double-sided 3½ Inch 1.68-megabyte DMF format disks (This is why Microsoft created CAB Files!) |
16 |
Double-sided 3½ Inch 2.88-megabyte FDD |
240 |
Hard Drives (FAT12 & FAT16) |
512 |
Hard Drives with FAT 32 (As it treats the route directory as a file) |
65,536 |
これは、16ビットFATでは、ハードディスクドライブに512ファイルしか保存できないという意味ではありません。サブディレクトリを使用して、ドライブのサイズによってのみ制限される任意の数のファイルを保存できます.
フロッピーのボリュームラベルは通常ブートセクター内に保存されますが、ハードドライブのボリュームラベルはルートディレクトリエントリとして保存され、ブートセクターで予約されているスペースはスペースで空白のままになります。 DOSのDIRコマンドは、存在する場合はディレクトリにあるものを返し、存在しない場合はブートセクターにあるものを返します。
ディレクトリエントリには、クラスタチェーンへのエントリとファイル名が含まれています。したがって、最も重要なディレクトリエントリはルートディレクトリです。これは、すべてのサブディレクトリを指すクラスタインデックスが含まれているためです。
すべてのディレクトリには、「。」という2つのエントリが含まれています。現在のディレクトリ(このサブディレクトリ)の場合は「..」、親ディレクトリ(このサブディレクトリの親ディレクトリ)の場合は「..」。クラスタにディレクトリが含まれている場合、これらのエントリは常にクラスタの先頭に配置されるため、これらのエントリを簡単に追跡できます。
次の表は、ルートディレクトリのディレクトリエントリの形式を示しています。次の表は、ルートディレクトリ内のファイルの32バイトのディレクトリエントリをスライスして、そのファイルに関するさまざまな情報を格納する方法を示しています。
Offset |
Size |
Description |
00H |
8 Bytes |
Filename
(Also see the next table for the special meaning of first character of file name) |
08H |
3 Bytes |
Extension |
0BH |
1 Byte |
File attributes(See The Table Of File Attributes) |
0CH |
10 Bytes |
Reserved |
16H |
2 Bytes |
Time Created or Last Updated (See Date–Time Format Table) |
18H |
2 Bytes |
Date Created or Last Updated (See Date–Time Format Table) |
1AH |
2 Bytes |
Starting or First cluster of file
(The value 0000H is used in Parent Directory ('..') entries to indicate that the Parent Directory is the Root Directory) |
1CH |
4 Bytes |
File size in Bytes. |
ファイル名には大文字の名前が含まれ、ファイル名のサイズが8文字よりも小さい場合、スペースはASCII番号32のスペース文字で埋められます。拡張子フィールドには、大文字のファイルの拡張子が含まれます。
ファイル名が8文字より長い場合、Windowsは長いファイル名から短いファイル名を6つの大文字に切り捨て、ベースファイル名の末尾に「〜1」を追加することで作成します。
同じ最初の6文字の別のファイル名がすでに存在する場合は、番号が増加します。拡張子は同じままで、以前のバージョンのWindowsおよびDOSで不正だった文字はすべてアンダースコアに置き換えられます。
長いファイル名は、0FHに設定された属性バイトでマークされた特別にフォーマットされた32バイトの長いファイル名(LFN)ディレクトリエントリに保存されます。特定のファイルまたはサブディレクトリについて、1つ以上の長いファイル名のディレクトリエントリのグループが、ディスク上の単一の8.3ディレクトリエントリの直前にあります。
各LFNディレクトリエントリには、最大13文字の長いファイル名と、長いファイル名全体を構成するために必要な数のオペレーティングシステム文字列が含まれます。
これが原因であり、ファイル名が長いと、ファイルシステムで可能なルートディレクトリエントリの最大数が減少します。 Windowsが長いファイル名をサポートする方法については、この章の後半で詳しく説明します。
ファイル名の最初のバイトには、ファイルに関する重要な情報も含まれている場合があります。このバイトによって提供される情報は、次の表に示されているものの1つである可能性があります。
First Character of File Name |
Value |
Meaning |
00H |
Indicates that this directory entry is unused. |
05H |
Indicates that 1st character of filename is character E5H But actually the file has not been deleted. (See the Meaning of E5H) |
E5H |
The file has been Erased and this directory entry is a deleted file’s directory entry. The data area previously occupied by that file is now free for allocation for another new file. |
2EH |
This is a Sub-directory. The cluster number field of this entry will contain the cluster number of the directory. |
2EH 2EH |
Two 2EH in a directory entry indicate the parent directory entry of a Sub–Directory. The cluster number of this entry will contain the cluster number of the parent directory of this directory. The cluster number will be zero 0000H if the parent directory is root directory. |
属性は、8ビットのバイナリコード化フィールドです。次の表は、特定のファイルの属性のフラグのステータスについて示しています。
Attribute Bits |
Attribute |
Bit |
Binary |
Hex |
Read Only File Flag |
0 |
.......? |
01H |
Hidden File Flag |
1 |
......?. |
02H |
System File Flag |
2 |
.....?.. |
04H |
Volume Label Flag
(Indicates that the entry is a volume label) |
3 |
....?... |
08H |
Sub–directory
(in same format as directory) |
4 |
...?.... |
10H |
Archive Bit
(File Modified Since Last Backup) |
5 |
..?..... |
20H |
Reserved (Contains 0) |
6 |
.0...... |
- |
Reserved (Contains 0) |
7 |
0....... |
- |
1つのファイルに複数の属性がある場合があります。たとえば、単一のファイルが読み取り専用および隠しファイルである場合や、単一のファイルがシステムファイルと隠しファイルの両方の属性を持っている場合があります。 (ディレクトリエントリのエンコーディングについては、次に示す例を参照してください)。
Time and Dateは、32ビット(16ビットの時刻と16ビットの日付)の特別にコード化されたフィールドです。ファイルの作成日または最終更新日と作成日または最終更新日を構成するためのこれらのビットエンコーディングの分割は、次の表に示されています。
ディレクトリエントリの16番目と17番目のバイトであるファイルの作成時または最終更新のエントリは、上記の表に示されている形式になっています。エンコーディングは次のとおりです。
- Hは1時間の2進数で、0から23の範囲で指定できます
- Mは分の2進数で、0〜59の範囲で指定できます
- Sは、2秒刻みの秒の2進数です
- ファイルの作成または最終更新のデータのエントリは、ディレクトリエントリの18番目および
- 19番目のバイトであり、次の形式になっています。
- Yは、0〜127または1980〜 2107年の2進数です
- Mは月の2進数で、1から12の範囲である可能性があります
- Dは日付の2進数で、1から31の範囲である可能性があります
このディレクトリエントリは、最初のクラスタ値に基づいてFATエントリにリンクされます。 DOSがディレクトリからのファイルの開始クラスタ値を取得すると、DOSはFATを使用して完全なファイルを見つけることができます。チェーン内のエントリクラスターは、ファイルを構成する最初のクラスターです。属性のディレクトリフラグが設定されている場合、このフィールドは新しいディレクトリエントリを指します。
ファイルのサイズのエントリは4バイトです。これにより、FAT32が最大4,294,967,295バイトのファイルの最大サイズ(約4 GiB)をどのようにサポートするかを計算できます。 4バイトには32ビットがあり、32ビットバイナリで構成される最大ファイルサイズは次のようになります。
= 11111111 11111111 11111111 11111111 (B) Bytes
= 4,294,967,295 (D) Bytes
~ 4 GiB
したがって、FAT32は最大4GiBの最大ファイルサイズをサポートします。
ファイルのサイズとファイルの開始クラスターは、ファイルが構成されていると想定されるクラスターの数を計算できるため、破損したファイルを回復する際のデータ回復に役立つリソースになる可能性があります。
前の図は、7つの異なるファイルのルートディレクトリエントリを示しています。これらのエントリのエンコーディングは、次の表に示されています。
長いファイル名(LFN)
ルートディレクトリの説明ですでに説明したように、以前はルートディレクトリのサイズが固定され、ディスク上の固定位置に配置されていましたが、ファイルとして扱われるようになったため、必要に応じて自由に拡張できるようになりました。
各長いファイル名は複数のディレクトリエントリを使用するため、これは長いファイル名にとって非常に重要です。 8.3ファイル名を使用するオペレーティングシステムに長いファイル名のサポートを追加することは、11文字を超える文字を保持するようにディレクトリエントリを拡張するほど簡単ではありません。
この新しいオペレーティングシステムが255文字のファイル名を返す場合、11文字以下を受け取ることを期待する多くの古いアプリケーションは、プログラムが読み取ったファイル名を格納するためにメモリを確保する必要があるため、クラッシュします。ファイル名とオペレーティングシステムが(たとえば)32文字をそのスペースにコピーすると、他のデータが上書きされます。アプリケーションを壊す確実な方法は、ランダムデータをそのデータスペースにコピーすることです。
この問題を克服するために、Windows 95で、以前のバージョンのDOSおよびWindowsアプリケーションとの互換性を維持しながら長いファイル名をサポートするという問題に対する巧妙な解決策が見つかりました。
ほとんどのアプリケーション(Norton Disk Doctorなどの低レベルのディスクユーティリティを除く)がシステムにファイル名とサブディレクトリ名を照会する場合、ディスクから直接ディレクトリエントリを読み取るのではなく、オペレーティングシステムに組み込まれている列挙関数を使用して照会します。 。
ディレクトリエントリは、読み取り専用、非表示、システム、およびボリュームラベル属性ビットの組み合わせでマークされていることがわかっています。おそらく、ディレクトリエントリの属性バイトが値0FHを保持している場合、既存のすべてのバージョンのDOSおよびすべてのWindows 95以前のバージョンのWindowsに組み込まれている列挙関数は、そのディレクトリエントリが存在しないかのようにスキップします。
次に、解決策は、すべてのファイルとサブディレクトリに2つの名前を格納することでした。短い名前はすべてのアプリケーションに表示され、長い名前はWindows 95(以降)アプリケーションとサポートを追加するために書き直されたアプリケーションにのみ表示されます。長いファイル名の場合。短いファイル名は、従来の32バイトのディレクトリエントリに8.3形式で保存されます。
We have already discussed that Windows creates a short filename from a long one by truncating it to six uppercase characters and adding "~1" to the end of the base filename.
同じ最初の6文字の別のファイル名がすでに存在する場合は、番号が増加します。拡張子は同じままで、以前のバージョンのWindowsおよびDOSで不正だった文字はすべてアンダースコアに置き換えられます。
ロングファイル名は、0FHに設定された属性バイトでマークされた特別にフォーマットされた32バイトのロングファイル名(LFN)ディレクトリエントリに保存されます。特定のファイルまたはサブディレクトリについて、1つ以上の長いファイル名ディレクトリエントリのグループが、ディスク上の単一の8.3ディレクトリエントリの直前にあります。
各ロングファイル名ディレクトリエントリには、最大13文字のロングファイル名と、オペレーティングシステムの文字列が必要な数だけ一緒に含まれ、ロングファイル名全体を構成します。
長いファイル名のディレクトリエントリの場合、ファイル名はUnicode形式で保存されます。これには、ASCIIの1バイトではなく、文字ごとに2バイトが必要です。ファイル名の文字は、次の3つのフィールドに分散されています。
- 最初の10バイト(5文字)の長さ
- 次の12バイト(6文字)、
- 3番目の4バイト(2文字)。
- ディレクトリエントリの最初のバイトの下位5ビットは、他のディレクトリエントリに対するディレクトリエントリの位置を識別するシーケンス番号を保持します
- 同じファイルに関連付けられている長いファイル名のディレクトリエントリ。
長いファイル名に3つのLFNディレクトリエントリが必要な場合、最初のシーケンス番号は1、2番目のシーケンス番号は2、3番目のシーケンス番号は3になり、3番目のエントリの最初のバイトのビット6が設定されます。 1に変更して、シーケンスの最後のエントリであることを示します。
属性フィールドは、8.3ディレクトリエントリと同じ場所にLFNディレクトリエントリに表示されます。これは、ファイルシステムが、属性バイトを調べるまで、処理しているディレクトリエントリのタイプを認識していないためです。開始クラスター番号フィールドも同じ場所に表示されますが、LFNディレクトリー項目では、その値は常に0です。タイプ標識フィールドも、すべての長いファイル名で0を保持します。
長いファイル名の問題の1つは、短いファイル名よりも多くのディスク領域を消費することです。長い名前がサブディレクトリに保存されている場合、これは大したことではありません。ディスクスペースが利用可能である限り、サブディレクトリは追加されたディレクトリエントリに対応するように拡張できますが、ルートディレクトリで利用可能なディレクトリエントリの最大数は固定されており、長いファイル名は無駄になります。サイズが制限されているルートディレクトリ内のスペース。
たとえば、 ハードディスクのルートディレクトリに最大512個のディレクトリエントリが含まれている場合、128文字の名前には11個のエントリが必要であり、長い名前に10個、短い名前に1個必要なので、ルートディレクトリに作成できるファイルとサブディレクトリは46個だけです。それぞれに128文字の名前が付けられました。
FAT32システムでは、ルートディレクトリがサイズが大きくなる可能性のあるファイルとして扱われるため、FAT32の下のルートディレクトリも大きくなる可能性があるため、FAT32の問題も解消されます。
データ領域(またはファイル領域)
ルートディレクトリに続いて、データエリア(またはファイルエリア)が起動します。むしろ、ルートディレクトリの後のボリュームの残りの部分はデータエリアであると言えます。
データ領域には、ディスク表面に保存されている実際のデータが含まれています。 DOSはデータ領域の最初のセクターにクラスター番号2を使用するため、さまざまな計算を実行する際には、クラスター番号が2から始まることに注意する必要があります。
ハードディスクドライブをフォーマットするとき、DOSのFORMATコマンドはデータ領域のデータを破壊したり上書きしたりしません。 FORMATコマンドは、ディレクトリエントリとFATエントリのみを削除し、実際のデータ領域には影響しません。
これにより、誤ってフォーマットされたハードディスクドライブのリカバリが可能になります。これは、誤ってフォーマットされたフロッピーディスクのすべての場合に可能であるとは限りません。 Windowsによるフルフォーマットと同様に、フロッピーのデータ領域はF6H文字で埋められ、すべての情報が上書きされます。
DOSは、「最後に使用されたクラスター」(LCU)ポインターと呼ばれる16ビット/ 32ビットのポインターを使用して、最後に使用されたクラスター番号を格納します。最初、このポインター値はゼロです。特定のクラスターに情報が書き込まれると、そのクラスター番号がLCUポインターに格納されます。
この後、新しい情報を書き込むたびに、DOSはLCU番号以降の空きクラスターを検索します。これにより、データが新しい未使用領域に書き込まれるときに、ディスクに書き込まれた新しいデータは連続したままになります。
これで、ファイルがディスク上の1つの連続した領域にあるため、誤って削除された場合のデータの理解がはるかに簡単になります。ディスクの終わりに達するか、システムがリセットされると、LCUポインタ値はゼロにリセットされます。
しかし、問題はここでは続きません。ディスク上に新しいファイルを作成するだけで、以前に保存したファイルからファイルを削除または変更することは実際には不可能です。 LCUのみを使用すると、ファイルの作成と削除を頻繁に行う場合に問題が発生します。これにより、新しいデータがハードディスクの内部トラックにさらに移動することになります。
したがって、ディスクに保管されていたファイルが移動または削除された場合、ファイルによって占有されていたデータ領域内のクラスターは、データ領域で使用可能な未割り当てクラスターとして設定され、新しいデータを書き込む準備が整います。これにより、オペレーティングシステムはすべてのデータをディスクの内部トラックに移動する必要がなくなります。
ただし、ファイルの削除と作成が多いと、ディスク上のデータが断片化され、データの断片化が発生します。
断片化および断片化されたデータ
ディスク内の各ファイルは、クラスターのリンクリストとして保存され、ファイルに含まれているデータをディスク上のどこにでも配置できることについては、すでに説明しました。 4,096バイトのクラスターを使用してディスクに10MBのファイルを保存している場合、2,560のクラスターを使用しています。これらのクラスターは、ディスクのさまざまなトラック、さまざまなプラッターに配置できます。実際、どこにでも配置できます。
ファイルはディスク全体に広がる可能性がありますが、これは好ましい状況とはほど遠いものです。その理由は、望ましくないパフォーマンスの低下です。ハードディスクは、主に機械部品が含まれているため、比較的低速なデバイスです。ハードディスクがヘッドを別のトラックに移動する必要があるたびに、数千から数千のプロセッササイクルに相当する時間がかかります。
したがって、各ファイルがディスク全体に広がる程度を最小限に抑える必要があります。理想的なケースでは、すべてのファイルが実際には完全に連続しています。つまり、使用する各クラスターはディスク上に次々に配置されます。これにより、必要に応じて、ハードディスクによる機械的な動きをあまり必要とせずに、ファイル全体を読み取ることができます。
実際、ファイルシステムは、ファイルのすべてまたはほとんどが連続している状態で開始されますが、一定期間にわたるファイルの作成と削除の結果として、ディスク上のデータはますます断片化されます。
断片化を理解するための簡単な例を考えてみましょう。次の表は、12個のクラスターの使用法を表しています。最初、テーブルは空です。
cluster 1 |
cluster 2 |
cluster 3 |
cluster 4 |
cluster 5 |
cluster 6 |
cluster 7 |
cluster 8 |
cluster 9 |
cluster 10 |
cluster 11 |
cluster 12 |
ここで、このディスクにファイルA、B、C、Dの4つのファイルを作成するとします。次の図に示すように、ファイルAは1つのクラスター、ファイルBは4、ファイルCは2、ファイルDは3を取ります。これらを空き領域に格納し、すべて連続して開始します。
しばらくしてから、ファイルCを削除します。これにより、ファイルCによって占有されていた両方のクラスターが解放されるか、割り当てが解除されます。これにより、ディスクは次の図のようになります。
ここで、3つのクラスターを必要とする新しいファイルEを作成します。ただし、ディスクには3クラスターの長さの連続したブロックがないため、以前はCが占めていたスペースの一部を使用して、Eを2つのフラグメントに分割する必要があります。これで、ディスクは次の図のようになります。 :
一定期間後、ファイルAとEを削除し、5つのクラスターを占めるファイルFを作成します。これで、ディスクは次の図のようになります。
これで、ファイルFが3つのフラグメントに分割されることがわかります。ディスク内のこのタイプのデータは、フラグメント化されたデータと呼ばれます。上記の例は、断片化の非常に単純化された例です。これは、実ディスクには数千のファイルと数千のクラスターがあり、そこでの問題が拡大しているためです。これにより、何が起こるかについての一般的な考え方がわかります。
デフラグプログラム(MicrosoftのDEFRAGプログラム、NortonのSpeedDiskなど)が行うことは、ディスクを再配置してファイルを連続した形式に戻すことです。ディスクデフラグユーティリティを実行した後、私たちが話していたディスク上のデフラグデータは次の図のようになります。
多くの場合、断片化されたデータと断片化されたデータは、データの回復中に非常に重要です。
データ回復のためにクラッシュしたディスクが2つあり、1つはデータが断片化されており、もう1つは最近最適化されたと考えてみましょう。また、ファイルのFATおよびルート情報が破損しているため、両方のディスクの表面からデータを収集してデータを回復する必要があります。このようなタイプの場合、回復の割合はディスク内のデータの最適化に比例します。
明らかに、デフラグされたディスクからのデータ回復は簡単で、データ回復の割合も高くなりますが、一方で、断片化されたディスクからのデータ回復は困難で時間がかかり、回復されたデータの割合も高くなります。また、がっかりします。
データ破損の原因を特定する
いくつかの特定の手順を順番に実行すると、破損している領域を見つけるのに役立つ場合があります。これらの手順は、回復手順とともに次のように説明されています。
起動可能なフロッピーでシステムを起動します
使用していたオペレーティングシステムの起動可能なフロッピーまたはCDを使用してシステムを起動します。論理ドライブC:またはD:などを読み取ってみてください。ドライブにアクセスできる場合は、ドライブからすべてのデータをコピーするだけです。これで、ストレスが少なく、ディスクが正しく起動しない理由を理解できます。
MBR情報を確認する
ハードディスク上の最初の最も重要なデータは、MBRと、その中に含まれるテーブルであるパーティションテーブルです。この本に含まれているディスクには、「TTEDITOR.EXE」という名前の小さなディスク編集ツールが含まれています。または、他のプログラムを使用してハードディスクを分析することもできます。
Diskeditは、データ回復の目的でディスクを分析するのに最も適したプログラムになります。さて、あなたが使いやすいと感じるプログラムはどれでもあなたにあります。 MBR、特にそのパーティションテーブルを読んでみてください。
この章で説明したMBRの説明で見たように、MBRの後半には、何か問題がある場合にエラーメッセージとして表示される読み取り可能なテキストがあります。これらのテキストメッセージは次のように表示されます。
“Invalid partition table, Setup can not continue”
“Error loading operating system, Setup can not continue”
これらのエラーメッセージが表示されない場合は、MBRが破損していることを示しています。また、「システムがハッキングされました…..」などの不正なメッセージやその他の予期しないメッセージが表示される場合もあります。これは、MBRに深刻な問題があることを示しており、おそらくウイルス感染が原因です。
ここで、最初の446バイトの後にMBRのパーティションテーブルを確認します。パーティションテーブルが空白の場合、起動時にエラーメッセージは表示されません。 DOSは、パーティション化されていないドライブを無視します。ドライブA:に起動可能なフロッピーがない場合、システムは起動可能なフロッピーをドライブA:に挿入するように要求します。
ここで注意すべき重要なことは、以前は機能していたドライブのパーティションテーブルが空白であってはならないため、何かがそれを消去したことです。パーティションテーブルが空白の場合は、バックアップからMBRを復元します。
バックアップが機能しない場合は、復元プロセスが正常に完了した後でも、このセクターに物理的な損傷があります。次の章で説明するデータ回復のプログラミング手法を試して、データを回復してください。プログラマーでない場合は、優れたデータ回復センターに行くことをお勧めします。
MBRのバックアップがない場合は、Diskeditなどのディスク編集ツールを使用して手動でパーティションテーブルを作成してみてください。ただし、場合によっては作成が非常に困難です。
プログラマーではなく、バックアップも持っていないユーザーの場合は、大学時代のデータ回復プロジェクトの開発時から使用している方法を使用できます。
あなたがしなければならないことは、ディスクのサイズがほぼ同じで、パーティションの数が同じで、最も重要なことはあなたのコンピュータにあった同じオペレーティングシステムであるあなたの近くのコンピュータを検索することです。
ただし、ほとんどの場合、完全に機能します。ただし、そうでない場合は、少なくともディスクの最初のパーティションにアクセスするのに役立つ場合があります。オペレーティングシステムが最初のパーティションにインストールされていて、他の情報が破損していない場合でも、オペレーティングシステムは正常に起動します。
MBRに問題がない場合は、DBRを確認します
MBRに問題がない場合は、DBR(DOSブートレコード)を確認します。すでに説明したように、これはDOSパーティションの最初のセクターであり、隠しファイルをロードしてオペレーティングシステムを起動する小さなプログラムが含まれています。
DBRには、FAT、ルートディレクトリクラスター、パーティションのサイズなどに関する多くの重要な情報も含まれています。DBRが破損している場合、または不正な情報がある場合は、Diskeditのようなユーティリティを使用してDBR情報を読み取り、バックアップからDBRを復元します。
データ回復のためのすべての専門的なソフトウェアは、DBRを書き直すことができます。この本の次の章では、プログラミングを使用してパーティションのDBRを書き換える方法について説明します。
適切な情報を提供することにより、Diskeditを使用してパーティションのDBRを書き換えることもできます。
破損の領域を見つけるための非常に簡単な方法もあります。画面に表示されるエラーメッセージには、特定の原因があります。いくつかの重要なエラーメッセージの説明は次のとおりです。
Message |
Description |
“Sector not found reading drive” |
This message can appear during any DOS operation. Generally, it is caused either by fading or the loss of a sector ID. |
“Data error reading drive” |
This message can appear during any DOS operation. It is caused by failing the data check – CRC (Cyclic Redundancy Check) or ECC (Error Correction Code). This “Data check” refers to the mechanism used to check whether the data read from the disk is reliable. |
“ 0 hard disk(s) found" |
It is displayed if the hard disk is not detected by the BIOS of the computer. Check the power and data cable connections of the hard disk. If connections are all right, the problem may be due to some hardware error of hard disk. |
“Hard Drive failure, press F1 to continue” |
Same as above |
“Invalid drive specification” |
It is displayed in the condition when either the system does not recognize the hardware, or there is no partition information, or the device driver of the drive is missing. |
“Invalid configuration press F1 to continue” |
If the hard disk is available, Either the battery in the motherboard is dead, and the system has lost its configuration SETUP information or the disk is not responding. |
“Invalid partition table” |
This is the MBR error message. It is displayed when the partition table of the MBR does not have the valid partition information. |
“Error loading operating system” |
This is the MBR error message. It is displayed due to any type of MBR information corruption. |
“Missing operating system” |
Same as above. |
“Disk boot failure” |
It is the DBR error message. Normally, The Hard drive should be accessible if you boot from the floppy. Though it is not bootable but that should not affect the access to the data of the drive. |
“non system disk or disk error” |
Same as above. |
“Bad or missing command interpreter” |
This message is displayed due to Bad or Missing Command Interpreter. For example if the operating do not find the command.com in current path or the command.com is corrupted. |