4.3. ファイルシステムの保守
4.3.1. ext2/ext3のファイルシステムの構造
ext2/2xt3のファイルシステムはブロック単位で管理され、ブロックにはデータブロック、iノードブロック、スーパブロックの3種類がある。
データブロックにはファイルの内容が保存される。1024の倍数でブロックサイズを指定可能となっている。指定しない場合は適切な値が自動で選択される。
またデータブロックなどはブロックグループという単位でまとめられる。
データブロックにどのデータが記録されているかはiノードに記録される。
iノードブロックにはファイルタイプや更新日、アクセス権所有者情報などのメタデータも保存される。
なおiノードブロックのサイズは128Byteで、1ブロックが1024Byteの場合は1ブロックに8つのiノードが格納される。
ext2/ext3ではiノードをシステム作成後に追加することはできない。
スーパーブロックにはファイルシステムの全般的な情報であるデータブロックサイズやマウント回数、iノードなどが格納される。
スーパーブロックはブロックグループごとにバックアップが作成される。
バックアップスーパーブロックの位置はファイルシステム作成時に表示され、後から確認はmke2fs -nで可能となっている。
確認例は以下の通り。
mke2fs -b 4096 -c -j -n /dev/sdb1dumpe2fsコマンド
スーパーブロックの内容を確認できるコマンド。
dumpe2fs デバイスファイル名4.3.2. ext4ファイルシステムの構造
ext4ファイルシステムの構造は基本的にはext2/ext3と同じだが以下の違いがある。
- 最大ファイルサイズが16TB, 最大ファイルシステムサイズが1EB
- エクステント方式のブロック管理
- オンラインデフラグ
- ナノ秒単位のタイムスタンプ
- マルチブロック割り当て
- ジャーナルチェックサム
- fsckの高層化
4.3.3. ファイルシステムのチェック
ファイルシステムの整合性チェックはfsckやe2fsckコマンドで確認できる。
チェックする際はそのチェック対象のファイルシステムをマウントもしくは読み込みonlyでマウントする必要がある。
fsckコマンド
fsck [オプション] [デバイス名]| オプション | 説明 | 
|---|---|
| -r | 対話的に修復を実行 | 
| -t タイプ | ファイルシステムの種類を指定 | 
| -A | /etc/fstabに記載された全ファイルシステムに対し実行 | 
| -N | 実行せず、実行した場合の結果を表示 | 
e2fsckコマンド
ext2/ext3/ext4ファイルシステムをチェックする際に使用するコマンド。
e2fsck [オプション] [デバイス名]| オプション | 説明 | 
|---|---|
| -b ブロック | 指定したスーパブロックのバックアップを使用して復元 | 
| -c | 不良ブロックのチェック | 
| -f | ファイルシステムの状態がcleanでもチェックする | 
| -p | すべての不良ブロックを自動的に修復する | 
| -y | 再帰問い合わせに関しすべて「yes」と回答する | 
| -n | 再帰問い合わせに関しすべて「no」と回答する | 
なおマウント中のファイルシステムはチェックできないため、ルートファイルシステムをチェックする際は、CD-ROM等より起動するなどを行う必要がある。
もしくはshutdown -r -F nowコマンドで起動時でチェックを行うこともできる。
xfs_repairコマンド
XFSファイルシステムをチェックするコマンド。-nオプションを付けるとチェックのみを行い修復はしない動作となる。
xfs_repair -n デバイス名4.3.4. ext2~ext4ファイルシステムの管理
ext2/ext3/ext4ファイルシステムの様々なパラメータを設定するにはtune2fsコマンドを使用する。
tune2fsコマンド
tune2fs [オプション] デバイス名| オプション | 説明 | 
|---|---|
| -c 回数 | ファイルシステムチェックが行われるまでの最大マウント回数を指定する | 
| -C 回数 | 現在のマウント回数の設定 | 
| -i 間隔 | ファイルシステムのチェック間隔を指定 | 
| -j | ext2からext3へ変換する | 
| -m 領域% | rootユーザ用の予約領域のサイズを変更する | 
| -i | スーパーブロックの内容を表示する | 
| -L ラベル | ファイルシステムのボリュームラベルを設定する | 
| -U UUID | 指定したUUIDに変更する | 
badblocksコマンド
デバイス上の不良ブロックを検索するコマンド。
badblocks [オプション] [デバイスファイル名]| オプション | 説明 | 
|---|---|
| -b サイズ | ブロックサイズを指定する | 
| -o ファイル名 | 指定したファイルに結果を出力する | 
| -w | 書き込みモードでテストする | 
debugfsコマンド
ファイルシステムのデバックを対話式に行えるコマンド。
debugfs [オプション] [デバイスファイル名]| オプション | 説明 | 
|---|---|
| -w | ファイルシステムを読み書き可能モードで開く | 
| -s ブロック番号 | 指定したブロックをスーパーブロックとして利用する | 
| サブコマンド | 説明 | 
|---|---|
| cat ファイル名 | ファイルの内容を表示する | 
| cd ディレクトリ | 別のディレクトリに移動する | 
| chroot ディレクトリ | ルートディレクトリを変更する | 
| close | ファイルシステムを閉じる | 
| dump ファイルA ファイルB | ファイルAの内容をファイルBとして保存 | 
| freei ファイル名 | ファイルのiノードを消去する | 
| ls | ファイル一覧を表示する | 
| mkdir ディレクトリ | ディレクトリを作成する | 
| open デバイス名 | ファイルシステムを開く | 
| pwd | カレントディレクトリを表示する | 
| rm ファイル名 | ファイルを削除する | 
| rmdir ディレクトリ | ディレクトリを削除する | 
| stat ファイル名 | inodeの内容を表示する | 
| quit | 終了する | 
4.3.5. S.M.A.R.T
S.M.A.R.Tはハードディスクに組み込まれている自己診断機能のこと。
この機能を搭載しているハードディスクでは故障時期の予測や故障の兆候を発見可能となっている。
LinuxにはいくつかのS.M.A.R.T対応ソフトウェアがある。
代表的なものにはsmartmontoolsがある。
この仕組みではsmartdデーモンがハードウェアのS.M.A.R.T情報を取得し、smartctlコマンドで表示する。
smartctlコマンド
smartctl [オプション] [デバイスファイル名]| オプション | 説明 | 
|---|---|
| -a / –all | S.M.A.R.T情報を表示する | 
| -i / –info | S.M.A.R.Tの対応状況などを表示する | 
| -c / –capabilities | テストの診断状況の表示 | 
| -t / –test | セルフテストを実施する | 
| -l / –log | テストログを表示する | 
| -H / –health | 状態を表示する | 
| –scan | 認識されているデバイスを表示 | 
4.3.6. XFSファイルシステムの管理
xfs_adminコマンド
XFSファイルシステムのパラメータ変更はxfs_adminコマンドを使用する。
xfs_admin [オプション] [デバイス名]| オプション | 説明 | 
|---|---|
| -u | UUIDを表示する | 
| -l | ラベルを表示する | 
| -L ラベル | ラベルの設定 | 
| -U UUID | UUIDを設定する | 
xfs_infoコマンド
XFSファイルシステムの情報を表示するコマンド。
xfs_info デバイス名xfsdumpコマンド
XFSファイルシステムをバックアップするコマンド。
xfsdump オプション バックアップするファイルシステム| オプション | 説明 | 
|---|---|
| -f 出力先 | 出力先を指定する | 
| -l レベル | ダンプレベルの指定 | 
| -J | ダンプ情報データベースを更新しない | 
xfsrestoreコマンド
xfsファイルシステムをリストアするコマンド。
XFSファイルシステムの復元を行うことができる。
xfsrestore オプション リストア先| オプション | 説明 | 
|---|---|
| -f ファイル名 | バックアップされたデバイスファイル名を指定する | 
| -S セッションID | リストアされたバックアップのセッションIDを指定する | 
| -L セッションラベル | リストアするバックアップのセッションラベルを指定する | 
| -r | 増分バックアップからリストアする | 
| -i | 対話的にリストアする | 
| -I | すべてのダンプのセッションIDとセッションラベルを明示する | 
なお増分バックアップが含まれるテープデバイスからリストアするにはセッションIDまたはセッションラベルが必要となる。
xfs_repairコマンド
XFSファイルシステムの修復を行うコマンド。
xfs_repair デバイスファイル名4.3.7. Btrfsファイルシステムの管理
Btrfsファイルシステムの管理を行う場合はbtrfsコマンドを使用する。
btrfsコマンド
btrfs コマンド サブコマンド| コマンド/サブコマンド | 説明 | 
|---|---|
| filesystem show | ファイルシステムの情報を表示 | 
| filesystem df | ファイルシステムの使用状況を表示 | 
| filesystem label | ファイルシステムのラベルを指定 | 
| filesystem resize | ファイルシステムサイズの変更 | 
| subvolume create | サブボリュームの作成 | 
| subvolume delete | サブボリュームの削除 | 
| subvolume list | サブボリューム一覧の表示 | 
| subvolume snapshot | サブボリュームのスナップショットの作成 | 
| subvolume show | サブボリュームの情報の表示 | 
Btrfsではサブボリュームが使用できる。
サブボリュームはファイルシステムを分割したものを示す。
btrfs-convertコマンド
ext4などのファイルシステムをBtrfsに変換するコマンド。
btrfs-convert デバイス名4.3.8. オートマウント
autofsサービスによるオートマウントを実行することで、自動マウントがされる。
この機能を使えば手動でマウント/アンマウントする必要がない。
autofsサービスの開始
autofsサービスは以下コマンドで開始できる。
設定ファイルは/etc/auto.masterとファイルシステム毎に設定するマップファイルになる。
systemctl start autofs
systemctl restart autofs/etc/auto.masterの書き方
マウントポイントの指定方法は直接マップ、間接マップの2つの方式がある。
/- /etc/auto.direct # 直接マップ
/mnt/sample /etc/sample.dvdrom --timeout=60 # 間接マップ
# マウントベース マップファイル オプションなお/etc/auto.masterを編集した場合には、設定を反映させる為にデーモンの再起動(/etc/init.d/autofs reloadなど)が必要となる。
マップファイル
マップファイルではファイル名を自由に変更する設定を記述することができる。
マップファイルはオートマウントしたいファイルシステムの個数だけ作成する必要がある。
書式は以下の通り。
dvdrom -fstype=udf,ro :/dev/sdc1
# マウントベース以下に作成されるディレクトリ マウントオプション デバイスファイル名