Helix Core P4コマンドリファレンス (2020.1)

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 -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コマンドで削除するためのマークを付けます。

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

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

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

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

詳細については、「ファイルタイプ」を参照してください。

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

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

actualSize ライブラリアンファイルの実際のサイズ
actualDigest ライブラリアンファイルの実際のMD5ダイジェスト
status 検証結果(OKBADMISSINGのいずれか)

オプション

-v

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

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

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

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

-u

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

-q

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

-d

参照されていないアーカイブが削除されます。 指定したアーカイブの参照カウントが「0」の場合、そのアーカイブが記述されているデータベース行と、ベースアーカイブのリビジョンが削除されます。

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

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

有効期限は、 lbr.storage.delay構成可能変数を使用して設定します。 有効期限を設定することにより、サブミット処理や保留処理の進行中にストレージレコードやアーカイブファイルが誤って削除されるのを防ぐことができます。 この構成可能変数の値を上書きする場合は、コマンドラインで-D secsパラメータを指定します。

参照カウントが「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サーバ管理者ガイド』を参照してください。

-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