p4 storage

物理的なアーカイブストレージの表示、検証、更新を行う場合は、このコマンドを使用します。

構文規則

p4 [g-opts] storage [-v [-q]] [-c change] [-T tags -F filters] [-m max] archive...
p4 [g-opts] storage -u [-c change] [-T tags -F filters] [-m max] archive...
p4 storage -d [-c change] [-y] [-D secs] [ -t target ] [-q] archive...
p4 storage -w
p4 storage -U [-q] archive...
p4 storage -l start|pause|restart|wait|status|cancel //depotdirectory/... 

説明

adminアクセス権を持つユーザは、以下のコマンドを使用して、サーバ上のアーカイブファイルに関する情報とその使用状況を表示することができます。

p4 storage [-v [-q]] [-c change] [-T tags -F filters] [-m max] archive...

-lオプションを使用して、孤立したアーカイブファイルを検索するためのコマンドグループを指定し、それらのファイルをstorage -dコマンドで削除するためのマークを付けます。

ヒント

ファイルが削除されるまでのデフォルトの遅延時間は86400秒(24時間)ですが、この値は変更することができます。「オプション」で、-dオプションの説明を参照してください。

詳細については、『Helix Coreサーバ管理者ガイド』の「ディスク容量を管理する」で、「孤立したアーカイブファイルを削除してディスクスペースを解放する」を参照してください。

表示情報が格納されるフィールドを以下に示します。

lbrFile アーカイブファイルのパス
lbrRev アーカイブファイルのリビジョン
lbrType

アーカイブファイルのファイルタイプ(text+Cなど)

ファイルタイプ」を参照してください。

lbrRefCount アーカイブファイルを参照するリビジョンの数
headTime レコードが書き込まれたときのタイムスタンプ
filesize アーカイブファイルに保管されるリビジョンのサイズ
digest アーカイブファイルに保管されるリビジョンのMD5ダイジェスト
serverSize リビジョンのサブミット時または保留時にサーバ上のアーカイブファイルに存在していた アーカイブファイルのサイズ
compCksum サーバ上のリビジョンが含まれているアーカイブファイルのMD5 (そのアーカイブファイルが 圧縮されていて、submit.storagefieldsの値が「1」である場合)

-vフラグを指定すると、以下のフィールドが追加で使用されます。

actualSize アーカイブファイルに保管されるリビジョンの実際のサイズ
actualDigest アーカイブファイルに保管されるリビジョンの実際のMD5ダイジェスト
status 検証結果(OKBADMISSINGのいずれか)

2019.1よりも前のバージョンからのアップグレード

Perforceデータベースに多数のキー付きリビジョンが存在している状態で、2019.1よりも前のバージョンのHelixサーバをアップグレードする場合、アップグレードプロセスの実行中にストレージダイジェストを計算して、遅延発生のリスクを回避することをお勧めします。その場合は、-Uオプションを使用してください。

オプション

-v

指定したアーカイブファイルが変更されていないかどうかが確認されます。各アーカイブファイルのダイジェストが計算されて表示されます。

  • アーカイブ内にファイルが存在しないなどの理由でアーカイブを再生成できない場合、そのアーカイブの出力行の最後に「MISSING!」というテキストが表示されます。
  • 保存されたダイジェストが存在する場合、p4 storageコマンドを実行すると、そのダイジェストが計算後のダイジェストを比較されます。比較結果が一致しない場合は、出力行の最後に「BAD!」というテキストが表示されます。

p4 storage -vコマンドとp4 verifyコマンドは似ていますが、以下の点が異なっています。

  • p4 storage -vコマンドの場合、ストレージテーブルのlbrPathに対してarchive...引数が比較されます。
  • p4 verifyコマンドの場合、リビジョンテーブルのdepotpathフィールドに対してarchive...引数が比較されます。

-u

保存されたダイジェストが存在しないリビジョンについてのみ、ダイジェストの計算と保存が実行されます。

-q

storage -vコマンドで、最低限の出力が表示されます(ダイジェストの不一致エラー、またはリビジョンの再生成エラーのみが表示されます)。

-d

参照されていないアーカイブが削除されます。以下に示す2つの条件の両方に該当する場合、 アーカイブが記述されているデータベース行と、ベースアーカイブのリビジョンが削除されます。

  • 指定したアーカイブの参照カウントが「0」になっている。

  • ストレージレコードの経過時間が、lbr.storage.delay構成可能変数で設定された有効期間の86400秒(24時間)を超えている。有効期限を設定することにより、サブミット処理や保留処理の進行中にストレージレコードやアーカイブファイルが誤って削除されるのを防ぐことができます。この構成可能変数の値を上書きする場合は、コマンドラインで-D secsパラメータを指定します。例えば、1分間遅延させる場合は、p4 storage -d -D 60 -y //depot/path/...と指定します。

-yオプションを指定せずにコマンドを実行した場合、削除対象のファイルとリビジョンが一覧表示されるのみで、実際に削除されることはありません。

-yオプションを指定してコマンドを実行した場合、ファイルとリビジョンのみでなく、まったく参照されていないストレージレコードも削除されます。

参照カウントが「0」になっているアーカイブはほとんどありませんが、以下の場合にこうしたアーカイブファイルが作成される可能性があります。

  • p4 submitコマンドやp4 shelveコマンドが途中で終了した場合、システムがクラッシュした場合、その他のエラーが発生した場合
  • p4 storage -l start //depotdirectory/...

-qオプションを指定すると、削除候補のリビジョンの一覧が表示されなくなります。

-tオプション(targetオプション)を指定すると、参照されていないアーカイブがサーバのP4ROOTから削除される前に、指定したディレクトリにそのアーカイブがコピーされます。

-c このオプションは、指定したチェンジリストに適用されます。
-T

このオプションは、指定したタグに適用されます(複数のタグを指定する場合は、コンマまたはスペースを区切り文字として使用します)。

例: -T "lbrFile, lbrRev"

-F

このオプションは、指定したフィルタに適用されます。フィルタ式に一致するレコードのみが一覧表示されます。 このフィルタ式の構文は、jobs -e jobviewで使用される構文に似ています。 この構文を使用して、上記の各フィールドの内容が評価されます。 フィルタリングでは、大文字と小文字が区別されます。

例: -v -F "lbrRefCount = 1 & status=OK"

-m 出力が、指定した件数のレコードのみに制限されます。

-w

アップグレードプロセスの完了時に「The storage upgrade process is complete」というメッセージが表示されます。バージョン2019.1以降にアップグレードする方法については、『Helix Coreサーバ管理者ガイド』を参照してください。

-U

アップグレード時のダイジェスト計算による遅延を回避するには、キーワードリビジョンを スキップするようにlbr.storage.skipkeyed構成可能変数を設定し、ストレージをアップグレードしてから、 -Uオプションを使用することをお勧めします。

このオプションを指定すると、未設定のダイジェストフィールドが検索されて、 すべてのストレージレコードが読み込まれます。未設定のダイジェストが検出されると、 ダイジェストフィールドとサイズフィールドが再計算されてから、レコードが更新されます。

p4 storage -U -qコマンドを実行すると、進行状況に関するメッセージが非表示になります。

-Uオプションまたは-U -qオプションを使用するには、superアクセス権限が必要になります。

-l

 

管理者は、孤立したファイルを検索してマーキングするためのバックグラウンドプロセスについて、作成、一時停止、再開、キャンセルを行うことができます。

このプロセスは、指定された//depotdirectory内と、サーバのアーカイブファイル形式の 命名規則に一致するサブディレクトリ内で、ファイルを検索します。 検索されたファイルとそのリビジョンは、 db.storageテーブル内の一致するエントリに対して確認されます。 一致するエントリがない場合は、ファイルとリビジョンの組み合わせを記述する 新しいレコードが作成され、参照カウントとして「0」が設定されます。

その後p4 storage -dを呼び出すと、まったく参照されていないレコードとそれに関連するアーカイブリビジョンが削除されます。

p4 storage -lコマンドには、以下に示すサブコマンドがあります。

start

 

指定された//depotdirectoryディレクトリ内で新しいバックグラウンドディポスキャンタスクを開始し、このディレクトリとそのすべてのサブディレクトリをスキャンします。//...の特殊引数//depotdirectoryは、ディポテーブルに登録されているすべてのローカルディポ(ローカルストリームディポを含む)を検索し、それらのディポの最上位ディレクトリとサブディレクトリをスキャンすることによって処理されます。

実行できるバックグラウンドプロセスの数に制限はありません。ただし、ハードウェアとオペレーティングシステムについては、制限があります。アーカイブ内の各ディレクトリのみを、単一スキャンの対象にすることができます。

スキャンの途中でサーバをシャットダウンした場合、そのスキャンが「paused」としてマーキングされます。管理者はサーバの起動時に、そのスキャンを手動で再開することができます。

pause 指定されたバックグラウンドスキャンプロセスを一時停止します。
restart

指定された一時停止中のバックグラウンドスキャンプロセスを再開します。

スキャンの途中でサーバをシャットダウンした場合、そのスキャンが「paused」としてマーキングされます。管理者はサーバの起動時に、そのスキャンを手動で再開することができます

wait

指定されたバックグラウンドスキャンプロセスが完了するまで、 またはエラーで終了するまで待機します。

waitサブコマンドの動作は以下のようになっています。

  • 何も出力を返しません。スキャナの状態がアクティブではなくなった場合に(doneerrorpausedのいずれかの状態になった場合に)、制御を呼び出し元に返します。
  • 1つのスキャナタスク上で、プロセスの終了を待機します。 例えば//...を指定した場合、すべてのローカルディポを検索する スキャナタスクが1つだけ実行されます。
status

//...の特殊引数が指定された場合は、すべてのバックグラウンドスキャンプロセス上で レポート処理を実行します。それ以外の場合は、指定されたバックグラウンド スキャンプロセス上でレポート処理を実行します。 各スキャンプロセスで、以下のフィールドが表示されます。

scanName スキャンの名前です。これは、スキャンのパスとしてstartサブコマンドに 渡される引数です。
ワークフローの例」を参照してください。
state donepausedrunbusyerrorのいずれかになります。
dirsProc 処理されたディレクトリの数。
filesProc 処理されたファイルの数。
zeroRecs

作成されてから一度も参照されていないストレージレコードの数。 これは、対応するストレージレコードが存在しない孤立状態のリビジョンの数です。

dirsErrs エラーのためにスキップされたディレクトリの数。
errmsg ステータスが「error」の場合に表示されるエラーメッセージ。
cancel システムからスキャンプロセスを削除します。スキャンプロセスは、キャンセルされるまでシステム上に残ったままになります。 スキャンをもう一度実行する場合は、最初にpauseサブコマンドでスキャンを一時停止してから(スキャンがアクティブな状態になっている場合)、cancelサブコマンドでスキャンをキャンセルします(スキャンが正常に完了したかエラーで終了したかにかかわらず、スキャンをキャンセルしてください)。
警告
  • スキャンを実行するには、スキャンディレクトリ内の単一パスを使用して各ファイルのアドレスを指定する必要があります。シンボリックリンクが存在する場合、この要件が成立しない可能性があります。デフォルト設定の場合、シンボリックリンクが検出されると、スキャナからエラーが返されます。シンボリックリンクを許可するには、構成可能変数lbr.storage.allowsymlinkの値を「1」に設定します。すべてのシンボリックリンクが、スキャン対象のディレクトリに含まれていないファイルとディレクトリのみを参照している場合に限り、この変数の値を「1」に設定してください。
  • サーバ間でディポが共有されている場合、スキャナを実行することはできません。

g-opts

グローバルオプション」を参照してください。

ワークフローの例

孤立ファイルの検索

スキャンを開始するには、以下のように指定します。

p4 storage -l start //depot/path/...

スキャンのステータスを確認するには、以下のように指定します。

p4 storage -l status //depot/path/...

スキャンを一時停止するには、以下のように指定します。

p4 storage -l pause //depot/path/...

一時停止を解除してスキャンを再開するには、以下のように指定します。

p4 storage -l restart //depot/path/...

スキャンをキャンセルするには、以下のように指定します。

p4 storage -l cancel //depot/path/...

注意

スキャンプロセスは、キャンセルされるまでシステム上に残ったままになります。 スキャンをもう一度実行する場合は、最初にpauseサブコマンドでスキャンを一時停止してから(スキャンがアクティブな状態になっている場合)、cancelサブコマンドでスキャンをキャンセルします(スキャンが正常に完了したかエラーで終了したかにかかわらず、スキャンをキャンセルしてください)。

サーバ上のディスクスペースを解放する

孤立ファイルをターゲットディレクトリに保存し、一度も参照されていないレコードとそれに関連するアーカイブファイルをサーバのP4ROOTから削除するには、以下のように指定します。

p4 storage -d -y -t /myTargetDirectory //depot/path/...

/myTargetDirectoryは、オペレーティングシステム上のターゲットディレクトリです。例えばWindowsの場合、D:\myCopyOfOrphanedFilesなどがターゲットディレクトリになります。

使用上の注意点

ファイル引数でリビジョン指定子を使用できるか? ファイル引数でリビジョン範囲を使用できるか? 最低限必要なアクセスレベル

いいえ

いいえ

admin権限、
-Uオプションを使用する場合はsuper権限