EN JA
GJOURNAL(8)
GJOURNAL(8) FreeBSD System Manager's Manual GJOURNAL(8)

名称

gjournalジャーナルデバイスのためのユーティリティを制御する

書式

gjournal label [ -cfhv][ -s jsize] dataprov [ jprov]

gjournal stop [ -fv] name ...

gjournal sync [ -v]

gjournal clear [ -v] prov ...

gjournal dump prov ...

gjournal list

gjournal status

gjournal load

gjournal unload

解説

gjournal ユーティリティは、与えられた GEOM プロバイダでジャーナル設定のために使用されます。ジャーナルとデータは、同じプロバイダ、または、2 つの別のプロバイダに格納されます。これは、例えば、ファイルシステムのために、データとメタデータの両方をジャーナルする、ログ登録で得られたすべてを意味するファイルシステムレベルのジャーナリングでなく、ブロックレベルのジャーナリングです。 gjournal GEOM クラスは、ファイルシステムのジャーナリングのために gjournal の使用が、一貫性のある状態でファイルシステムを保持することができる、ファイルシステムと talk する (話す) ことができる現時点で、UFS ファイルシステムだけがサポートされています。

gjournal を使用して UFS ファイルシステムでジャーナリングを設定するためには、最初に、 gjournal ユーティリティを使用して gjournal プロバイダを作成して、次に、下記の gjournal プロバイダと協調するように UFS に指示する -J フラグをつけて、その上で newfs(8) または tunefs(8) を実行するべきです。ジャーナル化された UFS がどのように動作するかに重要な違いがあります。最も重要なことは、 sync(2)fsync(2) システムコールがもはや予想されるように動作しないということです。データがデータプロバイダで格納されることを保証するためには、 sync(2) 呼び出しの後に gjournal sync コマンドを使用するべきです。考えられる最も良い性能のためには、 gjournal が使用されるとき、ソフトアップデートは、無効にされるべきです。また、 async mount(8) オプションを使用することは、安全でお勧めです。

また、 gjournalgmirror(8) または graid3(8) プロバイダの先頭で設定されるとき、一貫した状態にそれらを保持します、その結果、停電またはシステムクラッシュで、自動的な同期は、それらのプロバイダで無効にされるかもしれません。

gjournal ユーティリティは、すべての必要な情報を格納するために、プロバイダの最後のセクタに格納されたディスク上のメタデータを使用します。既存のファイルシステムが gjournal を使用するために変換されるとき、これは、問題となるかもしれません。

gjournal への最初の引数は、実行される動作を示します:

label
与えられた (複数の) プロバイダで gjournal を設定します。 1 つのプロバイダだけが与えられるなら、データとジャーナルの両方は、同じプロバイダに格納されます。 2 つのプロバイダが与えられるなら、最初のプロバイダは、データプロバイダとして使用され、2 番目のプロバイダは、ジャーナルプロバイダとして使用されます。

追加オプションは、次を含みます:

-c
チェックサムジャーナルレコード。
-f
gjournal を使用するために既存のファイルシステムを変換するために使用されますが、ジャーナルが別々のプロバイダで構成される場合だけ、そしてデータプロバイダの最後のセクタが既存のファイルシステムによって使用されない場合だけです。 gjournal が、最後のセクタが使用されていることを検出するなら、それを上書きしてすることを拒絶し、エラーを返します。この振る舞いは、 gjournal が、最後のセクタを強制的に上書きする、 -f フラグを使用することによって、強制されます。
-h
メタデータの決め打ちされたプロバイダ名。
-s jsize
1 つのプロバイダだけがデータとジャーナルの両方に使用されるなら、ジャーナルのサイズを指定します。デフォルトは、1 ギガバイトです。サイズは、そのサイズではなく、プロバイダのロードに基づいて選択されるべきです。推薦されている最小値は、インストールされた物理的なメモリのサイズの 2 倍です。小さいファイルシステムのために gjournal を使用することは勧められません (例えば、数ギガバイト大)。
clear
与えられたプロバイダでメタデータをクリアします。
stop
与えられたプロバイダを停止します。

追加オプションは、次を含みます:

-f
それがオープンされていても、与えられたプロバイダを停止します。
sync
ジャーナルスイッチをトリガし、データプロバイダにデータを強制的に送信します。
dump
与えられたプロバイダに格納されたメタデータをダンプします。
list
geom(8) を参照してください。
status
geom(8) を参照してください。
load
geom(8) を参照してください。
unload
geom(8) を参照してください。

追加オプションは、次を含みます:

-v
より冗長にします。

終了ステータス

終了ステータスは、成功すれば、0 で、コマンドが失敗するなら、1 です。

使用例

次は、 gjournal ベースの UFS ファイルシステムを作成して、それをマウントします:

gjournal load 
gjournal label da0 
newfs -J /dev/da0.journal 
mount -o async /dev/da0.journal /mnt

gjournal がこれを許可する場合にだけ、(すなわち、最後のセクタがファイルシステムによってまだ使用されていないなら)、既存のファイルシステムでジャーナリングを設定します:

umount /dev/da0s1d 
gjournal label da0s1d da0s1e &&\ 
    tunefs -J enable -n disable da0s1d.journal &&\ 
    mount -o async /dev/da0s1d.journal /mnt || \ 
    mount /dev/da0s1d /mnt

SYSCTL

gjournal は、sysctl レベル kern.geom.journal を追加します。利用可能な文字列と整数の情報は、以下に詳細に記述します。変更可能性のカラムは、適切な特権があるプロセスが値を変更できるかどうかを示しています。
sysctl 名 タイプ 変更可能性
debug integer yes
switch_time integer yes
force_switch integer yes
parallel_flushes integer yes
accept_immediately integer yes
parallel_copies integer yes
record_entries integer yes
optimize integer yes
debug
0 以外の値を設定すると、デバッグは、様々なレベルで有効にされます。デバッグレベル 1 は、ジャーナルスイッチ、メタデータの更新などに関連する、ジャーナルレベルで動作を記録します。デバッグレベル 2 は、ジャーナルのエントリの数、アクセス要求などに関連する、より高いレベルで動作を記録します。デバッグレベル 3 は、I/O の挿入をジャーナルに含む冗長な詳細を記録します。
switch_time
新しいジャーナルに切り替わる前に、ジャーナルがオープンしたままにできる、最大の秒数。
force_switch
ジャーナルが空きジャーナル空間の N% を超えて使用するとき、ジャーナルを強制的に切り替えます。
parallel_flushes
ジャーナルをデータプロバイダにフラッシュするとき、並列に送られるフラッシュ I/O 要求の数。
accept_immediately
同時に受け付けられた I/O 要求の最大数。
parallel_copies
辺列に送られたコピー I/O 要求の数。
record_entries
単一のジャーナルに許可されたレコードエントリの最大数。
optimize
オーバラップする I/O を単一の I/O に結合し、ジャーナルのエントリを再順序付けすることによって、ジャーナルのエントリが最適化されるかどうかを制御します。 sysctl を 0 に設定することによって、これを無効にすることができます。

cache

キャッシュレベルのための利用可能な文字列と整数の情報は、以下に詳細に記述します。変更可能性のカラムは、適切な特権があるプロセスが値を変更できるかどうかを示しています。
sysctl 名 タイプ 変更可能性
used integer no
limit integer yes
divisor integer no
switch integer yes
misses integer yes
alloc_failures integer yes
used
現在キャッシュに割り付けられているバイト数。
limit
キャッシュに割り付けられる最大のバイト数。
divisor
kmem_size の割合として使用されるキャッシュサイズを設定します。 2 の値 (デフォルト) によって、キャッシュサイズを kmem_size の 1/2 に設定します。
switch
この割合のキャッシュが使用されたとき、ジャーナルを強制的に切り替えます。
misses
キャッシュには見つからず、データが読み込まれたときのキャッシュミスの数。
alloc_failures
キャッシュの制限に達したために、キャッシュの割り付けに失敗したメモリの回数。

stats

統計レベルのための利用可能な文字列と整数の情報は、以下に詳細に記述します。変更可能性のカラムは、適切な特権があるプロセスが値を変更できるかどうかを示しています。
sysctl 名 タイプ 変更可能性
skipped_bytes integer yes
combined_ios integer yes
switches integer yes
wait_for_copy integer yes
journal_full integer yes
low_mem integer yes
skipped_bytes
スキップされたバイト数。
combined_ios
ジャーナルの最適化によって結合された I/O の数。
switches
ジャーナルを切り替えた数。
wait_for_copy
前のジャーナルコピーの完了を待たなければならなかったジャーナル切り替えプロセスの回数。
journal_full
強制的にジャーナルを切り替えて、ジャーナルがほとんど満杯になった回数。
low_mem
low_mem フックが呼び出された回数。

歴史

gjournal ユーティリティは、 FreeBSD 7.0 で登場しました。

作者

Pawel Jakub Dawidek <pjd@FreeBSD.org>
February 17, 2009 FreeBSD