ハードウェアとデバイス・ファイルシステム
デバイスは/dev・/proc・/sysで把握し、MBR/GPTの制約差、mkfs→/etc/fstab(UUID・6フィールド)→mount、fsck/tune2fs/dfによる保守までを一連の流れで体系的に押さえることが本章攻略の鍵である。
Linuxはハードウェアをデバイスファイルとして抽象化し、/devディレクトリ配下に配置する。デバイスファイルにはブロックデバイス(ハードディスクやSSDなど、ブロック単位でランダムアクセスするもの。/dev/sda等)とキャラクタデバイス(端末やシリアルポートなど、文字単位で順次アクセスするもの。/dev/tty1等)の2種類があり、ls -l の出力の先頭文字がそれぞれ b と c で表示される。カーネルが認識したデバイスの情報は /proc(プロセスとカーネル情報を提供する仮想ファイルシステム)や /sys(sysfs。デバイスとドライバの階層情報)から参照できる。デバイスファイルの動的な管理は udev が担い、カーネルからの uevent を受けて /dev 配下にデバイスファイルを生成し、/etc/udev/rules.d 等のルールに従って命名や権限設定を行う。以上はLinuC公式出題範囲(Version 10.0)の主題1.05「ハードウェア、ディスク、パーティション、ファイルシステム」のうち1.05.1「ハードウェアの基礎知識と設定」の中心論点である。
デバイスドライバの多くはカーネルモジュールとして提供され、必要時にロードされる。ロード済みモジュールの一覧表示は lsmod、モジュール情報の表示は modinfo、ロードは modprobe または insmod、アンロードは rmmod や modprobe -r で行う。modprobe は依存関係を解決して必要なモジュールを併せてロードできる点で insmod と決定的に異なり、依存関係情報は depmod が生成する modules.dep ファイルに基づく。この「依存関係解決の有無」は本試験の頻出ひっかけである。ハードウェア情報の確認では、PCIデバイスは lspci、USBデバイスは lsusb で一覧表示でき、いずれも -v オプションで詳細を表示する。CPU情報は /proc/cpuinfo、メモリ情報は /proc/meminfo、割り込みは /proc/interrupts から参照できる。また、デスクトップ環境のアプリケーション間メッセージングには D-Bus が使われ、デバイスのホットプラグ通知にも関与する点も1.05.1の範囲として押さえておく。
ディスクは利用前にパーティションに分割する(主題1.05.2)。伝統的な MBR(マスターブートレコード)形式は基本パーティションを最大4個までしか作成できず、それを超える場合は基本パーティションの1つを拡張パーティションとし、その中に論理パーティション(番号は5以降)を作成する。また MBR は2TiBを超える容量のディスクを扱えない。これに対し UEFI とともに普及した GPT(GUIDパーティションテーブル)は既定で最大128個のパーティションを作成でき、2TiB超のディスクにも対応し、パーティションテーブルの複製をディスク末尾に保持するため耐障害性が高い。パーティション操作コマンドは、MBR向けに使われてきた fdisk、GPT向けの gdisk、両形式に対応する parted が代表である(現行の fdisk は GPT にも対応)。UEFI環境から起動するディスクには EFIシステムパーティション(ESP)を FAT系ファイルシステムで用意する必要がある。パーティション構成の確認には lsblk や parted -l を用いる。
パーティション上にはファイルシステムを作成して使用する(主題1.05.3)。Linuxの標準的なファイルシステムは ext系(ext2/ext3/ext4)で、ext3以降はジャーナリング機能を持ち、クラッシュ後の整合性回復が高速である。ext4はエクステント方式の採用や大容量対応などの改良を加えたものである。ほかに Red Hat系ディストリビューションで標準採用される XFS(高い拡張性を持つジャーナリングファイルシステム)、スナップショットやサブボリュームを特徴とする Btrfs、Windowsと互換性のある FAT/exFAT などが出題される。作成コマンドは mkfs(mkfs -t ext4 のように -t でタイプを指定。mkfs.ext4 等の個別コマンドの呼び出しに相当)と、ext系専用の mke2fs である。スワップ領域は mkswap で初期化した後、swapon で有効化し、swapoff で無効化する。現在のスワップの状況は swapon --show または /proc/swaps で確認できる。スワップはファイルシステムではないため mount の対象にならない点に注意する。
作成したファイルシステムはマウントしてディレクトリツリーに接続する。手動マウントは「mount デバイス マウントポイント」、切り離しは umount で行い、使用中(カレントディレクトリとして使用中、またはファイルをオープン中)のファイルシステムは umount できない。起動時の自動マウントは /etc/fstab に記述し、各行は「デバイス、マウントポイント、ファイルシステムタイプ、マウントオプション、dumpフラグ、fsck実行順序」の6フィールドからなる(fstab(5))。デバイス指定にはデバイス名のほか UUID= や LABEL= が使え、デバイス名の変動に影響されない UUID 指定が推奨される。UUID の確認は blkid で行う。mount -a は fstab 記載の全ファイルシステムを一括マウントする。マウント状況やブロックデバイスの確認には lsblk、findmnt、/proc/mounts が使える。第6フィールドの fsck 順序はルートファイルシステムを1、その他を2、検査不要を0とするのが慣例である。
ファイルシステムの整合性検査には fsck を用い、ext系にはその実体である e2fsck がある。fsck をマウント中のファイルシステムに実行すると破損の恐れがあるため、アンマウントしてから実行するのが原則である。ext系のパラメータ調整には tune2fs を使い、-l でスーパーブロック情報の表示、-c で最大マウント回数の設定、-i でチェック間隔、-L でボリュームラベルの設定ができる。dumpe2fs はスーパーブロックとブロックグループの詳細を表示する。XFS には修復用の xfs_repair、情報表示の xfs_info、ラベルやUUID変更の xfs_admin が用意されており、fsck.xfs は互換性のためのダミーで実際には何も行わない点がひっかけとして問われる。ディスク使用量の確認は、ファイルシステム単位の空き容量を df(-h で人間可読、-i で inode 使用状況)、ディレクトリ・ファイル単位の使用量を du で行う。inode の枯渇は、ブロックに空きがあってもファイルを新規作成できなくなる原因として頻出の論点である。
LVM(論理ボリュームマネージャ)は物理ディスクの制約を超えた柔軟なストレージ管理を提供する仕組みで、主題1.05.2の範囲である。物理ボリューム(PV)を束ねてボリュームグループ(VG)を構成し、そこから論理ボリューム(LV)を切り出す3層構造をとり、pvcreate→vgcreate→lvcreate の順で作成する。LVは後からの拡張やスナップショット取得が可能で、パーティションを直接使う場合に比べサイズ変更の自由度が高い。本試験ではコマンドの詳細操作よりも、PV→VG→LVという階層関係と、LVMを使う利点(複数ディスクの統合、動的なサイズ変更)が問われる。また、システム設計上の論点として、/home や /var など増大しやすいディレクトリを別パーティション(または別LV)に分離する理由(ルートファイルシステムの逼迫防止)、スワップ領域のサイズ設計、ブートローダが参照する /boot の配置といったディスクレイアウト設計の考え方も本章の出題範囲に含まれる。
この章の問題から3問
insmod コマンドは、指定したカーネルモジュールが依存する他のモジュールも自動的にロードする。
正解 ×(誤り)
誤り。insmod は指定した単一モジュールのみをロードし、依存関係は解決しない。依存モジュールを自動的にロードするのは modprobe であり、その依存情報は depmod が生成する modules.dep に基づく。insmod と modprobe の機能を入れ替える定番のひっかけである(LinuC 101 出題範囲 Version 10.0 主題1.05.1)。
MBR形式のパーティションテーブルでは、基本パーティションは最大4個まで作成できる。
正解 ○(正しい)
正しい。MBR(マスターブートレコード)形式では基本パーティションは最大4個。5個以上に分割するには基本パーティションの1つを拡張パーティションとし、その内部に論理パーティション(番号は5以降)を作成する。「論理を含めて4個まで」と誤読させる出題に注意(主題1.05.2)。
fsck.xfs コマンドを実行すると、XFSファイルシステムの検査と修復が行われる。
正解 ×(誤り)
誤り。fsck.xfs は起動時の fsck 呼び出しとの互換性のために用意されたダミーで、実行しても何も検査しない。XFS の検査・修復には xfs_repair を使用する。「ext系と同様に fsck が使える」と思わせるひっかけである(主題1.05.3、fsck.xfs(8)/xfs_repair(8) マニュアル)。
登録不要 ・ 採点と解説はその場 ・ 進捗は端末に保存
LinuC レベル1(101試験)の他の章
- Linuxのインストールと仮想マシン・コンテナ
- ファイル・ディレクトリの操作と管理(パーミッション)
- GNUとUnixのコマンド(テキスト処理・パイプ)
- プロセス管理とシェルスクリプトの基礎
- ネットワークの基礎とセキュリティ管理
本ページの講義ノートと問題は、各試験の出題範囲に基づきAIが作成し、法令・基準に照らして別のAIレンズで敵対的に検証したものです(検証プロセス)。法改正等で誤りが見つかった場合は随時修正します。合格を保証するものではありません。