こんにちは、yassanです。
今回は、LPIC101の試験対策という観点で、Linuxのファイルシステムらについて学習したいと思います。
概要
ファイルシステムとは、ディスクに保存するデータをファイルとして管理する仕組みのことです。
日常生活でも、僕らはコンピュータに対して画像ファイルやテキストファイルなど、ファイルという単位でデータを管理していますね。
このファイルシステムが利用できる環境を作るには、
①ディスク内にパーティションを作成する
②パーティション内にファイルシステムを作成する
③ファイルシステムをマウントする
という3ステップを実行する必要があります。
パーティションの作成
パーティション作成(管理)コマンド
パーティション管理コマンドには、fdisk / gdisk / parted の3種類があります。
これらのコマンドを使って、パーティションの作成・削除・変更・確認などを行います。
fdiskコマンド
fdiskは、引数にデバイス名(/dev/sdaなど)を与えて実行することで対話モードとなります。
そこで、サブコマンドを入力して、パーティションを管理します。
| サブコマンド | |
| l | パーティションタイプの表示 | 
| n | パーティションの作成 | 
| d | パーティションの削除 | 
| p | パーティションテーブルの表示 | 
| t | パーティションタイプの表示 | 
| a | ブートフラグのオン・オフの切り替え | 
| w | パーティションテーブルの変更を保存して終了 | 
| q | パーティションテーブルの変更を保存せず終了 | 
| m | ヘルプの表示 | 
パーティションの作成の際は、パーティションタイプ(基本パーティションか拡張パーティションか)、パーティション番号、開始セクタが問われます。
gdiskコマンド
パーティションテーブルには、MBRの他にGPTがあります。
gsidkコマンドは、GPTにも対応したパーティションの操作をすることができます。
使い方やサブコマンドは、fdiskコマンドと同じです。
partedコマンド
こちらも、MBRとGPTに対応したコマンドです。
fdsik / gdisk とサブコマンドが異なるので注意が必要です。
partedコマンドは、対話モードだけでなく、-sオプションをつけることで引数の情報からパーティションを管理できます。
| サブコマンド | |
| check 番号 | ファイルシステムのチェック | 
| mklabel gpt または msdos | 新しいパーティションテーブルの作成 | 
| mkpart 種類 開始 終了 | 指定した種類のパーティションを作成 | 
| rm 番号 | 指定したパーティションの削除 | 
| p または print | パーティションテーブルの表示 | 
| q または quit | 対話モードの終了 | 
partedには、fdisk / gdiskのように「wで書き込みして終了」のようなものはなく、即座に反映されます。
ファイルシステムの作成
ファイルシステムの種類
ファイルシステムには色々な種類があります。
| ファイルシステム | |
| ext2 | Linuxの標準ファイルシステム | 
| ext3 | ext2 + ジャーナリング機能 | 
| ext4 | ext3の機能拡張 | 
| XFS | SGI社が開発したジャーナリングファイルシステム | 
| JFS | IBM社が開発したジャーナリングファイルシステム | 
| Btrfs | 高度な機能を備えたファイルシステム ストレージプール、マルチデバイスファイルシステム、スナップショット、サブボリュームがあり耐障害性にも優れる先進的なファイルシステム | 
| iso9660 | CD-ROMのファイルシステム | 
| msdos | MS-DOSのファイルシステム | 
| vfat | SDカードやWindowsで使うファイルシステム | 
| exFAT | FATの後継となるフラッシュメモリ向けファイルシステム | 
試験的には、ジャーナリング機能があるかが重要になりそうです。
ファイルシステム作成コマンド
ファイルシステム作成コマンドには、mkfs / mke2fs / mkfs.xxx / mkswap があります。
mkfs.xxxコマンド
mkfs.xxxは、xxxに記載したファイルシステム名のファイルシステム名を作成します。
引数には、デバイス名を与えます。
このコマンドは、プログラムを直接呼び出す形式になります。
| ファイルシステム | コマンド(プログラム) | 
| ext2 | mkfs.ext2 | 
| ext3 | mkfs.ext3 | 
| ext4 | mkfs.ext4 | 
| XFS | mkfs.xfs | 
| VFAT | mkfs.vfat | 
| exFAT | mkfs.exfat | 
| Btrfs | mkfs.btrfs | 
mkfsコマンド
mkfsコマンドは、先のプログラムを呼び出すフロントエンドのコマンドになります。
mkfs -t ファイルシステムタイプ オプション デバイス名 の形式で呼び出します。
ファイルシステムタイプを指定しないと、ext2が設定されます。
mke2fsコマンド
ext2, ext3, ext4 ファイルシステムを作成するときは、mke2fsコマンドも使えます。
mke2fs オプション デバイスファイル名 の形式で利用します。
-j オプションでext3を指定します。
オプションを設定しないと、ext2が設定されます。
mkswapコマンド
パーティション上にスワップ領域を作成するコマンドです。
(スワップ領域は、独立したパーティションに割り当てるのが一般的です)
mkswap デバイス名 の書式で利用できます。
ファイルシステム管理コマンド
ディスクに関するコマンドは、df / du があります。
ファイルシステムに関するコマンドは、fsck / e2fsck / tune2fs があります。
df
ファイルシステムの使用状況を確認できます。
-i をつけることでiノードの使用状況が確認できます。
du
ファイルやディレクトリが占めている容量を確認できます。
オプションは、下記の通りです。
| オプション | |
| -a | ディレクトリ以外のファイルについても表示 | 
| -l | リンクも含めて表示 | 
| -c | 全ての容量の合計を表示 | 
| -k | 容量をキロバイト単位で表示 | 
| -m | 容量をメガバイト単位で表示 | 
| -s | 指定したファイルやディレクトリのみの合計を表示 | 
| -S | サブディレクトリを含めずに集計 | 
| -h | 容量を読みやすい単位で表示 | 
fsck
ディスクのチェックを行い、必要であれば試みることができます。
ファイルシステムに破損が発生した場合に有効なコマンドです。
コマンドの実行は、ファイルシステムをアンマウントした状態で行う必要があります。
(書き込み中のディスクに対して実行すると、破壊の恐れがあります)
mkfsコマンドと同じく、-t でファイルシステムの種類を指定して実行します。
オプションは下記の通りです。
| オプション | |
| -t | ファイルシステムの種類を指定 | 
| -a | 自動的に修復 | 
| -r | 対話的に修復 | 
| -A | /etc/fstabに記述したファイルシステムを対象 | 
| -N | テスト実行(実際には実行しない) | 
e2fsck
ext2, ext3, ext4に対して行うコマンドです。
やってることはfsckを同じですが、オプションが違うので注意が必要です。
| オプション | |
| -p | 自動的に修復 | 
| -y | すべてyesで回答 | 
| -n | すべてnoで回答 | 
tune2fs
ext2, ext3, ext4のファイルシステムのパラメータを設定します。
調整対象のファイルシステムは、こちらもアンマウントしておく必要があります。
fsckの時間感覚なども、tune2fsコマンドで管理します。
そのほか、ext2をext3に変換したり、ボリュームラベルを設定できます。
マウント / アンマウント
/etc/fstab
マウントを学習するうえで、覚えなくてはならないのが /etc/fstabファイルです。
マウントするときには、この設定ファイルが参照されます。
ファイル内に1行ずつマウントの情報を記載します。
それぞれ順に、①デバイスファイル名またはUUID ②マウントポイント ③ファイルシステムの種類 ④マウントオプション ⑤dumpフラグ ⑥fsckのチェック順序 に記載します。
マウントオプションは種類が多いので、覚えるのが大変ですが頻出なので抑えておきましょう。
| オプション | |
| async | ファイルシステムの非同期入出力を設定 | 
| auto / noauto | mount -a で実行したときにマウントする / しない | 
| exec / noexec | バイナリ実行を許可する / しない | 
| ro / rw | 読み取り専用でマウント / 読み書きを許可してマウント | 
| user / users / nouser | 一般ユーザーでもマウント可 / マウントしたユーザー以外でもアンマウント可 / 一般ユーザーのマウントを許可しない | 
| unhide | 隠しファイルも表示 | 
| suid | SUIDとSGIDを有効にする | 
| default | デフォルト設定を適用(async, auto, dev, exec, nouser, rw, suid) | 
マウント / アンマウントコマンド
マウントするときは、mountコマンドを使います。
アンマウントするときは、umountコマンドを使います。
コマンド自体はすごくシンプルですね。
mountコマンド
ファイルシステムをマウントするコマンドです。
オプションを付けずに実行すると、現在のマウント状況を表示します。
オプションをつけて実行するときは、mount オプション デバイス名 マウントポイントの書式で実行します。
mountコマンドも、-t でファイルシステムの種類を指定できます。
-a をつけると、先程の/etc/fstabに記述されたファイルシステムを全てマウントします。
ちなみに、デバイス名かマウントポイントのどちらかを省略しても、/etc/fstab内で情報の補完ができている場合は、きちんと動作します。
umountコマンド
ファイルシステムをアンマウントするコマンドです。
こちらは、umount オプション デバイス名またはマウントポイント の書式で実行します。
まとめ
というわけで、ファイルシステムをはじめ、パーティションやファイルシステムに関するコマンドを中心に紹介しました。
実務でも使用する機会が多々あるかと思います。
試験対策も大事ですが、実機でもスラスラ使えるようになるのが望ましいですね。
最後に、参考にした書籍のリンクを貼っておきます。
試験範囲を網羅でき、適度な情報量なのでおすすめです。
ここまで読んでいただき、ありがとうございました。