パーティション テーブルが 32K のデータを消費していますか?

パーティション テーブルが 32K のデータを消費していますか?

100MB サイズのファイルを作成し、 を使用してlosetupそれを に割り当てます/dev/loop0

その結果、私はfdisk空の DOS パーティション テーブルと、ディスク全体にまたがる新しいパーティションを作成するために使用しました。

私にとって珍しく理解できないことの 1 つは、前述のパーティションが 63 番目のセクターから始まることです。これは、パーティション テーブルが 62 セクター、つまり 31Kb を占めることを意味します。

パーティション エントリに関するすべてのデータは、ドライブの最初のセクターであるマスター ブート レコードに記録されるため、ディスクの最初の 512 バイトのみが境界外になるはずだという印象を持っていました。

ドライブを調べてみると、最初のセクターの後のセクターは完全にヌルで埋められていないので、パーティション テーブルに関する詳細が明らかに不足しています。

fdisk print (表示タイプ = セクター):

      Device Boot     Start        End     Blocks   Id  System
/dev/loop0p1   *         63     192779      96358+  83  Linux

答え1

MBR パーティション形式は 30 年前のものであり、歴史的な理由により奇妙な点があります。

当時、コンピューターはハードディスクの形状を知る必要がありました。ハードディスク上のデータはどのように整理されているのでしょうか? 3 次元で:シリンダー、ヘッド、セクター

トラック、シリンダー、セクター、ヘッド

(図表作成:ライオンキンブロ

ジオメトリは、当時としては十分な大きさの最大値で保存されていました。ヘッド数 (1~255) は 8 ビット、トラック上のセクター数 (1~63) は 6 ビット、ヘッドあたりのトラック数、つまりシリンダ数 (1~1023) は 10 ビットで、1 つのセクターには 512 バイトが含まれていました。現在では、コンピューターはディスクの実際のジオメトリを知る必要はありません (これらの数値は意味を持ちません) が、形式はそのまま残っており、MBR パーティションを使用するディスクのサイズは CHS 形式で表されますが、重要なのは 3 つの数値の積がセクターの総数に等しいことです。

パーティションの開始アドレスは CHS 形式で表現されますが、多くの古いオペレーティング システムでは異なるトラックにまたがるパーティションをサポートしていませんでした。つまり、パーティションはシリンダ境界に揃える必要がありました。つまり、最初のパーティションは 63 セクターの倍数になります。

パーティション コンテンツに使用されていない 31 kB の領域があります。ブートローダに使用できます。

現代のGPTパーティションフォーマットは、1 TB を超えるディスクを搭載した新しい PC の標準であり、パーティションを 1 MB 境界に揃えるため、最初のパーティションの開始前に約 1023 kB の空き領域があります。これも、ブートローダで使用できます。最新のオペレーティング システムでは、MBR パーティションも 1 MB 境界に揃えて CHS 互換性を廃止し、4 kB セクター (= 従来の 512 kB のセクター 8 つ) のドライブでパーティションがセクター境界に収まるようにします。セクター境界 (つまり、ディスクで使用される実際のセクター サイズ、つまり推奨される転送サイズ) にパーティションを揃えると、パフォーマンスが向上します。

関連情報