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 つ) のドライブでパーティションがセクター境界に収まるようにします。セクター境界 (つまり、ディスクで使用される実際のセクター サイズ、つまり推奨される転送サイズ) にパーティションを揃えると、パフォーマンスが向上します。