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/sdb1

dumpe2fsコマンド

スーパーブロックの内容を確認できるコマンド。

dumpe2fs デバイスファイル名

4.3.2. ext4ファイルシステムの構造

ext4ファイルシステムの構造は基本的にはext2/ext3と同じだが以下の違いがある。

  • 最大ファイルサイズが16TB, 最大ファイルシステムサイズが1EB
  • エクステント方式のブロック管理
  • オンラインデフラグ
  • ナノ秒単位のタイムスタンプ
  • マルチブロック割り当て
  • ジャーナルチェックサム
  • fsckの高層化

4.3.3. ファイルシステムのチェック

ファイルシステムの整合性チェックはfscke2fsckコマンドで確認できる。
チェックする際はそのチェック対象のファイルシステムをマウントもしくは読み込み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 間隔ファイルシステムのチェック間隔を指定
-jext2から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 / –allS.M.A.R.T情報を表示する
-i / –infoS.M.A.R.Tの対応状況などを表示する
-c / –capabilitiesテストの診断状況の表示
-t / –testセルフテストを実施する
-l / –logテストログを表示する
-H / –health状態を表示する
–scan認識されているデバイスを表示

4.3.6. XFSファイルシステムの管理

xfs_adminコマンド

XFSファイルシステムのパラメータ変更はxfs_adminコマンドを使用する。

xfs_admin [オプション] [デバイス名]
オプション説明
-uUUIDを表示する
-lラベルを表示する
-L ラベルラベルの設定
-U UUIDUUIDを設定する

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
# マウントベース以下に作成されるディレクトリ マウントオプション デバイスファイル名