gfprep

## Name

gfprep — Gfarm ファイル複製を並列に作成する

## Synopsis

`gfprep` [-nqvdpPBU] [-X `regexp`] [-S `source-domainname`] [-h `source-hostfile`] [-D `destination-domainname`] [-H `destination-hostfile`] [-j `num-of-processes`] [-J `num-of-processes`] [-M `total-byte`] [-z `minimum-byte`] [-Z `maximum-byte`] [-w `way-of-scheduling`] [-W `kilobytes-for-threshold`] [-s `KB/s-to-simulate`] [-F `num-for-readahead`] [-I `sec-to-update`] [-mx] [-N `num-of-replicas`] `path`

## DESCRIPTION

gfprep は、 Gfarm ファイル複製を並列に作成します。

`path` がディレクトリの場合、 その下にあるすべてのファイルに対する複製を作成します。

`path` には、 Gfarm URL または gfarm2fs 上のパスを指定できます。

転送先や転送元のホスト群を指定するには、ドメイン名で指定するか、 ホスト名を行ごとに記述したホストリストファイルを指定します。 ドメイン名とホストリストファイルを両方指定した場合は、 両方の条件に合うホスト群を決定します。 転送元ホスト群を指定した場合、 そのホストに存在するファイルのみ複製が作成されます。

なるべく転送中ではないホストを選択して転送開始します。 転送元や転送先 1 ホストあたりの最大並列転送数は、ホストごとの CPU 数です。 CPU 数については、gfhost コマンドのマニュアルを参照してください。

gfprep は、ディレクトリを辿る際に、 ディレクトリエントリ情報も並列に取得します。

## GFPREP OPTIONS

以下は gfprep 専用のオプションです。

`-N` `num-of-replicas`

  ファイル複製数を指定します。 転送先ファイルに十分な数の複製が存在する場合、 複製作成も複製削除も、どちらもしません。

  このオプションを指定しない場合は、-N 1 を指定したことになります。

`-x`

  -N オプションで指定された数よりも多くのファイル複製が転送先に存在する場合は、 余分なファイル複製を削除します。

`-m`

  転送元から転送先にファイル複製を移動します。 -mm のように 2 回指定すると、転送元ファイルを削除しません。

  -S または -h または -D または -H いずれかのオプションが必要です。

  このオプションと -N オプションは、どちらか一方を使用できます。

## COMMON OPTIONS

gfprep と gfpcopy には、 共通で利用できるオプションがあります。

`-X` `regexp`

  `regexp`で指定した正規表現による パターンと一致する転送元パス名を無視します。 複数個のパターンを指定する場合は、-X オプションを複数回指定します。

`-S` `source-domainname`

  転送対象ファイルを選ぶためのドメイン名を指定します。 そのドメイン名の範囲に、 ファイル複製の実体が存在するファイルだけを転送対象にします。

`-h` `source-hostfile`

  転送対象ファイルを選ぶためのホスト名が記述されたリストを指定します。 そのホスト名の範囲に実体が存在するファイルだけを転送対象にします。 そのホスト名のリストには、ファイルシステムノードを一行ずつに記述します。

  ``-'' を指定すると、ホスト名のリストを標準入力から読み込みます。

`-L`

  -S または -h で指定した範囲のみから転送元を選択します。

`-D` `destination-domainname`

  転送先範囲とするドメイン名を指定します。

  このオプションも -H オプションも指定しない場合、利用可能なホストに転送します。

`-H` `destination-hostfile`

  転送先範囲を示すホスト名が記述されたファイルを指定します。 そのホスト名のリストには、ファイルシステムノードを一行ずつ記述します。

  ``-'' を指定すると、ホスト名のリストを標準入力から読み込みます。

`-j` `num-of-processes`

  同時に複製作成やコピーをする際の最大並列数を指定します。

  デフォルト値は gfarm2.conf の client_parallel_copy パラメータです。 最大値は gfarm2.conf の client_parallel_max パラメータです。 詳細は gfarm2.conf のマニュアルを参照してください。

  転送元または転送先のファイルシステムノードごとの最大並列数は、 その CPU 数までです。 CPU 数については、gfhost のマニュアルを参照してください。

`-J` `num-of-processes`

  並列にディレクトリを辿るための並列数を指定します。

  デフォルト値は 8 です。

`-M` `total-byte`

  コピーする際に制限する合計サイズをバイト数で指定します。

  デフォルトでは制限しません。

`-z` `minimum-byte`

  コピーする際に制限する最小ファイルサイズをバイト数で指定します。

  デフォルトでは制限しません。

`-Z` `maximum-byte`

  コピーする際に制限する最大ファイルサイズをバイト数で指定します。

  デフォルトでは制限しません。

`-w` `way-of-scheduling`

  スケジューリング方法を指定します。 noplan にすると、ファイルを見つけながら、複製作成またはコピーします。 greedy にすると、複製作成やコピーする前に、貪欲法によってスケジューリングします。

  デフォルトは noplan です。

  greedy にすると、-N や -m オプションを使用することができません。

`-W` `kibibytes`

  各 Connection のコスト(合計ファイルサイズ)を 平均とみなすまでの閾値をキビバイトで指定します。 Connection とは、子プロセスごとにファイルを割り当てるための、計画情報です。

  -w greedy オプションを使用した場合のみ効果があります。

  デフォルトは 50 * 1024 キビバイト (50 メビバイト) です。

`-I` `sec-to-update`

  gfprep,gfpcopy は gfsd ホストごとのロードアベレージやディスクの空き容量を 定期的に取得します。それらの値を更新する間隔を秒で指定します。

  デフォルトは 300 秒です。

`-B`

  高負荷な gfsd ホストも書き込み先の対象にします。

  デフォルトでは高負荷な gfsd ホストを書き込み先の対象にしません。 デフォルトでは、すべての gfsd ホストが高負荷の場合にファイルを転送しません。

  高負荷なホストとは、(ロードアベレージ / CPU 数) が gfarm2.conf の schedule_busy_load_thresh よりも高いホストです。 schedule_busy_load_thresh のデフォルト値は gfarm2.conf のマニュアルを参照してください。 CPU 数については gfhost のマニュアルを参照してください。

`-U`

  ファイルシステムノードのディスク空き容量を毎回チェックしなくなります。

`-F` `num-of-dirents`

  ディレクトリエントリの情報を先読みする数を指定します。

  デフォルトは 1000 です。

`-s` `kilobytes-per-sec.`

  シミュレーションする際の転送速度を KB/s で指定します。 実際にはコピーせず、ファイル情報を取得するのみになります。

`-n`

  何もしません。 ディレクトリを辿るだけです。

`-p`

  性能の総合結果を報告します。

`-P`

  性能に関してファイルごとの結果と総合結果を報告します。

`-q`

  警告を表示しません。

`-v`

  冗長な情報を出力します。

`-d`

  デバッグ情報を出力します。

`-?`

  コマンドオプションを出力します。

## EXAMPLES

ディレクトリ以下すべてのファイルを複製作成します。

$ gfprep -N 3 gfarm:///dir

$ cd /mnt/gfarm2fs
$ gfprep -N 3 dir

足りなければ複製を増やし、余分な複製があれば削除します。

$ gfprep -N 3 -x gfarm:///dir/file

gfsd1.example.com にある複製を別のノードに移動します。

$ gfprep -m -S gfsd1.example.com gfarm:///

## NOTES

-L または -m オプションを使用しない場合は、指定した転送元範囲の中から ファイルシステムノードが選ばれるとは限りません。

gfprep コマンドは、 gfmd と同じホストで実行するほうがよいです。 gfmd と gfprep が距離的に離れている場合には、 gfprep の動作が遅くなります。 そのような場合には、-j または -J オプションに大きな値を指定すると、 性能が改善するかもしれません。

## SEE ALSO

gfrep(1), gfpcopy(1), gfhost(1), gfarm2.conf(5)