tune2fs - 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) を使うこと。
の -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_super や filetype
をセットまたはクリアした後は、
ファイルシステムを整合性のある状態に戻すために、
そのファイルシステムに対して
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
から入手できる。
dumpe2fs(8),
e2fsck(8),
mke2fs(8)