ストレージデバイスは、/dev/sda や /dev/nvme0n1 などのブロックデバイスとして公開されます。そこにはパーティションテーブルを置くことができ、その各エントリが子ブロックデバイスとして公開される領域を表します。さらに、パーティションにはファイルシステム、スワップシグネチャ、RAID メンバー、暗号化コンテナ、論理ボリューム用の物理ボリューム、または別のデータ形式を格納できます。
ファイルシステム · レッスン 3
ディスクの構造
ブロックデバイス、パーティションテーブル、パーティション、ファイルシステムが、それぞれ独立したストレージ層をどのように構成するかを学びます。
これらの層は互いに独立しています。すべてのディスクにパーティションテーブルがあるとは限らず、すべてのパーティションにファイルシステムがあるとも限りません。また、ファイルシステムは論理ボリュームやデバイス全体に直接置くこともできます。
パーティションテーブルと境界
パーティションテーブルには、開始位置、長さ、タイプ識別子、方式固有の属性が記録されます。カーネルはこれを読み取り、/dev/sda1 や /dev/nvme0n1p1 などのパーティションブロックデバイスを作成します。
通常の構成では、パーティションの境界を重ねてはいけません。どのエントリにも含まれない領域は、パーティションテーブル上では未割り当てです。ただし、そこに古いシグネチャやデータが残っている場合があります。テーブルを変更しても、新しい境界に合わせてファイルシステムの内容が自動的に移動するわけではありません。
ディスクパーティションの開始位置と終了位置をオペレーティングシステムに伝えるものは何ですか?
MBR パーティション方式
従来の DOS/MBR 方式では、プライマリテーブルを最初の論理セクタに保存します。このテーブルには 4 つのプライマリエントリがあります。そのうち 1 つを、論理パーティションの連結リストを収める拡張パーティションとして使用できるため、利用可能な領域を 4 つより多く作れます。
32 ビットのセクタアドレスと 512 バイトの論理セクタを使う場合、MBR の上限は一般に約 2 TiB とされています。正確なアドレス可能範囲は、セクタサイズとツールの対応状況によって異なります。また MBR には、GPT が備えるヘッダーとテーブルの冗長コピーや、パーティションごとの GUID がありません。
利用可能なパーティションを 4 つより多く作れる MBR の仕組みはどれですか?
GPT パーティション方式
GUID パーティションテーブル(GPT)は 64 ビットの論理ブロックアドレスを使用し、通常はディスクの先頭付近にプライマリヘッダーとエントリ配列を、末尾付近にそれらのバックアップコピーを保存します。保護 MBR は、MBR しか扱えない古いソフトウェアがディスクを空だと誤認するのを防ぎます。
各 GPT エントリには、パーティションタイプ GUID と一意のパーティション GUID が含まれます。したがって、GPT のパーティションタイプが 1 種類しかないわけではありません。利用できるエントリ数は確保されたテーブルとツールによって決まり、一般には 4 つよりはるかに多く、拡張パーティションや論理パーティションも必要ありません。
GPT は通常 UEFI ブートディスクで使われますが、パーティション方式とファームウェアのブートモードは別の概念です。UEFI システムには、適切なブートファイルと EFI システムパーティションも必要です。GPT にしただけでディスクが起動可能になるわけではありません。
GPT のパーティションエントリには、どの識別子が含まれますか?
ファイルシステムの構造は形式ごとに異なる
パーティションを作成した後、ファイルシステム作成ツールは、そのファイルシステムで定義された構造を書き込みます。多くの形式には、スーパーブロック、割り当てメタデータ、ディレクトリレコード、データエクステントまたはブロックといった概念がありますが、その配置、冗長性、用語は形式ごとに異なります。
たとえば ext ファイルシステムは inode とブロックグループを使いますが、ほかのファイルシステムは異なるツリーや割り当て構造でメタデータを編成します。「ブートブロック、1 つのスーパーブロック、inode テーブル、データブロック」という単純化した図を、すべてのファイルシステムに当てはめてはいけません。
パーティションを作成すると、その中にファイルシステムも自動的に作成されますか?
現在の構成を確認する
変更を加える前に、読み取り専用の表示で確認します。
$ lsblk -o NAME,PATH,TYPE,SIZE,PTTYPE,PARTTYPE,FSTYPE,MOUNTPOINTS
$ sudo parted --list
PTTYPE は検出されたパーティションテーブル方式、PARTTYPE はパーティションタイプ識別子、FSTYPE は検出された内容のシグネチャを表します。検出結果は手掛かりにはなりますが、内容が正常で安全にマウントできることを保証するものではありません。
デバイス名は変わることがあり、古いシグネチャが検出を混乱させる場合もあります。パーティションツールを書き込みモードで開く前に、モデル、シリアル番号、サイズ、接続方式、永続的なリンク、使用中のマウント、スワップ、RAID、LVM、暗号化、バックアップを確認してください。
検出されたファイルシステムの内容と、パーティションテーブル方式を区別する lsblk のフィールドはどれですか?
これらの層を練習する場合は、使い捨てのストレージだけを対象に Linux パーティションとファイルシステムの管理 を利用してください。
レッスン完了
ディスクの構造 を完了しました
これで、ディスク配置のメタデータと、その中に保存されるデータ形式を区別できるようになりました。
デバイス全体と、その子パーティションデバイスを識別する。
MBR の拡張パーティションと、従来の 4 エントリ制限との関係を説明する。
GPT と、冗長なテーブルおよびパーティションごとの GUID との関係を説明する。
ファイルシステムの作成を、パーティションの作成とは別の操作として扱う。
変更前に、すべてのストレージ層と使用中のコンシューマーを確認する。