Perforceの使用開始にあたって: インストールとアップグレード
この章では、Perforceサービスをインストールする方法と、インストール済みのPerforceサーバをアップグレードする方法について説明します。
Warning
インストール済みのPerforceサーバをリリース2005.1以降にアップグレードする場合は、作業開始前に「Perforceサービスをアップグレードする」の注意事項をお読みください。
この章では、インストールの際の注意事項について簡単に概説しながら、セキュリティや管理に関する基本情報を提供します。管理者のタスクの詳細については、後続の章を参照してください。
Windows
PerforceのWindowsバージョンとUNIXバージョンとでは異なる点があります。このマニュアルでは、その違いについて注記しています。とくにWindowsのみに関わる情報については、“PerforceとWindows”を参照してください。
本書で紹介している例の多くは、PerforceサービスのUNIXバージョンに基づいています。ただし大半の場合、こうした例はWindowsとUNIXの両方に共通して当てはまります。
OS X
UNIXに関する説明はMac OS Xにも当てはまります。
Perforceを入手する
Perforceは、最低2つの実行ファイルを必要とします。すなわち、Perforceサービス(p4d)と、少なくとも1つのPerforceアプリケーション(UNIXの場合はp4、Windowsの場合はp4.exe)です。
PerforceサービスおよびアプリケーションはPerforce社のWebサイトのDownloadsページから入手できます。
http://www.perforce.com/downloads/complete_list
上記のウェブページを参照し、お使いのプラットフォームに応じたファイルを選択してディスクに保存してください。
UNIX環境下でのインストール
p4およびp4dはどのディレクトリにもインストールできますが、UNIXでは通常Perforceアプリケーションは/usr/local/bin
に置かれ、Perforceサービスは/usr/local/bin
または独自のサーバルートディレクトリに置かれます。Perforceアプリケーションは、p4dホストにTCP/IPでアクセスできるあらゆるマシンにインストールできます。
Perforceサービスのファイルへのアクセスを制限するには、Perforceサービスを実行する目的で生成されたのユーザアカウントによってp4d実行ファイルを所有し、動作させるようにしてください。
Note
性能を最大限に発揮させるには、サーバルート(P4ROOT
)の場所を、NFSマウントされたボリュームではなく、ローカルディスク上に設定してください。Perforceによるファイルのロックのセマンティクスは、Solaris 2.5.1 以降のNFSマウントで動作します。NFSの非商用実装(例えばLinuxやFreeBSD)上でのファイルロッキングに関しては、いくつかの問題が依然として残っています。メタデータおよびジャーナルデータを別々のドライブに置くことが最も望ましいといえます。
上記の問題は、Perforceサーバプロセス(p4d)のみに影響します。Perforceアプリケーション(p4、Perforceコマンドラインクライアントなど)は、これまで常に、ユーザのホームディレクトリに置かれたクライアントワークスペースなどの、NFSマウントされたドライブ上のクライアントワークスペースでの稼働実績を挙げてきています。
Perforceの使用を開始するには、以下を行います。
-
お使いのプラットフォームに応じたp4およびp4dアプリケーションを、Perforce社のWebサイトからダウンロードします。
-
ダウンロードしたp4およびp4dファイルを実行可能にします。
-
Perforceデータベースおよびバージョンファイルを保持するためのサーバルートディレクトリを作成します。
-
接続待ちのポートをPerforceサービスに通知するために、TCP/IPポートをp4dに指定します。
-
Perforceサービス(p4d)を起動します。
-
P4PORT
環境変数を設定することにより、Perforceアプリケーションで使用するp4dポートとアドレスを設定します。
ファイルをダウンロードして実行可能にする
UNIX(またはMac OS X)では、p4バイナリおよびp4dバイナリを実行可能にする必要があります。ファイルを実行可能にするには、ソフトウェアのダウンロード後にchmodコマンドを以下のように使用します。
chmod +x p4 chmod +x p4d
Perforceサーバのルートディレクトリを作成する
Perforceサービスでは、ユーザによってサブミットされたファイルとシステムによって生成されたメタデータは、独自のルートディレクトリ下のファイルおよびサブディレクトリに保存されます。このルートディレクトリをサーバルートといいます。
サーバルートを指定するには、サーバルートを示す環境変数P4ROOT
を設定するか、p4d起動時に-r
フラグを使用します。Perforceアプリケーションはserver_root
P4ROOT
のディレクトリまたは環境変数を使用することはありません。p4dがP4ROOT
変数を使用する唯一のプロセスです。
Perforceのファイルはすべてサーバルートに保存されるので、サーバルートのコンテンツは時を経るにつれて膨れ上がっていきます。ディスク容量の要件について、概要はインストールと管理に関する基本情報を、詳細はディスク容量の割り当てを参照してください。
Perforceサービスは特権的アクセスを必要としません。また、p4dを、root
またはその他の特権を持つユーザとして実行する必要はありません。詳細については、UNIX: p4dを非特権ユーザとして実行するを参照してください。
サーバルートはどこに置いてもかまいませんが、p4dを実行するアカウントは、サーバルートおよびそのすべての下位ディレクトリに対してread
、write
、execute
のパーミッションを持っている必要があります。セキュリティを確保するために、p4dを実行するアカウントのファイル作成モードマスクumask(1)
は、他のユーザによるサーバルートディレクトリへのアクセスを許可しない値に設定してください。
Perforceサービスに接続待ちするポートを指定する
p4dサービスとPerforceアプリケーションは、TCP/IPで通信します。p4dが起動すると、(デフォルトでは)ポート1666
へのプレーンテキスト接続を待機します。p4などのPerforceアプリケーションは、(デフォルトでは)対応するp4dがperforce
という名前のホスト上に置かれていて、ポート1666
で接続を待っており、その接続がプレーンテキストで行われものと想定します。
p4dに別のポートで接続待ちさせるか、別のプロトコルを使用する場合は、その構成をp4d起動時に-p
フラグで(例えばp4d -p
ssl:1818などと)指定するか、またはprotocol
:host
:port
P4PORT
環境変数の内容で指定します。プレーンテキスト接続はtcp:
port
で指定され、SSL暗号化はssl:
port
で指定されます。(SSLを使用するには、証明書およびキーペアを供給または生成し、サーバ上の安全な場所に格納する必要があります。詳細については、Perforceサーバへの接続を暗号化するを参照してください。)
Note
IPv6サポートを有効にするには、p4d起動時に2つのコロンを使用してワイルドカードアドレスを指定します。例:
p4d -p tcp64:[::]:1818
上記にように指定すると、プレーンテキスト接続を待機するPerforceサービスが、IPv6とIPv4の両方のトランスポートでポート1818において起動されます。同様に、
p4d -p ssl64:[::]:1818
と指定すると、SSLを必要とする、IPv6とIPv4で接続待ちするPerforceサービスが起動されます。
p4d -p ssl6:[::]:1818
と指定すると、SSL接続を必要とする、IPv6接続のみを待機するPerforceサービスが起動されます。
IPv6およびIPv4トランスポートの詳細については、IPv6のサポートと混合ネットワークを参照してください。
P4ROOT
とは異なり、環境変数P4PORT
はPerforceサービスおよびPerforceアプリケーションの両方で使用されます。したがって、Perforceサービスをホストするマシンと各ユーザのワークステーションの両方で設定する必要があります。
Perforceアプリケーションに接続先のポートを指定する
p4dサービスがどのマシン上で接続を待機しているのか、またp4dがどのTCP/IPポートで接続を待機しているか、そして通信がプレーンテキストであるかSSLであるかをPerforceアプリケーションが知っている必要があります。
各PerforceユーザのP4PORT
環境変数を、protocol:host
:
port
に設定します。なお、protocolは通信プロトコル(SSLの場合はssl:
から、プレーンテキストの場合はtcp:
から始まります)、host
はp4dを実行中のマシンの名前、port
はp4dが接続待機中のポート番号です。例:
P4PORT |
動作 |
---|---|
|
Perforceアプリケーションは、ホスト |
|
Perforceアプリケーションは、ホスト |
|
Perforceアプリケーションは、ホスト |
|
Perforceアプリケーションは、 |
SSL接続を有効にした場合、ユーザがサービスへの接続を最初に試みたときに、サーバのフィンガープリントが表示されます。フィンガープリントが正しければ、ユーザはp4 trustコマンド(p4 trust -yまたはp4 -p
ssl:host
:port
trust -i fingerprint
のいずれか)を使用して、フィンガープリントをP4TRUST
環境変数で指定したファイルにインストールすることができます。このファイルには、既知または信頼済みのPerforceサーバおよびそれぞれのフィンガープリントのリストが保存されます。P4TRUST
が設定されていない場合は、このファイルはユーザのホームディレクトリにある.p4trust
になります。
IPv6のサポートと混合ネットワーク
リリース2013.1以降、PerforceではIPv4ネットワークに加えて、IPv6ネットワークでの接続がサポートされるようになりました。
ネットワークサービスの動作とパフォーマンスは、サービスをホストするマシンのネットワーク性能や、エンドユーザが使用するオペレーティングシステムばかりでなく、ユーザ固有のLANまたはWANのインフラストラクチャ(加えて、エンドユーザとPerforceバージョン化サービスの間にあるすべてのルータにおけるIPv6サポート状況)によって異なります。
想定される事例を1つだけ挙げます。ユーザが自宅から作業する場合、そのユーザがIPv6ベースのホームネットワークを配備しているとしても、ISPまたはVPNのプロバイダがIPv6を完全にサポートしているとは限りません。したがって弊社では、P4PORT
の設定としていくつかの選択肢を用意することにより、IPv4からIPv6へ移行中の管理者とユーザが可能な限り柔軟に作業できるようにし、旧バージョンとの互換性を持たせています。
P4PORTプロトコルの値 |
IPv4/IPv6または混合ネットワークでの動作 |
---|---|
|
|
|
|
|
IPv4アドレス/ポートにのみ接続待機または接続します。 |
|
IPv6アドレス/ポートにのみ接続待機または接続します。 |
|
IPv4アドレスへの接続待機または接続を試みます。失敗した場合、IPv6で再試行します。 |
|
IPv6アドレスへの接続待機または接続を試みます。失敗した場合、IPv4で再試行します。 |
|
|
|
IPv4アドレス/ポートにのみ、SSL暗号化を使用して接続待機または接続します。 |
|
IPv6アドレス/ポートにのみ、SSL暗号化を使用して接続待機または接続します。 |
|
IPv4アドレス/ポートに接続待機または接続します。失敗した場合、IPv6で再試行します。接続後は、SSLによる暗号化を必要とします。 |
|
IPv6アドレス/ポートに接続待機または接続します。失敗した場合、IPv4で再試行します。接続後は、SSLによる暗号化を必要とします。 |
混合環境では構成可能変数net.rfc3484
に1を設定することが推奨されます。
p4 configure set net.rfc3484=1
この設定により、RFC3484準拠の動作が、プロトコルの値を明示的に指定していないユーザに対しても保証されます。すなわち、クライアント側の構成可能変数net.rfc3484
に1
が設定され、P4PORT
がexample.com:1666
またはtcp:example.com:1666
、またはssl:example.com:1666
に指定されている場合、ユーザのオペレーティングシステムはそれぞれの接続にIPv4とIPv6のどちらを使用するかを自動的に決定します。
マルチサーバ環境では、サーバ側でnet.rfc3484
を設定すると、サーバからサーバへの(またはサーバからプロキシやブローカへの)通信を開始する際のホスト解決の動作も制御されます。
Perforceサービスを起動する
p4dの環境変数P4PORT
およびP4ROOT
を設定したら、以下のコマンドを使用してバックグラウンドでp4dを実行することにより、サービスを起動します。
p4d &
p4dを実行するだけであればこのコマンドで十分ですが、他にもエラーログ、チェックポイント、ジャーナル作成などを制御する他のフラグを指定することができます。
Example 1. Perforceサービスを起動する
p4dに-p
フラグを指定して実行することにより、P4PORT
をオーバーライドできます(次に挙げる例では、IPv6およびIPv4のトランスポートで、ポート1818において接続を待機します)。またp4dに-r
フラグを指定して実行することによって、P4ROOT
をオーバーライドできます。同様に、-J
フラグでジャーナルファイルを、-L
フラグでエラーログファイルを指定できます。環境変数をオーバーライドする起動コマンドは、例えば以下のようになります。
p4d -r /usr/local/p4root -J /var/log/journal -L /var/log/p4err -p tcp64:[::]:1818 &
-r
、-J
、-L
およびその他のフラグについては、“Perforceのサポート: バックアップとリカバリ”で説明しています。SSLのサポートを有効にするには、Perforceサーバへの接続を暗号化するを参照してください。すべてのフラグを網羅したリストは、Perforceサーバ(P4D)リファレンスに掲載されています。
Perforceサービスを停止する
Perforceサービスを停止するには、以下のコマンドを使用します。
p4 admin stop
p4 admin stopコマンドを使用できるのは、Perforceスーパーユーザのみに限られます。
実行中のPerforceサービスを再起動する
実行中のPerforceサービスを再起動するには(例えば、新しいライセンスファイルを読み込むには)、以下のコマンドを使用します。
p4 admin restart
p4 admin restartコマンドを使用できるのは、Perforceスーパーユーザのみに限られます。UNIXプラットフォームでは、kill -HUPコマンドでサービスを再起動できます。
Windows環境下でのインストール
PerforceをWindows上にインストールするには、Perforce社のWebサイトのDownloadsページから入手できるPerforceインストーラ(perforce.exe)を使用します。
http://www.perforce.com/downloads/complete_list
Perforceインストーラプログラムを使用して、Perforceサービス、Perforceプロキシ、ブローカー、またはPerforceコマンドラインクライアントのインストールおよびアップグレードを行います。
Perforce Visual Client (P4V)などのその他のPerforceアプリケーションの場合や、サードパーティプラグインの場合は、個別にダウンロードおよびインストールを行うことができます。
Windows環境へのインストールの詳細については、Perforceインストーラを使用するを参照してください。
Windowsのサービスとサーバ
このマニュアルでは、Perforceサービスおよびp4dという用語は、WindowsサーバプロセスとWindowsサービスプロセスを明確に区別する場合を除き、いずれも同義で使用されており、ともに「Perforceアプリケーションにバージョン化サービスを提供するプロセス」を意味します。
UNIXシステムでは、バージョン化サービスの提供を担うのは、Perforceサービス(p4d)のみです。ただしWindowsでは、ブート時に実行されるWindowsサービス(p4s.exe)プロセスか、コマンドプロンプトから手動で起動するWindowsサーバ(p4d.exe)プロセスのいずれかとして起動するように構成できます。
Perforceサービス(p4s.exe)とPerforceサーバ(p4d.exe)の2つの実行ファイルはお互いのコピーです。ファイル名が違うだけで、この2つは全く同じものです。実行すると、それぞれの実行ファイルは、起動時に呼び出された名前の最初の3文字(p4sまたはp4dのいずれか)を使用して、それぞれの動作を決定します。(例えば、起動したp4d.exeの名前が、p4smyservice.exeであればサービスとして、あるいはp4dmyserver.exeであればサーバとして起動します。)
デフォルトでは、PerforceインストーラはPerforceをWindowsサービスとして構成します。サービスとサーバの区別の詳細については、WindowsサービスとWindowsサーバを参照してください。
Perforceを起動または停止する
PerforceをWindows環境下にサービスとしてインストールすると、マシン起動時に必ずPerforceサービスが起動します。Perforceサービスの動作を制御するには、
の アプレットを使用します。PerforceをWindows環境下でサーバとしてインストールした場合、p4d.exeの起動にはコマンドプロンプトを使用します。Windows環境下のp4dで使用できるフラグは、UNIXで使用できるフラグと同じです。
Perforceサービス(またはサーバ)を停止するには、以下のコマンドを使用します。
p4 admin stop
p4 admin stopコマンドを使用できるのは、Perforceスーパーユーザのみに限られます。
これ以前のバージョンのPerforceでは、サービスを手動で停止するのにCTRL+Cと入力するか、コマンドプロンプトウィンドウの[閉じる]アイコンをクリックします。この方法により手動でサーバをシャットダウンすることは必ずしもスマートな方法ではありません。ベストプラクティスは、p4 admin stopコマンドを使用することです。
の アプレットを使用します。実行中のサーバをコマンドプロンプトウィンドウでシャットダウンするには、ウィンドウ内にPerforceサービスをアップグレードする
Perforceのアップグレードを行う際には、必ずPerforceインストレーションのバックアップを取ってください(手順についてはバックアップ手順を参照してください)。
Warning
Perforceサービスをアップグレードする前に、必ずアップグレードのインストールに関連するリリースノートをお読みください。
2013.2(またはそれ以前)のリリースから2013.3(またはそれ以降)のリリースへアップグレードするには、必ずチェックポイントからデータベースを復元してください。プロセスの概要についてはデータベースツリーのバランス回復のためのチェックポイントを、またこの種のアップグレードに関する説明についてはp4dをリリース2013.2から2013.3へアップグレードするを参照してください。
複製環境および分散環境(Perforceサーバ管理者ガイド: マルチサイト展開)では、すべてのレプリカサーバはマスターサーバと同一レベルのリリースである必要があります。何らかの機能をアップグレードすることがマスターサーバで必要になると、レプリカサーバでも同じことが必要になります。逆もまた然りです。
アップグレード後に古いPerforceアプリケーションを使用する
古いバージョンのPerforceアプリケーションを新しいバージョンのPerforceと併用しても基本的には問題なく動作しますが、新しいサーバリリースにおける機能のなかにはPerforceアプリケーションのアップグレードを必要とするものもあります。ユーザが古いアプリケーションを使用している場合、概して、使用中のアプリケーションのリリース時点におけるPerforceバージョニングサービスの各種機能を使用できますが、それ以降のサービスのアップグレードによって提供される新機能を使用することはできません。
ライセンスの取得とアップグレード
Perforceを新しいバージョンにアップグレードするには、Perforceライセンスファイルが有効である必要があります。有効期間を過ぎたライセンスファイルは、アップグレード後のバージョンのPerforceでは使用できません。
p4dをアップグレードする
アップグレード前のバージョンおよびアップグレード後のバージョンが、両方とも2013.3以降であるか、または両方とも2013.2以前である場合は、この節で説明する手順を実行してください。
アップグレード手順の詳細については、リリースノートをお読みください。
Warning
2013.2(またはそれ以前)のリリースから2013.3(またはそれ以降)のリリースへアップグレードするには、必ずチェックポイントからデータベースを復元してください。プロセスの概要についてはデータベースツリーのバランス回復のためのチェックポイントを、またこの種のアップグレードに関する説明についてはp4dをリリース2013.2から2013.3へアップグレードするを参照してください。
Perforceのアップグレードでは、一般的に以下の操作が必要です。
-
Perforceサービス(p4 admin stop)を停止します。
-
チェックポイントを作成し、古いインストールのバックアップを取得します(バックアップ手順を参照してください)。
-
p4d実行ファイルを、アップグレード後のバージョンと置き換えます。
UNIXでは、Perforceウェブサイトからp4dの新しいバージョンをダウンロードし、古いバージョンと置き換えます。Windowsでは、Perforceインストーラ(perforce.exe)を使用すると、インストーラが自動的に実行ファイルを置き換えます。
-
アップグレードの形態によっては(例えば1000を超えるチェンジリストがあるインストールや、相当規模のデータベースの変更をともなうアップグレードの場合は)、データベースを手動でアップグレードする必要があります。それには以下のコマンドを実行します。
p4d -r
server_root
-Jjournal_file
-xuこのコマンドの完了には時間がかかる可能性があります。アップグレードを完了するには十分なディスク容量が必要です。
-
Perforceサービスを、使用中のサイトの通常のパラメータで再起動します。
アップグレード中に不明な点や障害が発生した場合、Perforceテクニカルサポートへご連絡ください。
p4dをリリース2013.2から2013.3へアップグレードする
アップグレード前のバージョンが2013.2以前であり、かつアップグレード後のバージョンが2013.3以降である場合、このセクションで説明する手順を実行してください。
Perforce 2013.3では、Perforceデータベースの実装に関する大きな変更点が複数あります。これらの変更により、同時並行処理能力とスケーラビリティが向上し、db.*
データベースのファイル容量制限が16TBにまで増加しています。
db.*
データベースのファイル形式は変更されましたが、チェックポイントおよびジャーナルファイルの形式は以前のバージョンと変わりありません。2013.2(またはそれ以前)のリリースから2013.3(またはそれ以降)のリリースへアップグレードするには、必ずチェックポイントからデータベースを復元してください。これを行うには、
-
Perforceサービス(p4 admin stop)を停止します。
-
チェックポイントを作成し、インストールされている古いバージョンのバックアップを取得します(バックアップ手順を参照してください)。
-
tiny.db
というファイルが古いバージョンのサーバルートに存在する場合は、別にバックアップを作成するために古いp4dに対して以下のコマンドを実行します。p4d -xf 857 > tiny.ckp
-
古い
db.*
ファイルを削除するか、あるいは可能であれば、万が一アップグレードが失敗した場合に備えて、安全な場所へそれらのファイルを移動します。mv
your_root_dir
/db.* /tmpチェックポイントからデータベースを再構築する際には、前もって
db.*
ファイルがP4ROOT
ディレクトリに存在しない状態にしておく必要があります。これ以降、古いdb.*
ファイルがふたたび使用されることはありませんが、アップグレードが確実に成功したといえる段階までは削除しないことを推奨します。 -
rdb.lbr
ファイルが存在する場合は、そのファイルを削除します。rdb.lbr
ファイルは、(ローカルの)レプリカに転送されなければならないファイルを追跡しつづけており、アップグレードを進めている間に古くなっている可能性があります。ただし、このファイルが存在するのは、Perforceサービスをレプリカとして構成していた場合に限られます。 -
古い(2013.2以前の)p4d実行ファイルを、新しい(2013.3以降の)p4d実行ファイルと置き換えます。
p4dを置き換えたら、この段階ではまだp4d -xuコマンドを実行しないでください。このアップグレード手順では、既存のデータベースはアップグレードされていません。既存のデータベースは、この時点では完全に削除されており、つい先ほど作成したチェックポイントに基づいて後で再構築されることになります。
-
アップグレードしたp4dを使用して、チェックポイントの再生と新しいデータベーステーブルの再構築を行います。
p4d -r $P4ROOT -jr
checkpoint_file
-
Perforceテクニカルサポートから取得したメッセージファイルに基づいてローカライズしたサーバメッセージをサイトで使用している場合、オリジナルの
message.txt
を取得し、db.message
を新しいデータベース形式で再作成します。それには、新しいp4dに対して次のコマンドを実行します。p4d -jr /
fullpath
/message.txt詳細についてはサーバエラーメッセージをローカライズするを参照してください。
-
バックアップ手順の実行中に
tiny.ckp
ファイルを作成した場合は、新しいp4dに対して以下のコマンドを実行することによってtiny.db
を復元します。p4d -xf 857 tiny.ckp
-
Perforceデータベースに対してp4d -xuを実行し、データベースのスキーマを更新します。
p4d -r $P4ROOT -J
myJournal
-xu -
Perforceサービスを再起動し、操作を再開します。
インストールと管理に関する基本情報
リリースおよびライセンス情報
Perforceバージョン化サービスは、サポートするユーザの数に応じてライセンスされます。
ライセンス情報は、サーバルートディレクトリのlicense
というファイルに含まれています。license
ファイルは、Perforceソフトウェアによって供給されるプレーンテキストファイルです。license
ファイルがない場合、Perforceサービスは20人のユーザと20のクライアントワークスペース(ファイル数は無制限)、または無制限のユーザとワークスペース(ファイル数の上限は1000)のいずれかにアクセスを制限します。p4 licenseコマンドを使用すると、Perforceを停止せずに既存のファイルを更新できます。詳細については、新規ライセンス許可ユーザを追加するを参照してください。
サービスの実行中は、どのユーザでもp4 infoを使用すれば基本的なライセンス情報を確認できます。管理者はp4 license -uを使用して、使用中のユーザ数とファイル数に関してより詳しい情報を取得できます。
サービスの停止中でも、license
ファイルが置かれているサーバルートディレクトリからp4d -Vを実行するか、コマンドライン(p4d -V -r
server_root
)または環境変数P4ROOT
のいずれかでサーバルートディレクトリを指定することにより、ライセンス情報を取得できます。
サーバのバージョンは、p4d -Vまたはp4 -Vを実行することによっても表示されます。
適切なバックアップ手順を順守する
Perforceを定期的にバックアップしておくことはきわめて重要です。要点は以下の通りです。
-
ジャーナル作成がアクティブであることを確認する。
-
チェックポイントを定期的に作成する。
-
p4 verifyを定期的に使用する。
バックアップとリストアの手順の詳細については、“Perforceのサポート: バックアップとリカバリ”を参照してください。
サーバルートとジャーナルに別々の物理ドライブを使用する
インストール先のシステムがUNIXとWindowsのいずれであっても、P4ROOT
ディレクトリ(すなわちデータベースおよびバージョンファイルを格納しているディレクトリ)は、ジャーナルファイルとは別の物理ドライブに置くことを推奨します。
ジャーナルを別のドライブに保存しておけば、たとえP4ROOT
を含むドライブがディスク故障により破損したとしても、その影響が使用中のジャーナルファイルにおよぶことはありません。その場合、ジャーナルファイルを使用して、消失または損傷したメタデータをすべて復元することができます。
詳細については、“Perforceのサポート: バックアップとリカバリ”を参照してください。
プロテクションとパスワードを使用する
管理者がPerforceスーパーユーザを定義しない限り、すべてのPerforceユーザは、Perforceスーパーユーザと同等の権限を持ちながら、あらゆるファイルに対してあらゆるPerforceコマンドを実行できます。新しいPerforceサービスのインストール後、管理者はできるだけすみやかに
p4 protect
を使用して、Perforceスーパーユーザを定義してください。p4 protectの動作の詳細は、“Perforceの管理: 保護”を参照してください。
パスワードを定義していない場合、すべてのユーザは、-u
フラグを使用するか、P4USER
に既存のPerforceユーザ名を指定することにより、他のPerforceユーザとして操作する(なりすます)ことができます。このようななりすましを防ぐには、Perforceパスワードを使用してください。詳細については、『P4ユーザ-ズガイド』を参照してください。
ユーザのパスワードを設定(またはリセット)するには、(Perforceスーパーユーザとして)p4 passwd
username
を使用して該当ユーザの新しいパスワードを入力するか、(やはりPerforceスーパーユーザとして)p4 user -f
username
を実行してユーザ仕様フォームに新しいパスワードを入力します。
セキュリティ意識の高いPerforceスーパーユーザであれば、p4
protectを使用して、list
よりも高いレベルのアクセスを非特権ユーザに対して許可しないように設定し、またp4
configureを使用して、すべてのユーザに強力なパスワードの使用を要求するようにsecurity
レベルを変更し、さらにp4 groupを使用して、すべてのユーザをグループに振り分ける(と同時に、必要に応じて、任意のグループを指定してその所属ユーザにパスワードの定期的な変更を要求したり、サイト内のすべてのユーザにパスワードの最小文字数を設定したり、事前に定義した回数だけログイン試行に失敗したユーザアカウントをロックしたりする)べきです。
データの増加を予想したうえで十分なディスク容量を割り当てる
バージョン化ファイルの合計サイズは時を経るにつれて膨れ上がっていくため、使用中のP4ROOT
ディレクトリ内に十分な空き容量を割り当てることを推奨します。その容量としては、まずバージョンファイルの現在の合計サイズの3倍をベースとし、さらにディポファイル、ファイルの状態、ファイルリビジョン履歴のリストの格納用データベースファイルを保存するのに1ファイル当たり0.5KBにユーザ数をかけた合計の容量を加えるとよいでしょう。
ディスクサイズの推定方法の詳細については、ディスク容量の割り当てを参照してください。
インストール後のディスク容量の管理
Perforceのバージョン化ファイルはすべて、データベースファイルや(デフォルトでは)チェックポイントおよびジャーナルと同様に、サーバルート以下のサブディレクトリにあります。ディスク容量が少なくなっている場合、ディスク容量の使用を制限するために以下のアプローチを検討してください。
-
Perforceの設定により、ジャーナルファイルを別の物理ディスク上に保存します。環境変数
P4JOURNAL
またはp4d -Jを使用して、ジャーナルファイルの場所を指定します。 -
1日単位でチェックポイントを作成することにより、ジャーナルファイルのサイズを抑えます。
-
チェックポイントを圧縮するか、
-z
オプションを使用してチェックポイントの作成中にオンザフライで圧縮するようにp4dに指示します。 -
-jc
オプションとp4dコマンドを使用して、チェックポイントを別のディスクに書き出します。または、デフォルトのチェックポイントファイルを使用する場合は、チェックポイントを別のドライブにバックアップしてから、コピーしたチェックポイントをルートディレクトリから削除します。チェックポイントを別のドライブへ移動することが推奨されるのは、ディスク容量の観点からばかりではなく、ハードウェアの故障後にリカバリを行う場合に古いチェックポイントが必要になるからでもあります。チェックポイントとジャーナルファイルが使用中のディポと同じディスク上に置かれている場合、ハードウェアの故障時にデータベースを復元できなくなるおそれがあります。prefix
-
UNIXシステムでは、シンボリックリンクを使用することにより、ディポディレクトリの一部またはすべてを他のディスクへ再配置できます。シンボリックリンクを使用してディポファイルを他のボリュームへ移す場合、Perforceサービスを停止させてからリンクを作成します。
-
インストールした環境下のデータベースファイルがチェックポイントのサイズの10倍を超えた場合、チェックポイントからそれらのファイルを作成しなおすとサイズを減少できる可能性があります。詳細については、データベースツリーのバランス回復のためのチェックポイントを参照してください。
-
使用中の環境全体または指定した箇所で消費しているディスク容量の合計を監視するには、p4 diskspaceおよびp4 sizesコマンドを使用します。詳細については、ディスクの空き容量を監視するを参照してください。
-
頻繁にアクセスされなくなった大きなバイナリファイルがある場合、アーカイブディポを作成してからp4 archiveコマンドを使用することにより、これらのファイルを大容量のニアラインまたはオフラインの記憶領域へ移すことを検討してください。詳細については、ファイルのアーカイブによりディスク容量を再生するを参照してください。
大容量ファイルシステムのサポート
最初期のバージョンのPerforce(概して98.2以前)では、一部の古いオペレーティングシステムと同様に、Perforceデータベースファイル(使用中のサイトのメタデータを記録しているP4ROOT
ディレクトリ中のdb.*
ファイル)のサイズが最大2 GBまでに制限されています。db.have
ファイルには、現在クライアントワークスペースと同期しているファイルのリストが記録されているため、そのファイルサイズは最も急速に増大する傾向があります。
Perforceデータベースファイルのいずれかのサイズが増大して2 GBを超えることが予想されたら、大容量ファイルをサポートするプラットフォームにPerforceサーバをインストールしてください。
Windows: ネットワークドライブにはユーザ名とパスワードが必要
デフォルトでは、Perforceサービスは、WindowsのローカルSystem
アカウントのもとで動作します。Windowsでネットワークドライブ上のファイルにアクセスするにはリアルアカウント名とパスワードが必要であるため、WindowsにPerforceをインストールしてP4ROOT
にネットワークドライブを指定すると、インストーラはアカウント名とパスワードを要求します。入力すると、Perforceサービスは提供されたデータに基づいて構成され、System
ではなく指定したユーザとして動作します。(サービスを実行するアカウントは、そのマシン上でAdministrator
の権限を持っていなければなりません。)
Perforceは、ルートディレクトリがネットワークドライブ上にあっても信頼できる動作をしますが、パフォーマンスが相当低下してしまいます。これは、データベースへの書き込みがすべてネットワークを経由して実行されるためです。最適なパフォーマンスを獲得するには、ネットワークドライブではなくローカルドライブを使用してWindowsサービスをインストールします。
詳細についてはネットワークドライブにPerforceサービスをインストールするを参照してください。
UNIX: p4dを非特権ユーザとして実行する
Perforceではアクセスの際に特権を要求しません。セキュリティを確保するには、p4dをroot
として動作させないようにするか、またはp4dプロセスの所有者にroot
レベルの特権を与えます。
p4dを管理するUNIXの非特権ユーザ(例えばperforce
)を作成し、(必要に応じて)そのユーザのためにUNIXグループ(例えばp4admin
)を作成します。umask(1)コマンドを使用して、サーバルート(P4ROOT
)およびそれ以下に作成されているすべてのファイルとディレクトリの書き込みをUNIXユーザperforce
のみに許可し、さらに(必要に応じて)その読み込みをUNIXグループp4admin
のメンバーに許可します。
この設定では、Perforceサービス(p4d)は実行中にUNIXユーザperforce
としてサーバルートのファイルに書き込むことができる一方で、どんなユーザもそれらのファイルを読み込みまたは上書きできません。p4dによって作成されたファイル(つまりディポファイル、チェックポイント、ジャーナルなど)へのアクセス権を、信頼されるユーザに与えるには、それらのユーザをUNIXグループp4admin
に追加します。
Windows
Windows上では、ディレクトリのパーミッションはデフォルトでセキュアに設定されています。PerforceがWindowsサーバとして動作する場合、サーバルートへアクセスできるのは、コマンドプロンプトからp4d.exeを起動したユーザのみに限られます。Perforceがサービスとしてインストールされている場合、ファイルの所有者はLocalSystem
であり、Administrator
権限を有する場合にのみファイルにアクセスできます。
エラーを記録する
Perforceのエラー出力ファイルを指定するには、p4dに-L
フラグを付けて使用するか、環境変数P4LOG
を使用します。エラー出力ファイルが定義されていない場合、エラーはp4dプロセスの標準エラーとしてダンプされます。p4dはすべてのエラーメッセージをユーザへ確実に届けることを試みますが、エラー発生後、そのエラーが受信される前にユーザアプリケーションの接続が解除された場合、p4dはこうしたエラーをエラー出力ファイルに記録します。
Perforceでは、デバッグ用のトレースフラグもサポートされています。詳細については、Perforceサーバトレースおよび追跡用オプションを参照してください。
ファイルへのアクセスを記録する
サイトでユーザからファイルへのアクセスを追跡する必要がある場合は、p4dを-A
フラグ付きで使用するか、環境変数P4AUDIT
を使用することにより、監査を有効にしてPerforceの監査ログファイルを指定します。監査が有効になっている場合、ユーザがファイルにアクセスするたびに、その記録が監査ログファイルに保存されます。このオプションは、アクティブなシステム上で相当のディスク容量を消費する可能性があります。
詳細については、ユーザのファイルアクセスの監査を参照してください。
大文字と小文字の区別
Perforceバージョン化サービスをホストする環境がWindowsとUNIXのいずれであるにせよ、サイトでクロスプラットフォーム開発が行われている場合(つまりPerforceアプリケーションをWindowsとUNIXの両方の環境で使用している場合)、ユーザは大文字と小文字の区別に関する問題の詳細についてもある程度知っておく必要があります。
詳細については、大文字と小文字の区別とマルチプラットフォーム開発を参照してください。
プロセスの監視を有効にする
Perforceは、バージョン化サービスをホストするマシン上で稼働中のプロセスに関する情報を追跡します。プロセスの監視に必要なシステムリソースは最小限で済みますが、p4 monitorを使用してプロセスを監視するにはその機能を有効にする必要があります。
プロセスの監視を有効にするには、monitor
構成可能変数を以下のように設定します。
p4 configure set monitor=1
詳細については、サーバの動作を監視するを参照してください。
パフォーマンスの調整
Perforceは、ネットワークの帯域幅やCPUの処理能力を効率よく消費します。パフォーマンスを左右する最も重要な要素は、ホストマシンのディスクI/Oサブシステムの効率性と、ユーザ由来の任意のPerforce操作で参照されるファイルの数です。
パフォーマンス調整の詳細については、“Perforceのパフォーマンス調整”を参照してください。