tune2fs(8) ext2/ext3 ファイルシステムのパラメータを調整する

書式

tune2fs [ -l ] [ -c max-mount-counts ] [ -e errors-behavior ] [ -f ] [ -i interval-between-checks ] [ -j ] [ -J journal-options ] [ -m reserved-blocks-percentage ] [ -o [^]mount-options[,...] ] [ -r reserved-blocks-count ] [ -s sparse-super-flag ] [ -u user ] [ -g group ] [ -C mount-count ] [ -L volume-name ] [ -M last-mounted-directory ] [ -O [^]feature[,...] ] [ -T time-last-checked ] [ -U UUID ] device

説明

システム管理者は tune2fs により Linux ext2/ext3 ファイルシステムの様々なパラメータを調整できる。

オプション

-c max-mount-counts
e2fsck(8) がファイルシステムのチェックを行うマウント回数を設定する。 max-mount-counts が 0 または -1 の場合、 e2fsck(8) とカーネルはファイルシステムのマウント回数を考慮しない。

ジャーナリングファイルシステムを使っている場合、 ファイルシステムを強制的にチェックするマウント回数を ファイルシステムごとにちょっとずつ変えておけば、 すべてのファイルがいっぺんにまとめてチェックされるのを 避けることができる。

マウント回数に依存したチェックを完全に停止してしまうなら、 その影響を慎重に考えておくべきである。 ディスクドライブ・ケーブル・メモリの故障やカーネルのバグによって、 マークされたりエラーが出ることもなく、 ファイルシステムが破壊されることもあり得る。 ファイルシステムにジャーナリング機能を使っていると、 ファイルシステムに壊れたというマークが付けられることは 絶対にないので、 通常ジャーナリングファイルシステムはチェックされない。 この場合でも、カーネルがファイルシステムエラーを検知すれば、 次のブート時に fsck が実行されるが、 この時点ではデータ喪失を防ぐにはもう遅すぎるかもしれない。

時間に依存したチェックを行う -i オプションも参照すること。

-C mount-count
ファイルシステムがマウントされた回数を設定する。 -c オプションで設定された最大マウント回数の パラメータより大きな値が設定されると、 e2fsck(8) は次のブート時に、そのファイルシステムをチェックする。
-e error-behavior
エラーが発生した時のカーネルの挙動を変更する。 いずれにしてもファイルシステムにエラーが起こると、 次のブート時には必ず e2fsck(8) がそのファイルシステムをチェックする。 error-behavior に指定できるのは次の通り。
continue
通常の実行を継続する。
remount-ro
ファイルシステムを read-only でマウントしなおす。
panic
カーネルパニックを起こす。
-f
エラーが起きたときでも tune2fs に動作を完了させる。 このオプションは、外部ジャーナルを使っているファイルシステム (あるいは壊れてそう見えるようになってしまったファイルシステム) から、 外部ジャーナルが見えない場合に has_journal ファイルシステム属性を削除するのに便利である。

警告: クリーンにアンマウントされなかったファイルシステムに対して ジャーナルを一度もリプレイしないまま、 その外部ジャーナルをファイルシステムから切り離してしまうと、 重大なデータ喪失やファイルシステムの破壊をもたらすかもしれない。

-g group
予約 (reserved) ファイルシステムブロックを利用できるグループを設定する。 group パラメータには GID を数値で指定することも、グループ名を指定することもできる。 グループ名が指定された場合は、スーパーブロックに格納される前に GID の数値に変換される。
-i interval-between-checks[d|m|w]
ファイルシステムをチェックする最大の時間間隔を設定する。 数値のみ、もしくは末尾に d を付けると「日」と解釈され、 m, w はそれぞれ「月」「週」と解釈される。 0 を指定すると、時間依存のチェックはしなくなる。

e2fsck(8) によるファイルシステムの完全なチェックを定期的に行わせるため、 -c (マウント回数依存のチェック)、または -i (時間依存のチェック) を指定しておくことを強く推奨する。 これらが指定されていない場合、 ディスク・ケーブル・メモリの故障やカーネルのバグによって ファイルシステムが破壊されても、 データの損失や破壊が起こるまでは知ることができない。

-j
ext3 ジャーナルをファイルシステムに追加する。 -J オプションが指定されていない場合は、 デフォルトのジャーナルパラメータが用いられ、 (ファイルシステムのサイズに対して) 適切な大きさのジャーナルを作成してファイルシステムに格納する。 ジャーナルを実際に使用するためには、 ext3 をサポートするカーネルが必要である。
このオプションを使用して、 マウントされたファイルシステム上にジャーナルを作成すると、 不変 (immutable) ファイル .journal がファイルシステムのトップディレクトリに作成される。 これはファイルシステムがマウントされている間に ジャーナル inode を安全に作成する唯一の方法だからである。 ext3 ジャーナルは可視であるが、 ファイルシステムがマウントされている間に 削除したり修正したりするのは安全ではない。 そのためジャーナルファイルは不変にされている。 アンマウントされたファイルシステムをチェックする場合、 e2fsck(8) は自動的に .journal ファイルを可視でない予約済みジャーナル inode に移動する。 ルートファイルシステム以外の全てのファイルシステムに対して、 次のリブートサイクルで、これが自動的に当然行われるべきである。 ルートファイルシステムは read-only でマウントされるので、 この遷移を有効にするためには、 e2fsck(8) をレスキュー用フロッピーから実行しなければならない。
Debian のようないくつかのディストリビューションでは、 レスキュー用フロッピーを使って ext3 ジャーナルを ルートファイルシステムに追加する必要がないように、 /etc/fstab ファイルで ext3 ファイルシステムをルートファイルシステムに指定しておくと、 初期 RAM ディスクが使用されたときに、 initrd スクリプトが自動的に ext2 ルートファイルシステムを ext3 に変換する。
-J journal-options
デフォルトの ext3 ジャーナルパラメータを変更する。 ジャーナルオプションはコンマで区切り、引き数がある場合には 「= (イコール)」記号を使って指定する。 以下のジャーナルオプションがサポートされている:
size=journal-size
サイズ journal-size メガバイトのジャーナルを作成してファイルシステムに格納する。 ジャーナルのサイズは最低 1024 ファイルシステムブロックである (例えば、1kB のブロックを使っている場合は 1 MB、 4kB のブロックを使っている場合は 4 MB である)。 また、ファイルシステムブロックは 102,400 未満でなければならない。 ファイルシステムには、指定したサイズのジャーナルを作成するために 十分な空きスペースがなくてはならない。
device=external-journal
external-journal にあるジャーナルブロックデバイスにファイルシステムを付加する。 外部ジャーナルは、コマンド
mke2fs -O journal_dev external-journal
を使い、前もって作成されていなければならない。 external-journal は、それを使うファイルシステムと同じブロックサイズで フォーマットされていなければならない。 1 つの外部ジャーナルに複数のファイルシステムを付加することは、 (訳注: ファイルシステム自体では) サポートしているが、 Linux カーネルと e2fsck(8) は現在のところ共有外部ジャーナルをサポートしていない。
デバイス名を直接指定する代わりに、 LABEL=label または UUID=UUID という形式で external-journal を指定することもできる。 この形式では、外部ジャーナルの場所を、 ジャーナルの先頭の ext2 スーパーブロックに格納されている UUID やボリュームラベルで指定する。 ジャーナルデバイスのボリュームラベルと UUID を表示するには、 dumpe2fs(8) を使うこと。 tune2fs(8) の -L オプションも参照のこと。
ひとつのファイルシステムに対しては、 size または device オプションのどちらか一方しか指定できない。
-l
ファイルシステムのスーパーブロックの内容を表示する。
-L volume-label
ファイルシステムのボリュームラベルを設定する。 ext2 ファイルシステムラベルは最大 16 文字まで指定できる。 volume-label が 16 文字より長いと tune2fs は超過分を切捨て、警告メッセージを出力する。 ボリュームラベルは mount(8), fsck(8), /etc/fstab(5) (まだあるかも) において、 /dev/hda5 のようなブロックスペシャルデバイス名の代わりに、 LABEL=volume_label という形式で指定して使うことができる。
-m reserved-blocks-percentage
予約ファイルシステムブロックの割合を % で設定する。
-M last-mounted-directory
ファイルシステムを最後にマウントしたディレクトリを設定する。
-o [^]mount-option[,...]
指定されたデフォルトのマウントオプションを ファイルシステムにセット/クリアする。 デフォルトのマウントオプションは、 /etc/fstab(5) または mount(8) のコマンドライン引き数で指定される マウントオプションで上書きできる。 古いカーネルは、この属性をサポートしていない。 特に 2.4.20 より前のカーネルは、 スーパーブロックにあるデフォルトのマウントオプションを ほぼ確実に無視する。
属性をコンマで区切ることにより、 1 つ以上のマウントオプションをクリア/セットできる。 キャレット文字 ('^') を前につけたマウントオプションは、 ファイルシステムのスーパーブロックからクリアされる。 前置文字のないマウントオプションと プラス文字 ('+') を前につけたマウントオプションは、 ファイルシステムに追加される。
tune2fs を使ってセット/クリアできるマウントオプションは以下の通り:
debug
このファイルシステムのデバッグコードを有効にする。
bsdgroups
新しいファイルを作成するときに、BSD の動作をエミュレートする。 新規作成されるファイルは、 自身が作成されるディレクトリのグループ ID を使う。 標準的な System V の動作をデフォルトとする。 ディレクトリに setgid ビットセットがない場合、 新規作成されたファイルはカレントプロセスの fsgid を使う。 ディレクトリに setgid ビットセットがある場合、 新規作成されたファイルは親ディレクトリのグループ ID を使い、 新規作成されたのがディレクトリならば、setgid ビットセットも設定する。
user_xattr
ユーザ固有の拡張属性を有効にする。
acl
Posix アクセス制御リスト (Access Control List) を有効にする。
uid16
32 ビットのユーザ ID とグループ ID を無効にする。 これは 16 ビットの値のみを格納したり想定したりする 古いカーネルとの相互運用のためにある。
journal_data
ジャーナリングを有効にしてファイルシステムがマウントされている場合、 (メタデータだけでなく) 全てのデータは メインのファイルシステムに書き込まれる前に ジャーナルにコミットされる。
journal_data_ordered
ジャーナリングを有効にしてファイルシステムがマウントされている場合、 メタデータがジャーナルにコミットされる前に、 全てのデータをメインのファイルシステムに強制的に直接書き込む。
journal_data_writeback
ジャーナリングを有効にしてファイルシステムがマウントされている場合、 メタデータがジャーナルにコミットされた後に、 データをメインのファイルシステムに書き込む。 これはスループットを向上させるが、 クラッシュしてジャーナルによる回復をした後で、 ファイルに古いデータが現れるのを許してしまう。
-O [^]feature[,...]
指定したファイルシステム属性 (オプション) をセット/クリアする。 コンマで区切ることにより、 2 つ以上のファイルシステム属性をクリアまたはセットできる。 キャレット文字 ('^') を前においたファイルシステム属性は、 ファイルシステムのスーパーブロックからクリアされる。 前置文字のないファイルシステム属性と プラス文字 ('+') を前においたファイルシステム属性は、 ファイルシステムにセットされる。
tune2fs を使ってセット/クリアできるファイルシステム属性は以下の通り:
dir_index
ハッシュ B ツリーを使い、 ファイルが多いディレクトリ内での検索を高速化する。
filetype
ディレクトリエントリにファイルタイプ情報を格納する。
has_journal
ジャーナルを使うことにより、 異常なシャットダウンが起こってもファイルシステムの一貫性を保証する。 このファイルシステム属性をセットするのは、 -j オプションを使うのと等しい。
sparse_super
大きなファイルシステム上でディスク使用量を少なくするために、 バックアップスーパーブロックの数を制限する。
ファイルシステム属性 sparse_superfiletype をセットまたはクリアした後は、 ファイルシステムを整合性のある状態に戻すために、 そのファイルシステムに対して e2fsck(8) を実行しなければならない。 tune2fs は、必要であれば、システム管理者に対して e2fsck(8) を実行するよう要求するメッセージを表示する。 dir_index 属性を設定した後に、 e2fsck -D を実行して既存のディレクトリをハッシュ B ツリー形式に変換できる。
警告: Linux カーネルのうち 2.0.39 以前と 2.1 系の大部分では、 これらの属性を使用しているファイルシステムをサポートしていない。 これらの属性をサポートしていないカーネルは、 そのファイルシステムをマウントすることができない。
-r reserved-blocks-count
予約ファイルシステムブロックの量をブロック数で設定する。
-s [0|1]
スーパーブロックを疎 (sparse) にする属性をクリア (0) またはセット (1) する。 この属性をセット (1) すると、 非常に大きなファイルシステムでの無駄を減らすことができる。 これは -O sparse_super オプションを使った場合と同じである。
警告: この機能は 2.0.39 以前の Linux カーネルでは利用できない。 また、2.1 系カーネルでも利用できないものがある。 自分が何をしているのか理解していない限り使うべきではない。 この属性を変更した後、ファイルシステムを正しい状態にするには e2fsck(8) を実行する必要がある。
-T time-last-checked
ファイルシステムが最後に e2fsck によってチェックされた時刻を設定する。 これは Logical Volume Manager を使い、 整合性の取れている状態のファイルシステムのスナップショットを取って、 休みの間にそのファイルシステムがハードウェア障害などによって 壊れていないかを調べるようなスクリプトで用いると便利である。 ファイルシステムがクリーンなら、このオプションを使って オリジナルのファイルシステムの最終チェック時刻を設定すればよい。 time-last-checked の書式は、国際時刻書式に、オプションの時刻指定子を加えたもので、 YYYYMMDD[[HHMM]SS] である。 now というキーワードも利用でき、 この場合は最終チェック時刻は現在の時刻に設定される。
-u user
予約ファイルシステムブロックを利用できるユーザを設定する。 user は UID を数値で指定することも、ユーザ名で指定することもできる。 グループ名が指定された場合は、スーパーブロックに格納される前に UID の数値に変換される。
-U UUID
UUID (universally unique identifier: 汎システム的に他とは重ならない識別子) を UUID に設定する。 UUID はハイフンで区切られた 16 進数の列で、 "c1b9d5a2-f162-11cf-9ece-0020afc76f16" のような形式である。 UUID パラメータは以下のいずれか 1 つである:
clear
ファイルシステムの UUID をクリアする。
random
新しい UUID をランダムに生成する。
time
新しい UUID を時刻をもとに生成する。
UUID は mount(8), fsck(8), /etc/fstab(5) (まだあるかも) において、 /dev/hda1 のようなブロックスペシャルデバイス名の代わりに、 UUID=uuid という形式で指定して使うことができる。
より詳しい情報は uuidgen(8) を参照すること。 /dev/random/dev/urandom のような優れた乱数発生器がシステムに存在しない場合、 tune2fs はランダムに生成した UUID ではなく、 時刻に基づいた UUID を自動的に使用する。

バグ

現時点では見付かっていない。しかし、バグがないという意味ではない。

著者

tune2fs は、Remy Card <[email protected]> によって作成された。 現在は Theodore Ts'o <[email protected]> によってメンテナンスされている。 tune2fs は Thodre Ts'o <[email protected]> によって作成された ext2fs ライブラリを使用している。 このマニュアルは <[email protected]> によって作成された。 時間に依存するチェックは Uwe Ohse <[email protected]> によって付加された。

入手方法

tune2fs は e2fsprogs パッケージの一部であり、 http://e2fsprogs.sourceforge.net から入手できる。