# 管理の手引き

# クライアント・マシンとキャッシュ・マネージャーの管理

この章では、ユーザーがそこから AFS ファイル・スペースにアクセスし、AFS サーバー・プロセスと通信することができる任意のマシンである AFS クライアント・マシンについて説明します。(クライアント・マシンを適切に構成すると、クライアント・マシンは同時に AFS サーバー・マシンとして機能することができます)。AFS クライアント・マシンの特徴は次のとおりです。

- カーネルが、AFS ファイルおよびディレクトリーへのアクセスを可能にする、一般にキャッシュ・マネージャーと呼ばれる変更セットを含む。キャッシュ・マネージャーの多くの機能をユーザーのニーズに沿って構成することができます。 キャッシュ・マネージャーの概要を参照してください。
- ローカル・ディスク上の /usr/vice/etc ディレクトリーが、いくつかの構成ファイルを保管する。 /usr/vice/etc ディレクトリー内の構成ファイルを参照してください。
- AFS ファイル・サーバー・マシンからフェッチしたデータの一時的なコピーを保管するキャッシュが存在する。キャッシュ・タイプ、サイズ、およびロケーションを決定する および afsd プログラムを使用してその他のパラメーターを設定するを参照してください。

マシンへクライアント機能を導入する方法について確認するためには、AFS インストールの手引き を参照してください。

## 説明の要約

この章では、以下のタスクを、その隣に示されたコマンドを使用して実行するための方法について説明します。

リブート時のキャッシュ・サイズの設定を表示する | cat /usr/vice/etc/cacheinfo
現行のキャッシュ・サイズおよび使用を表示する | fs getcacheparms
リブートせずにディスク・キャッシュ・サイズを変更する | fs setcachesize
キャッシュ・マネージャーを初期化する | afsd
CellServDB ファイルの内容を表示する | cat /usr/vice/etc/CellServDB
カーネル・メモリー内のデータベース・サーバー・マシンのリストを表示する | fs listcells
カーネル・メモリー内のデータベース・サーバー・マシンのリストを変更する | fs newcell
セルの setuid の状況を検査する | fs getcellstatus
セルの setuid の状況を設定する | fs setcell
サーバーのプローブ間隔を設定する | fs checkservers -interval
マシンのセル・メンバーシップを表示する | cat /usr/vice/etc/ThisCell
マシンのセル・メンバーシップを変更する | Edit /usr/vice/etc/ThisCell
キャッシュされたファイルまたはディレクトリーをフラッシュする | fs flush
ボリュームからキャッシュされたすべての内容をフラッシュする | fs flushvolume
ボリューム対マウント・ポイント・マッピングを更新する | fs checkvolumes
キャッシュ・マネージャーのサーバー・プリファレンス・ランクを表示する | fs getserverprefs
キャッシュ・マネージャーのサーバー・プリファレンス・ランクを設定する | fs setserverprefs
登録するクライアント・マシンのアドレスを表示する | fs getclientaddrs
登録するクライアント・マシンのアドレスを設定する | fs setclientaddrs
警告および状況メッセージの表示を制御する | fs messages
マシンのシステム・タイプを表示および変更する | fs sysname
非同期書き込みを使用可能にする | fs storebehind

## キャッシュ・マネージャーの概要

AFS クライアント・マシンのカーネルには、一般にキャッシュ・マネージャー と呼ばれる変更セットが含まれます。この変更セットは AFS ファイルおよびディレクトリーへのアクセスおよび AFS サーバー・プロセスとの通信を可能にします。一般にキャッシュ・マネージャーはあたかもプロセスまたはプログラムであるかのように言及されますが、通常の使用ではプロセスまたはプログラムの 1 つとして機能するように思われます。ただし、キャッシュ・マネージャーを構成する際には、このような使用は厳密には正しくないことを念頭に入れてください。

キャッシュ・マネージャーの主要な機能は、マシン上で実行されているアプリケーション・プログラムの代わりにファイルをフェッチすることです。アプリケーションがあるファイルを要求すると、キャッシュ・マネージャーは、ボリューム・ロケーション (VL) ・サーバーにアクセスして、該当するファイルを含むボリュームが存在するファイル・サーバー・マシンのリストを入手します。その後キャッシュ・マネージャーは、アプリケーション・プログラムのシステム呼び出し要求を、適切なマシン上で実行されているファイル・サーバーへのリモート・プロシージャー呼び出し (RPC) に変換します。ファイル・サーバーがアプリケーションが要求したファイルを送達すると、キャッシュ・マネージャーはそのファイルをアプリケーション・プログラムに引き渡す前にローカル・キャッシュ に保管します。

ファイル・サーバーは、 コールバック と呼ばれるデータ構造をファイルと共に送達します。(厳密にいえば、ファイル・サーバーは、読み取り / 書き込みボリュームからフェッチされたファイルに対してはファイルごとにコールバックを送達し、読み取り専用ボリュームからフェッチされたすべてのデータに対しては単一のコールバックを送達します。)有効なコールバックは、キャッシュ・マネージャーによってキャッシュされたファイルのコピーが、ファイル・サーバーが保持する中央コピーと一致することを示します。別の AFS クライアント・マシンのアプリケーションが中央コピーを変更すると、ファイル・サーバーはコールバックを切断します。すると、キャッシュ・マネージャーは、そのマシン上にあるアプリケーション・プログラムが該当するファイルのデータを次に要求するときに新しいバージョンを検索する必要があります。ただし、コールバックが切断されている間、キャッシュ・マネージャーは、ファイルのキャッシュ・バージョンをそのマシン上にあるアプリケーションに提供し続けることができるので、不必要なネットワーク通信量が減少します。

以下で指示するこの章の節において、以下のキャッシュ・マネージャーの機能を構成およびカスタマイズする方法を説明します。最初 (ディスクまたはメモリー・キャッシュの選択) 以外のすべての機能は任意選択です。最初の機能に関しては、AFS によって適切なデフォルトが設定されます。

- ディスクまたはメモリー・キャッシュ。 AFS キャッシュ・マネージャーは、ローカル・ディスク上のスペースの代わりにマシン・メモリーをキャッシュに使用することができます。最も基本的な構成上の決定は、どちらを使用するかを決めることです。 キャッシュ・タイプ、サイズ、およびロケーションを決定するを参照してください。
- キャッシュ・サイズ。キャッシュ・サイズは、クライアント・マシンのパフォーマンスに最も直接的に影響します。キャッシュ・サイズは、キャッシュ・マネージャーがネットワーク内のファイル・サーバーと通信する回数、または新規に要求されたファイルのスペースを確保するためにキャッシュされたデータを廃棄する回数を決定します。これらは共にキャッシュ・マネージャーがユーザーにファイルを送達する速さに影響します。 キャッシュ・タイプ、サイズ、およびロケーションを決定するを参照してください。
- キャッシュ・ロケーション。ディスク・キャッシュに対して、従来のキャッシュ・ディレクトリー・ロケーション (/usr/vice/cache) を変更して、マシン上の他のディスクで使用可能なより大きなスペースを利用することができます。より大きなキャッシュは、より迅速なファイルの送達を可能にします。 キャッシュ・タイプ、サイズ、およびロケーションを決定するを参照してください。
- チャンクのサイズおよび数。キャッシュ・マネージャーを初期化する afsd プログラムを使用して、キャッシュをどのサイズおよび数のチャンクに分割するか、さらに関連するパラメーターを制御します。適切なデフォルトが用意されているため、これらのパラメーターの設定は任意選択ですが、これらのパラメーターを使用するとより正確に制御することができます。AFS の配布には、キャッシュ・マネージャーのパラメーターをさまざまな構成および使用パターンに適した値に設定する構成スクリプトが含まれます。 afsd プログラムを使用してその他のパラメーターを設定するを参照してください。
- データベース・サーバー・マシンの情報。セル内のデータベース・サーバー・マシンのリストをローカル・ディスク上の /usr/vice/etc/CellServDB ファイル内に作成することによって、クライアント・マシンのユーザーがセルの AFS ファイル・スペースおよびその他のサービスにアクセスできるようにします。データベース・サーバー・マシンの情報を保持するを参照してください。
- setuid 特権。システム管理者は、キャッシュ・マネージャーが setuid 許可を使用してセル内のプログラムを実行するかどうかを制御することができます。 クライアントが Setuid プログラムを実行できるかどうかを決定するを参照してください。
- セル・メンバーシップ。各クライアントは 1 つのセルに属します。どのセルに属するかはローカルな/usr/vice/etc/ThisCell ファイルで定義されています。セル・メンバーシップは、マシンのユーザーを識別し、 AFS コマンドを実行するデフォルトのセルを決定します。クライアント・マシンのセル・メンバーシップを設定するを参照してください。
- キャッシュ・ファイルのバージョン。 AFS のコールバックのシステムは、通常はキャッシュ・マネージャーがファイルおよびディレクトリーの最新バージョンを保持することを保証します。ただし、キャッシュに含まれるものが古いバージョンである疑いがある場合は、ファイル・サーバーからファイルの最新バージョンをキャッシュ・マネージャーに強制的にフェッチさせることができます。 キャッシュ・データの更新を強制するを参照してください。
- ファイル・サーバーおよびボリューム・ロケーション・サーバーのプリファレンス。キャッシュ・マネージャーは、ファイル・サーバー・マシンおよびボリューム・サーバー (VL)・マシンのインターフェースの数値によるプリファレンス・ランクを設定します。このランクは、ボリュームまたはボリューム・ロケーション・データベース (VLDB) からデータをフェッチするときに、キャッシュ・マネージャーが最初に使用するインターフェースを決定します。キャッシュ・マネージャーは、デフォルトのランクを初期化の際に設定します。ランクは、キャッシュ・マネージャーと各インターフェースとのネットワーク接近性に基づいて設定されますが、必要であればプリファレンスのランクを変更することができます。 サーバーのプリファレンス・ランクの保守を参照してください。
- ファイル・サーバーに登録済みのインターフェース。キャッシュ・マネージャーがマルチホーム (複数のインターフェース・アドレスを持つ) である場合、ファイル・サーバーがクライアント・マシンへの RPC を開始するとき、どのキャッシュ・マネージャーを使用してファイル・サーバーに登録するかを制御することができます。マルチホーム・クライアント・マシンの管理を参照してください。
- 情報メッセージの表示。デフォルトでは、キャッシュ・マネージャーは、クライアント・マシンのコンソールおよびコマンド・シェルに基本エラーおよび情報メッセージを表示します。メッセージを表示しないこともできます。 警告および状況メッセージの表示を制御するを参照してください。
- システム・タイプ。キャッシュ・マネージャーは、カーネル・メモリーにローカル・マシンの AFS システム・タイプをレコードし、パス名に対して @sys 変数の値を置換します。システム・タイプ名の表示および設定を参照してください。
- 遅延書き込み。デフォルトで、キャッシュ・マネージャーは、アプリケーション・プログラムがファイルをクローズするときに、即時にかつ同期的にファイル・サーバーにすべてのデータを書き込みます。非同期書き込みは、キャッシュ・マネージャーが扱う個々のファイルまたはすべてのファイルのいずれかに対して使用可能にすることができます。また、キャッシュ・マネージャーが終了するアプリケーションに再び制御を戻すときに、書き込むデータをどのくらい残すかを設定することができます。 非同期書き込みを使用可能にするを参照してください。

構成の変更はすべてクライアント・マシン上で行う必要があります (コンソール上でまたは telnet 接続などの直接接続を介して)。キャッシュ・マネージャーをリモートで構成することはできません。システム管理者がいくつかのコマンドを発行するためには、ローカル・スーパーユーザー root としてログインする必要がありますが、その他のユーザーは何も特権を必要としません。この章で説明するすべてのファイルは、各 AFS クライアント・マシンのローカル・ディスク上に実際に常駐する必要があります (たとえば、ファイルが AFS 内のファイルへのシンボリック・リンクであってはなりません)。

AFS のパッケージ・プログラムには、通常クライアント・マシンの AFS 初期設定ファイルに設定する機能が含まれ、クライアント・マシンを構成する際のその他の設定作業を単純化します。パッケージ・プログラムを使用したクライアント・マシンの構成を参照してください。

## ローカル・ディスク上の構成ファイルおよびキャッシュ関連ファイル

この機能グループでは、すべてのクライアント・マシンのローカルな /usr/vice/etc ディレクトリー上に常駐する必要があるクライアント構成ファイルについて簡単に説明します。マシンがディスク・キャッシュを使用する場合は、キャッシュ・ファイル専用のパーティションが必要です。キャッシュ・ファイルは、慣例では、 /usr/vice/cache ディレクトリーにマウントされます。

Windows ユーザーへの注: 本書で説明されているファイルの一部は、Windows オペレーティング・システムを実行しているマシンには存在していないかもしれません。また、Windows は、パス名の要素を分離するのに円記号 ( \ ) を使用し、スラッシュ ( / ) は使用しません。

### /usr/vice/etc ディレクトリー内の構成ファイル

キャッシュ・マネージャーが正常に機能するためには、クライアント・マシンのローカル・ディスク上の /usr/vice/etc ディレクトリーに、特定のいくつかの構成ファイルが含まれていなければなりません。これらの構成ファイルは、キャッシュ・マネージャー構成の最も基本的な機能を制御します。

セル内のクライアント・マシンが一定の規則に従って実行されることが重要である場合は、これらの構成ファイルを中央ソースから更新することが最も効果的です。以下の説明には、最適なファイルの保守方法を説明する節の参照箇所が記載されています。

afsd
  キャッシュ・マネージャーを初期化するプログラムのバイナリー・ファイルです。このプログラムは、マシンが AFS クライアント・マシンとして機能するためにリブートされるごとに実行される必要があります。このプログラムはさらに、キャッシュ・マネージャーの機能を向上させるいくつかのデーモン、たとえば、コールバックを扱うプロセスなどを初期化します。

cacheinfo
  キャッシュの最も基本的な構成パラメーターである、キャッシュ・マネージャーが AFS ファイル・スペースをマウントするローカル・ディレクトリー、キャッシュとして使用するローカル・ディスク・ディレクトリー、およびキャッシュに割り当てる K バイトの数を設定する 1 行で構成されるファイルです。

  AFS インストールの手引き には、クライアント・マシンをインストールする際に行うこのファイルの作成方法が記載されています。マシンがメモリー・キャッシュを使用している場合は、キャッシュ・サイズを変更するためにファイルを編集して、マシンをリブートします。ディスク・キャッシュを使用するマシンでは、 fs setcachesize コマンドを発行することによってリブートせずにキャッシュ・サイズを変更することができます。説明については、キャッシュ・タイプ、サイズ、およびロケーションを決定するを参照してください。

CellServDB
  この ASCII ファイルは、このマシンからアクセスできるようにするローカル・セル内および任意の外部セル内のデータベース・サーバー・マシンを指定します。 (データベース・サーバー・マシンは、認証、バックアップ、保護、および VL サーバーのプロセスを実行するセル内のマシンです。 データベース・サーバー・マシンを参照してください。)

  キャッシュ・マネージャーは、セル内のデータベース・サーバー・マシンにアクセスして、そのファイル・スペースからファイルをフェッチできる必要があります。 CellServDB ファイル内の誤った情報または情報の欠落は、アクセスを遅らせたり、完全に遮断したりします。セルのデータベース・サーバー・マシンが変更された場合は、このファイルを更新してください。

  afsd プログラムがキャッシュ・マネージャーを初期化すると、キャッシュ・マネージャーはファイルの内容をカーネル・メモリーにロードします。キャッシュ・マネージャーは、リブート時以外はそのファイルを読み取らないため、ファイルの変更をカーネル・メモリーに入れるためにはマシンをリブートする必要があります。ファイルを変更する代わりに、 fs newcell コマンドを発行して、変更を直接カーネル・メモリーに挿入することができます。中央のソースからファイルをアップグレードする方法も有用です。説明については、データベース・サーバー・マシンの情報を保持する を参照してください。

  (クライアント・マシン上の CellServDB ファイルは、サーバー・マシン上の /usr/afs/etc ディレクトリー内で保持されているファイルと同一のものではありません。サーバー・マシン上の /usr/afs/etc ディレクトリー内のファイルは、ローカル・セルのデータベース・サーバー・マシンのみをリストします。サーバーの CellServDB ファイルの保持に関する説明は、 サーバー CellServDB ファイルの保守を参照してください)。

NetInfo
  このオプションの ASCII ファイルは、クライアント・マシン上にある 1 つまたは複数のネットワーク・インターフェース・アドレスをリスト表示します。このファイルがキャッシュ・マネージャーの初期設定時に存在する場合は、キャッシュ・マネージャーは、ファイル・サーバーに登録するインターフェースのリストの基本としてこれを使用します。 マルチホーム・クライアント・マシンの管理を参照してください。

NetRestrict
  このオプションの ASCII ファイルは、1 つまたは複数のネットワーク・インターフェース・アドレスをリスト表示します。このファイルがキャッシュ・マネージャーの初期設定時に存在する場合は、キャッシュ・マネージャーは、ファイル・サーバーに登録するインターフェースのリストから指定アドレスを削除します。 マルチホーム・クライアント・マシンの管理を参照してください。

ThisCell
  この ASCII ファイルは、マシンが所属するセルの完全なドメイン形式の名前を指定する単一の行を含みます。`example.com` および `example.org` がその一例です。この値は、マシンのユーザーが認証済みユーザーとなり、コマンド・インタープリター (たとえば、 bos) がサーバー・プロセスにアクセスする、デフォルトのセルを定義します。

  AFS インストールの手引き には、AFS クライアントの機能をインストールする際に行うこのファイルの作成方法が記載されています。クライアント・マシンのセル・メンバーシップの変更について確認するには、 クライアント・マシンのセル・メンバーシップを設定するを参照してください。

これらファイルの他にも、/usr/vice/etc ディレクトリーには、以下のタイプのファイルおよびサブディレクトリーが含まれる場合があります。

- AFS 初期化スクリプト (多くのシステム・タイプで afs.rc と呼ばれる)。 AFS インストールの手引き で指定されている通常の構成では、これはオペレーティング・システムが使用する他の初期設定ファイルと同じディレクトリーに保管される実際のスクリプトへの記号リンクです。
- 動的カーネル・ロード・プログラムが使用する AFS カーネル・ライブラリー・ファイルを含むサブディレクトリー。
- C 名のサブディレクトリー (afszcm.cat 名のキャッシュ・マネージャー・カタログ・ファイルを含む)。fstrace プログラムは、カタログ・ファイルを使用して演算子を文字列に変換し、これによりトレース・ログのメッセージを読みやすくします。 fstrace コマンド・スイートについてを参照してください

### キャッシュ関連ファイル

ディスク・キャッシュを使用するクライアント・マシンは、このキャッシュ専用のローカル・ディスク・ディレクトリーを保持する必要があります。標準的なマウント・ポイントは /usr/vice/cache ですが、利用できるより大きいスペースを持つ別のパーティションを使用することができます。

キャッシュ・ディレクトリー内のどのファイルも削除または直接変更しないでください。こららのファイルを変更または削除すると、カーネルの緊急事態が発生する場合があり、緊急事態からの唯一の回復方法はマシンをリブートすることだけです。デフォルトにより、ローカルのスーパーユーザー root だけがこれらのファイルを所有するため、これらのファイルを直接読み取ることができます。

メモリー・キャッシュを使用するクライアント・マシンは、これらのファイルに保管されるすべての情報を、代わりにマシン・メモリーで保持します。

CacheItems
  キャッシュ・マネージャーが、ファイル ID 番号 (fID) およびデータ・バージョン番号を含むキャッシュ・チャンクの内容を記録する、バイナリー形式のファイルです (以下で説明するディレクトリーの V ファイル)。

VolumeItems
  マウント・ポイントとキャッシュ・マネージャーがデータをフェッチするボリューム間のマッピングをキャッシュ・マネージャーが記録するバイナリー形式のファイルです。キャッシュ・マネージャーは、特に pwd コマンドに応答する際にこの情報を使用します。

Vn
  AFS ファイルからフェッチされたデータを入れるために最大サイズ (デフォルトでは 64 KB) まで大きくなるキャッシュ・チャンク・ファイルです。キャッシュ内の Vn ファイルの数は、その他の要因の中でのキャッシュ・サイズによって異なります。n は、各ファイルに割り当てられるインデックスです。このインデックスは順次的に番号が付けられますが、キャッシュ・マネージャーは必ずしもこれらのインデックスを順次にまたは連続して使用しません。AFS ファイルが Vn ファイルの最大サイズより大きい場合は、キャッシュ・マネージャーはこのファイルを分割して複数の Vn ファイルに入れます。

## キャッシュ・タイプ、サイズ、およびロケーションを決定する

この節では、メモリーまたはディスク・キャッシュの構成方法、どちらのタイプのキャッシュであるかを表示してサイズを設定する方法、およびディスク・キャッシュのためのキャッシュ・ディレクトリーのロケーションを設定する方法について説明します。

キャッシュ・マネージャーは、デフォルトによりディスク・キャッシュを使用します。ディスク・キャッシュは、優先されるキャッシュ・タイプです。メモリー・キャッシュを構成するには、通常マシンの AFS 初期設定ファイルの一部として起動される afsd コマンドに -memcache フラグを組み込みます。メモリー・キャッシュを使用して構成した場合、キャッシュ・マネージャーはマシンにディスクが備わっている場合でもディスクへのキャッシュを行いません。

### キャッシュ・サイズを選択する

キャッシュ・サイズは、他のどのキャッシュ・パラメーターよりもクライアント・マシンのパフォーマンスに直接的に影響します。キャッシュが大きい程、より速くキャッシュ・マネージャーがファイルをユーザーに送達する可能性が高くなります。小さなキャッシュは、キャッシュ・マネージャーがキャッシュされたデータを廃棄して、新規に要求されたデータのためのスペースを確保しなければならない回数を増やすため、パフォーマンスを低下させます。アプリケーションが廃棄されたデータを要求する場合、キャッシュ・マネージャーはそのデータをファイル・サーバーに要求しますが、ネットワーク内からデータをフェッチする方が、データをローカル・ディスクからフェッチするよりもほとんどの場合、より多くの時間を要します。キャッシュ・マネージャーは、ローカルで変更され、まだファイル・サーバーに保管されていないファイルのデータは決して廃棄しません。キャッシュがかなり小さいと、キャッシュ・マネージャーは、廃棄するファイルを見つけるのが難しいでしょう。キャッシュ・データを廃棄するときにキャッシュ・マネージャーが使用するアルゴリズムについての詳細は、 キャッシュ・マネージャーが廃棄するデータを選択する方法を参照してください。

キャッシュに専用に割り当てるディスクまたはメモリーの大きさは、いくつかの要因に依存します。メモリー内またはディスク・キャッシュ・ディレクトリー上のパーティションで使用可能なスペースの大きさには、絶対的な制限があります。さらに、キャッシュ・ディレクトリーのパーティションで使用可能なスペースの 95% 以上をディスク・キャッシュに割り当てることはできません。この制限を超えた場合は、afsd プログラムはキャッシュ・マネージャーを開始せずに終了し、標準出力ストリームに適切なメッセージを表示します。メモリー・キャッシュの場合は、他のプロセスおよびアプリケーションの実行に必要なメモリーを残す必要があります。実際に割り振り可能なメモリーよりも多くのメモリーを割り当てようとすると、afsd プログラムはキャッシュ・マネージャーの初期設定を行わずに終了し、以下のメッセージを標準出力ストリームに表示します。

       afsd: memCache allocation failure at number KB

ここで、number は失敗する直前に割り当てられたメモリー (K バイト) です。

これらの厳しい制限の範囲内で、適切なキャッシュ・サイズを決定する要素は、そのマシンで作業するユーザーの数、通常ユーザーが作業に使用するファイルのサイズ、および (メモリー・キャッシュに対して) マシン上で通常実行されるプロセスの数です。これらの要素の要求が高ければ高いほど、良いパフォーマンスを維持するために必要なキャッシュのサイズは大きくなります。

10 MB より少ないディスク・キャッシュは、一般にパフォーマンスがよくありません。複数のユーザーにサービスを提供するマシンでは、最低 60 から 70 MB のキャッシュを使用すると、一般にパフォーマンスが良くなります。キャッシュをさらに大きくした場合でも、パフォーマンスが実際に向上するかどうかは上記で説明した要素によって異なり、予測するのは困難です。

サイズが 1 MB より小さいメモリー・キャッシュは機能せず、サイズが 5 MB より小さいキャッシュのパフォーマンスはたいていの場合不十分です。適切な上限はディスク・キャッシュの場合とほとんど同じですが、マシン上のその他のソース (ユーザーおよびプロセスの数) からの要求の影響をより多く受けます。少数のプロセスのみを実行するマシンでは、これより小さいメモリー・キャッシュを使用することができます。

一部のバージョンでは、AFS は、キャッシュ・サイズに絶対限度を課します。使用しているバージョンについてのAFS Release Notesを参照してください。

### キャッシュのサイズおよびロケーションの表示および設定

キャッシュ・マネージャーは、初期化の際に /usr/vice/etc/cacheinfo ファイルを読み取り、キャッシュのサイズを決定します。AFS インストールの手引き に記載されているように、 afsd プログラムを実行する前にこのファイルを作成する必要があります。このファイルはさらに、AFS (慣例では、/afs) をマウントするディレクトリー、およびキャッシュ・ディレクトリーとして使用するローカル・ディスクのディレクトリーを定義します。

このファイル内の任意の値を変更するには、ローカル・スーパーユーザー root としてログインします。新しい値を有効にするためにはマシンをリブートする必要があります。説明については、cacheinfo ファイルを編集するを参照してください。

cacheinfo ファイルを編集せずにリブート時にキャッシュ・サイズを変更するには、 afsd コマンドで -blocks 引き数を指定します。 AFS Administration Reference のコマンド参照ページを参照してください。

ディスク・キャッシュに対しては、 fs setcachesize コマンドを使用して、リブートせずにキャッシュ・サイズをリセットすることができます。設定した値は、次のリブート時まで維持されます。キャッシュ・サイズは、リブート時には cacheinfo ファイルで指定した値、または afsd コマンドの -blocks 引き数によって指定した値に戻ります。説明については、リブートせずにディスク・キャッシュ・サイズを変更するを参照してください。

現行のキャッシュ・サイズおよび現時点でキャッシュ・マネージャーが使用しているスペースの大きさを表示するには、 現行のキャッシュ・サイズを表示するでの説明している fs getcacheparms コマンドを使用してください。

### リブート時のキャッシュ・サイズの設定を表示する

1. テキスト・エディターまたは cat コマンドを使用して、 /usr/vice/etc/cacheinfo ファイルの内容を表示します。

          % cat /usr/vice/etc/cacheinfo

### 現行のキャッシュ・サイズを表示する

1. クライアント・マシン上で fs getcacheparms コマンドを発行します。

          % fs getcacheparms

   ここで、 getca は、getcacheparms の受け入れ可能な省略形です。

   出力は、コマンドを発行した時点でキャッシュ・マネージャーがキャッシュとして使用しているブロックの K バイトの数値を示します。たとえば、次のようになります。

          AFS using 13709 of the cache's available 15000 1K byte blocks.

### cacheinfo ファイルを編集する

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. テキスト・エディターを使用して、/usr/vice/etc/cacheinfo ファイルを編集します。このファイルには、コロンで区切られた 3 つのフィールドがあります。
   - 最初のフィールドは、AFS ファイル・スペースをマウントするローカル・ディレクトリーの名前を指定します。通常の位置は、/afs です。
   - 2 番目のフィールドは、ディスク・キャッシュで使用するローカル・ディスク・ディレクトリーを定義します。通常の位置は /usr/vice/cache ディレクトリーですが、他の区画の使用可能スペースが多ければ代わりのディレクトリーを指定することができます。このフィールドには必ず値を指定する必要がありますが、マシンでメモリー・キャッシュを使用する場合は、キャッシュ・マネージャーはこの値を無視します。
   - 3 番目のフィールドは、キャッシュ・サイズをブロックの K バイト (1024 バイト) の数値で定義します。

   次の例では、AFS ファイル・スペースを /afs ディレクトリーにマウントし、キャッシュ・ディレクトリーとして /usr/vice/cache と命名し、キャッシュ・サイズを 50,000 KB に設定しています。

             /afs:/usr/vice/cache:50000

### リブートせずにディスク・キャッシュ・サイズを変更する

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. fs setcachesize コマンドを発行して、新しいディスク・キャッシュ・サイズを設定します。

   注: | このコマンドはメモリー・キャッシュでは機能しません。

          # fs setcachesize <size in 1K byte blocks (0 => reset)>

   ここで、

   setca
     は、setcachesize の受け入れ可能な省略形です。

   size in 1K byte blocks (0 => reset)
     キャッシュで使用するブロックの K バイトの数値を設定します。正の整数 (1024 は 1 MB になります) または 0 (ゼロ) を指定して、キャッシュ・サイズを cacheinfo ファイルで指定した値にリセットします。

### リブートせずにディスク・キャッシュ・サイズをデフォルトの設定にリセットする

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. fs setcachesize コマンドを発行して、ローカル・ディスク・キャッシュのサイズをリセットします (このコマンドはメモリー・キャッシュでは機能しません)。次のいずれかのオプションを選択します。
   - ローカルな cacheinfo ファイルで指定した値にキャッシュ・サイズをリセットする場合は、値 0 (ゼロ) を指定する

            # fs setcachesize 0

   - マシンを最後にリブートしたときに設定された値にキャッシュ・サイズをリセットする場合は、 -reset フラグを指定する。afsd コマンドで -blocks 引き数を使用しない場合は、この値も cacheinfo ファイルで指定した値になります。

            # fs setcachesize -reset

   ここで、

   setca
     は、setcachesize の受け入れ可能な省略形です。

   0
     ディスク・キャッシュ・サイズを /usr/vice/etc/cacheinfo ファイルの 3 番目のフィールドの値にリセットします。

   -reset
     キャッシュ・サイズを最後のリブート時に設定された値にリセットします。

### キャッシュ・マネージャーが廃棄するデータを選択する方法

キャッシュがフルでアプリケーション・プログラムが AFS からさらにデータを要求するとき、キャッシュ・マネージャーは、データ用の空きを作るためにキャッシュ・チャンクをフラッシュする必要があります。キャッシュ・マネージャーは、次の 2 つの要素を考慮します。

1. アプリケーションがデータに最後にアクセスしたのはどれくらい最近か。
2. チャンクはダーティー かどうか。ダーティーなチャンクには、ファイル・サーバー・マシンに格納されている永久コピーにまだ保管されていないファイルに対する変更が含まれています。

キャッシュ・マネージャーは、最も遠い最近に使用されたチャンクを最初にチェックします。チャンクがダーティーではない場合は、キャッシュ・マネージャーはそのチャンク内のデータを廃棄します。チャンクがダーティーである場合、キャッシュ・マネージャーは次に新しく使用されたチャンクのチェックするために移動します。キャッシュ・マネージャーは、十分な数の空のチャンクを作成するまで、この方法でチェックを続けます。

読み取り専用ボリュームからフェッチされたデータを含むチャンクは、定義により、ダーティーになることはありません。したがって、キャッシュ・マネージャーは常にこのようなチャンクを廃棄することができます。通常、キャッシュ・マネージャーは、読み取り / 書き込みボリュームからフェッチしたダーティーでないデータのチャンクを見付けることもできますが、キャッシュが小さい場合は、適切なデータを十分見付けることは難しくなります。キャッシュ・マネージャーが廃棄できるデータを何も見つけることができない場合は、 AFS からデータをさらに要求するアプリケーション・プログラムに対して、キャッシュ・マネージャーは入出力エラーを返します。通常、アプリケーション・プログラムにはそのようなエラーをユーザーに通知する機能は備わっていますが、エラーの原因は表示されません。

## afsd プログラムを使用してその他のパラメーターを設定する

設定する必要があるキャッシュ構成パラメーターは、 AFS のマウント・ディレクトリー、ディスク・キャッシュ・ディレクトリーのロケーション、およびキャッシュ・サイズの 3 つです。これらのパラメーターは、 キャッシュ・タイプ、サイズ、およびロケーションを決定するで説明した /usr/vice/etc/cacheinfo ファイル内の 3 つのフィールドに対応しています。ただし、キャッシュ・パフォーマンスがよくなるように調整を行う場合は、 afsd コマンドに引き数を指定してその他のパラメーターを制御することができます。この節では、そのパラメーターの中でキャッシュ・パフォーマンスに最も直接的に影響するいくつかのものを説明します。 afsd コマンドの引き数について確認するには、 AFS Administration Referenceの参照ページを参照してください。

また、各システム・タイプの AFS の配布に含まれる AFS 初期設定スクリプトには、複数の afsd 引き数を異なるサイズおよび使用パターンのクライアント・マシンに適合するよう設定する変数がいくつか組み込まれています。スクリプトの最適な使用方法についての説明は、 AFS インストールの手引き のキャッシュ・マネージャーの構成セクションを参照してください。

### キャッシュ構成パラメーターの設定

キャッシュのパフォーマンスに最も直接的に影響するキャッシュ構成パラメーターは、以下のとおりです。

- total cache size。これは、 キャッシュ・タイプ、サイズ、およびロケーションを決定するで詳細を説明したように、ディスク・スペースまたはキャッシュに使用できるマシン・メモリーの大きさです。
- number of cache chunks。ディスク・キャッシュでは、各チャンクはローカル・キャッシュ・ディレクトリー内の 1 つの V filen です (キャッシュ関連ファイルを参照してください)。メモリー・キャッシュでは、各チャンクはマシン・メモリー内に割り振られた連続ブロックの集合です。

  このパラメーターは、キャッシュのパフォーマンスに対して total size 程影響を与えません。しかしながら、このパラメーターを調整すると、キャッシュ・マネージャーが新しいデータのスペースを確保するためにキャッシュされたデータを廃棄する回数に影響します。たとえば、ディスク・キャッシュ・サイズを 50 MB に設定し、チャンクの数 (Vn ファイル) を 1,000 に設定すると仮定します。マシン上の 10人 のユーザーのそれぞれが、平均 20 KB のサイズを持つ 100 個の AFS ファイルをキャッシュした場合、 1,000 のチャンクはすべてフル (1 つのチャンクには 1 つの AFS からのデータだけを含むことができる) ですが、キャッシュは約 20 MB のデータだけを保持します。ユーザーがファイル・サーバーからさらにデータを要求すると、キャッシュの容量の 50% 以下までしか使用されていないにもかかわらず、キャッシュ・マネージャーはいくつかのチャンク・ファイルを再利用するために、キャッシュされたデータを廃棄する必要があります。このような状態では、チャンクの数を増やすと、キャッシュ・マネージャーがデータを廃棄する回数を減らすことができます。

- chunk size。このパラメーターは、チャンクに格納することができる最大データ量を決定します。キャッシュされる 1 つの要素の大きさがチャンク・サイズより小さい場合は、チャンクの残りのスペースは使用されません (チャンクは 1 つの要素だけを保持します)。ある要素が 1 つのチャンクに収まらない場合は、分割されて必要な数のチャンクに入れられます。このパラメーターはまた、キャッシュ・マネージャーが 1 回にどれだけのデータをファイル・サーバーから要求するかを決定します (AFS が部分的なファイル転送を使用するため、RPCのフェッチ ごとのデータの量)。

  チャンクのサイズを変更する主な理由は、チャンク・サイズが RPC ごとにフェッチするデータの量と関連しているからです。非常に高速のネットワーク・リンクの場合、そのネットワーク・リンクは、チャンク・サイズを増加するとパフォーマンスを向上させることができます。非常に低速のネットワークの場合は、チャンク・サイズを削減するのが最善です。

- number of dcache entries in memory。キャッシュ・マネージャーは、チャンクに対応する AFS ファイルの ID(fID) およびバージョン番号などを含む小さいサイズの情報を記録して、各キャッシュ・チャンクに対して 1 つの dcache 項目を保持します。

  ディスク・キャッシュの場合は、dcache 項目は /usr/vice/cache/CacheItems に常駐します。少数の項目が、アクセスを速めるためにマシン・メモリーで複製されます。

  メモリー・キャッシュの場合、dcache 項目の数はキャッシュ・チャンクの数と一致します。この問題の言外の意味についての説明は、メモリー・キャッシュ構成を制御する を参照してください。

キャッシュ・マネージャーがどのようにディスク・キャッシュ内のチャンクの数、チャンク・サイズ、および dcache 項目の数のデフォルトを決定するかについての説明は、 ディスク・キャッシュの構成 を参照してください。メモリー・キャッシュについては、メモリー・キャッシュ構成を制御する を参照してください。この説明では、デフォルトを上書きするための afsd コマンドの使用方法についても説明しています。

### ディスク・キャッシュの構成

ディスク・キャッシュ内のキャッシュ・チャンク (Vn ファイル) の数のデフォルトは、 afsd コマンドを使用して計算され、以下の数値の中で最大のものと一致します。

- 100
- キャッシュ・サイズをチャンク・サイズで除算した結果の 1.5 倍 (キャッシュ・サイズ/チャンク・サイズ * 1.5)
- キャッシュ・サイズを 10 MB で除算した結果 (キャッシュ・サイズ/10240)

この値は、-files 引き数に正の整数を指定することにより上書きすることができます。キャッシュ・マネージャーが初期設定を完了したすぐ後に、 Vn ファイルの 75% 以上が既に使用されている場合は、この値を増やすことを検討してください。その時点で、小さな割合のチャンクだけが使用される場合は、値を減らすことを検討してください。いずれの場合も、 100 より少ない値を指定しないでください。小さい値を指定すると、パフォーマンスの問題が生じることがあるからです。

次の例は、Vn ファイルの数を 2,000 に設定します。

          /usr/vice/etc/afsd -files 2000

注: | 標準的には、afsd コマンドを、コマンド・シェルに入力する代わりに、マシンの AFS 初期設定ファイルに組み込みます。また、この機能グループで指定する値は、例にすぎず、必ずしも特定のマシンに適してはいません。

ディスク・キャッシュのデフォルトのチャンク・サイズは 64 KB です。一般に、チャンク・サイズを変更するのは、特に遅いか速いネットワークを調整する場合のみです。キャッシュ構成パラメーターの設定 を参照してください。-chunksize 引き数を使用してデフォルトを上書きすることができます。チャンク・サイズは 2 の指数でなければなりません。 2 の指数として使用するために、0 (ゼロ) から 30 までの間の整数を指定します。たとえば、値 10 を指定すると、チャンク・サイズは 1 KB (210 = 1024) に設定されます。値 16 は、メモリー・キャッシュのデフォルト値 (216 = 64 KB) と等しくなります。0 (ゼロ) または 30 より大きい値は、チャンク・サイズをデフォルトに戻します。10 (1 KB) より少ない値は避けてください。次の例は、チャンク・サイズを 16 KB (214) に設定します。

          /usr/vice/etc/afsd -chunksize 14

ディスク・キャッシュの場合は、メモリー内に複製される dcache 項目の数は、 -files 引き数を使用して指定するチャンクの数の 2 分の 1、最大 2,000 項目までです。-dcache 引き数を使用して、デフォルトを変更することができます。必要な場合は、2,000 を超えることもできます。通常はメモリー内の dcache 項目の半分以上を複製することは必要ありませんが、メモリーへのアクセスの方がディスクへのアクセスよりも高速であるため、わずかにパフォーマンスが向上する場合があります。次の例は、ファイルの数を 750 に設定します。

          /usr/vice/etc/afsd -dcache 750

ディスク・キャッシュを構成するとき、afsd コマンドの引き数を任意の方法で組み合わせることができます。このように柔軟性があるのは、ディスク・キャッシュに対して指定した設定 (cacheinfo内または -blocks 引き数を使用した場合) が絶対的な上限だからです。-files または -chunksize 引き数を単独でまたは組み合わせて使用して、もっと高い値を指定することにより、この値を上書きすることはできません。他の理由としては、キャッシュ・マネージャーがディスク上に一定のメモリーを予約する必要がないためです。Vn ファイル (ディスク・キャッシュ内のチャンク) は初期設定では 0 の大きさですが、必要に応じて指定したチャンク・サイズに拡張したり、再び縮小したりすることができます。V ファイルの数に大きな値を設定すると、それぞれの Vn ファイルが最大サイズまで拡張され、その結果合計キャッシュ・サイズを超えてしまいます。したがって、V ファイルが最大サイズまで拡張されることはありません。

### メモリー・キャッシュ構成を制御する

メモリー・キャッシュの構成は、 afsd コマンドの引き数のすべての組み合わせを使用できない点において、ディスク・キャッシュを構成する場合と異なっています。この制限は、メモリー・キャッシュではディスク・キャッシュよりも構成パラメーターが相互に作用するために生じます。仮にすべての組み合わせを使用できたとしても、パラメーターが互いに矛盾するやり方で設定してしまう可能性があります。デフォルト値の説明の後に、許容可能および受諾不能の組み合わせのリストを示します。

メモリー・キャッシュのデフォルトのチャンク・サイズは 8 KB です。一般に、チャンク・サイズを変更するのは、特に遅いか速いネットワークを調整する場合のみです。キャッシュ構成パラメーターの設定 を参照してください。

メモリー・キャッシュのチャンクの数に対して事前に定義されたデフォルトはありません。代わりに、キャッシュ・マネージャーが合計キャッシュ・サイズをチャンクの数で除算して正しい数を計算します。メモリー・キャッシュの場合は、すべての dcache 項目がメモリー内に存在する必要があることを思い出してください。このことは、チャンクの数がメモリー内の dcache 項目の数と一致し、 dcache 項目の数のデフォルトが存在しないことを意味します (チャンクの数と同様に、dcache 項目の数は合計サイズをチャンク・サイズで除算して計算されます)。

メモリー・キャッシュを構成するときに許容可能な afsd コマンドの組み合わせは次のとおりです。

- -blocks のみ。この引き数は、/usr/vice/etc/cacheinfo で指定されたデフォルトのキャッシュ・サイズを上書きします。キャッシュ・マネージャーは、この引き数の値をデフォルトのチャンク・サイズである eight KB で除算してチャンクおよび dcache 項目の数を計算します。次の例は、キャッシュ・サイズを 5 MB (5,120 KB)、およびチャンクの数を 640 (5120 を 8 で除算する) に設定します。

            /usr/vice/etc/afsd -memcache -blocks 5120

- -chunksize のみは、8 KB のデフォルトを上書きします。チャンク・サイズは 2 の指数でなければなりません。 2 の指数として使用するために、0 (ゼロ) から 30 までの間の整数を指定します。たとえば、値 10 を指定すると、チャンク・サイズは 1 KB (210 = 1024) に設定されます。値 13 は、メモリー・キャッシュのデフォルト値 (213 = 8 KB) と等しくなります。0 (ゼロ) または 30 より大きい値は、チャンク・サイズをデフォルトに戻します。10 (1 KB に相当) より少ない値は避けてください。次の例は、チャンク・サイズを 4 KB (212) に設定します。合計キャッシュ・サイズが 4 MB (4096 KB) であるため、チャンクの数は 1024 になります。

            /usr/vice/etc/afsd -memcache -chunksize 12

- -blocks および -chunksize を共に指定すると、キャッシュ・サイズとチャンク・サイズのデフォルトが上書きされます。キャッシュ・マネージャーは、最初の引き数の値を 2 番目の引き数の値で除算してチャンクおよび dcache 項目の数を計算します。たとえば、次の例は、キャッシュ・サイズを 6 MB (6144 KB)、そしてチャンク・サイズを 4 KB (212) に設定し、その結果は 1,536 チャンクになります。

            /usr/vice/etc/afsd -memcache -blocks 6144 -chunksize 12

以下の組み合わせは、チャンクおよび dcache 項目の数を明示的に設定します。これらの組み合わせは、キャッシュ・サイズを間接的に設定し、キャッシュのサイズを決定するためにシステム管理者が手で計算する必要があるため、使用することをお勧めしません。代わりに、-blocks および -chunksize 引き数を、単独でまたは組み合わせて設定します。この場合、キャッシュ・マネージャーが、チャンクの数と dcache 項目自体を決定します。これらの組み合わせはお勧めしないため、例は示しません。

- -dcache 引き数は、チャンクおよび dcache 項目の数を明示的に設定します。キャッシュ・マネージャーは、この値とデフォルトのチャンク・サイズである 8 KB を乗算して合計キャッシュ・サイズを求めます (cacheinfo 内の値を上書きします)。
- -dcache および -chunksize の組み合わせは、チャンクの数およびサイズを設定します。キャッシュ・マネージャーは、指定した値を設定し、2 つの引き数の値を乗算して合計キャッシュ・サイズを求めます (cacheinfo ファイル内の値を上書きします)。

メモリー・キャッシュに対して、以下の引き数を使用しないでください。

- -files のみ。この引き数は、ディスク・キャッシュの Vn ファイルの数を制御しますが、メモリー・キャッシュに対して指定された場合は無視されます。
- -blocks および -dcache。エラー・メッセージが表示されます。最初の引き数 (合計サイズ) を 2 番目の引き数 (チャンクの数) で除算すると、 2 の累乗でないチャンク・サイズになる値を指定する可能性があるためです。

## データベース・サーバー・マシンの情報を保持する

AFS クライアント・マシンのユーザーが、セルの AFS ファイル・スペースおよびその他のサービスにアクセスする場合は、キャッシュ・マネージャーおよびその他のクライアント側のエージェントが、セル内のデータベース・サーバー・マシンの正確なリストを保持する必要があります。関連する機能は以下のとおりです。

- ファイルのアクセス。キャッシュ・マネージャーは、要求されたファイルまたはディレクトリーを含むボリュームが常駐するファイル・サーバー・マシンを確認するために、ボリューム・ロケーション (VL)・サーバーに接続します。キャッシュ・マネージャーがセルの VL サーバーに接続できない場合は、キャッシュ・マネージャーはファイルをフェッチすることができません。
- 認証。 klog プログラムおよび修正 AFS ログイン・ユーティリティーは、認証サーバーに接続してトークンを入手します。 AFS サーバー・プロセスはこのトークンをユーザーが認証された証拠として受信します。
- 保護グループの作成。 pts コマンド解釈プログラムは、ユーザーが保護グループを作成するとき、または保護データベースに情報を要求するときに保護サーバーに接続します。
- アクセス制御リスト (ACL) の編集。 fs コマンド・インタープリターは、ファイルまたはディレクトリーを含む読み取り / 書き込みボリュームを保持するファイル・サーバーに接続します。ロケーション情報は VL サーバーから入手します。

あるマシンのユーザーがあるセルにアクセスできるようにするためには、システム管理者はそのセルのデータベース・サーバー・マシンの名前および IP アドレスを、そのマシンのローカル・ディスク上の /usr/vice/etc/CellServDB ファイルにリストする必要があります。マシンのホーム・セルの他に、ユーザーがアクセスするための任意の外部セルをリストすることができます。 (セルのファイル・スペースへのアクセスを可能にするためには、セルの root.cell ボリュームをローカル AFS ファイル・スペースにマウントする必要があります。ローカル AFS ファイル・スペースは、慣例として AFS ルート・ディレクトリー /afs のすぐ下に配置されています。説明については、AFS インストールの手引き を参照してください。)

### クライアントがデータベース・サーバー・マシンのリストを使用する方法

afsd プログラムが実行されてキャッシュ・マネージャーが初期化されると、キャッシュ・マネージャーは CellServDB ファイルの内容を読み取ってカーネル・メモリーに入れます。キャッシュ・マネージャーは、マシンが次にリブートされるまでは再度そのファイルを調べることはありません。対照的に、AFS コマンドの組みに使用するコマンド解釈プログラム (fs および pts など) は、データベース・サーバー・プロセスに接続する必要があるたびに CellServDB ファイルを読み取ります。

セルのデータベース・サーバー・マシンのリストが変更されると、整合性のあるクライアントのパフォーマンスを確保するためには、 CellServDB ファイルおよびカーネル・メモリー内のリストの両方を変更する必要があります。CellServDB ファイルおよびカーネル・メモリーの両方を更新する方法として可能な方法の 1 つは、ファイルを編集した後でマシンをリブートすることです。リブートすることを省略するためには、代わりに以下の両方の操作を実行します。

1. fs newcell コマンドを発行して、カーネル・メモリー内のリストを直接変更することによりキャッシュ・マネージャーが変更されたデータを使用できるようにします。
2. CellServDB ファイルを編集して、コマンド解釈プログラムが変更されたデータを使用できるようにします。ファイル形式の説明については、CellServDB ファイルの形式を参照してください。

CellServDB ファイルまたはカーネル・メモリー内での情報の脱落または誤りは、以下の結果をもたらします。

- セル内に全く項目がない場合は、マシンのユーザーはそのセルにアクセスできません。
- セルの項目に、あるデータベース・サーバー・マシンの情報が組み込まれていない場合、キャッシュ・マネージャーおよびコマンド・インタープリターはそのデータベース・サーバー・マシンと交信しようとしません。ただし、その他のデータベース・サーバー・マシンの情報が正しく、かつサーバー・プロセス、マシン、およびネットワークが正常に機能している場合は、 1 つのデータベース・サーバー・マシンの情報が省略されても、セルへのアクセスができなくなることはありません。リストされたすべてのマシンがクライアントにアクセスできなくなった場合は、省略されたサーバー・マシンがたとえ正常に機能していても、セルにアクセスすることができなくなります。
- マシン名またはアドレスが正しくない場合、またはリストされているマシン上で実際にはデータベース・サーバー・プロセスが実行されていない場合は、クライアントからの要求はタイムアウトになります。ユーザーは、キャッシュ・マネージャーまたはコマンド解釈プログラムが、別のデータベース・サーバー・マシンに接続するまでのタイムアウトになっている期間は待機しなければならないため、長い遅延を経験することになります。

### CellServDB ファイルの形式

/usr/vice/etc/CellServDB ファイルを編集する際には、セルおよびマシンの項目に対して正しい形式を使用する必要があります。各セルには分離された項目があります。 1 行目の形式は次のとおりです。

       >cell_name      #organization

ここで、cell_name は、セルの完全インターネット・ドメイン名であり (たとえば、example.com)、organization は任意の数のスペースおよび番号記号 (`#`) の後に続く任意指定フィールドであり、セルが対応している組織の名前を指定することができます (たとえば、Example Corporation)。1 行目の後には、各データベース・サーバー・マシンを示す分離された行が続きます。各行の形式は次のとおりです。

          IP_address   #machine_name

ここで、IP_address は、小数点付き 10 進数形式のマシンの IP アドレスです (たとえば、192.12.105.3)。任意の数のスペースおよび番号記号 (`#`) の後に続くのは、マシンの完全に修飾されたホスト名を示す machine_name です (たとえば、db1.example.com)。この場合、番号記号はコメントを示しているわけではなく、 machine_name は必須フィールドです。

セルが表示される順序は重要ではありませんが、クライアント・マシンのホーム・セルを最初に表示すると便利です。ファイルには、何もブランク行を入れないでください。最後の項目の後にもブランク行を入れてはなりません。

以下の例は、それぞれのセルに 3 つのデータベース・サーバー・マシンが存在する 2 つのセルの項目を示します。

       >example.com       #Example Corporation (home cell)
       192.12.105.3      #db1.example.com
       192.12.105.4      #db2.example.com
       192.12.105.55     #db3.example.com
       >example.org    #Example Organization cell
       138.255.68.93     #serverA.example.org
       138.255.68.72     #serverB.example.org
       138.255.33.154    #serverC.example.org

### クライアントの CellServDB ファイルの保守

整合性のあるクライアントのパフォーマンスを実現するためには、 CellServDB ファイル内の項目が正しいことが不可欠であるため、セル内のデータベース・サーバー・マシンのリストが変更されたときには常に、各クライアント・マシン上のファイルも更新する必要があります。 (たとえば、AFS インストールの手引き に記載されている説明に従ってデータベース・サーバー・マシンを追加または削除したときなどです。)クライアントの更新を行うためには、 パッケージ・プログラムを使用することができます。このプログラムは、AFS の中央ソースのファイルをクライアント・マシンのローカル・ディスクにコピーします。標準的には、マシンのリブート時に実行されるように、クライアント・マシン上の AFS 初期設定ファイル内のパッケージ・プログラムを起動しますが、必要なときにいつでも package コマンドを実行することも可能です。説明については、パッケージ・プログラムの実行を参照してください。

パッケージ・プログラムを使用する場合は、所属するセルの中央ソースである CellServDB ファイルは /afs/cell_name/common/etc/CellServDB です。ここで、cell_name は、所属するセル名です。

/usr/vice/etc/CellServDB を、 AFS 内の中央ソースのシンボリック・リンクまたはハード・リンクとして作成することはできません。afsd プログラムは、キャッシュ・マネージャーが完全に初期化され、 AFS にアクセスできるようになる前にそのファイルを読み取ってカーネル・メモリーに入れます。

各クライアント・マシンは、 CellServDB ファイルの独自のコピーを持っているため、論理的にはそれぞれのマシン上で異なるアクセス可能なセルの集合を作成することができます。しかしながら、ほとんどの場合、セル内のすべてのクライアント・マシン上のファイル間で整合性を保つことが最も良い方法です。マシン間での差は、ユーザーが通常は 1 つではなくさまざまなマシンを使用する場合は特に混乱を招きます。

AFS 製品サポート・グループは、中央 CellServDB ファイルを保持します。このファイルは、セル内のデータベース・サーバー・マシンが他の AFS セルにアクセスすることを許可するすべてのセルをリストします。このファイルと定期的に検査して、更新情報を調べることをお勧めします。ユーザーのセルをほかのユーザーが見ることができるようにする を参照してください。

ローカルの CellServDB の項目は、セルにアクセスするための 2 つの要件の 1 つです。もう1 つの要件は、セルの root.cell ボリュームは、標準では /afs ディレクトリーのサブディレクトリーとして、ローカルのファイル・スペースに取り付けられている、というものです。説明については、セルラー・マウント・ポイントを作成する方法 を参照してください。

注: | クライアント・マシン上の /usr/vice/etc/CellServDB ファイルが、ファイル・サーバー・マシンのローカル・ディスク上の /usr/afs/etc/CellServDB ファイルとは同一でないことに注意してください。サーバー・プロセスは決して外部セルに接続する必要がないため、サーバー・バージョンはサーバー・マシンのホーム・セル内のデータベース・サーバー・マシンのみをリストします。セルのデータベース・サーバー・マシンに変更が加えられた場合は、常にセル内のすべてのマシン上の両方のタイプの CellServDB ファイルを更新することが重要です。CellServDB ファイルのサーバー・バージョンの保守についての詳細は、 サーバー CellServDB ファイルの保守を参照してください。

### /usr/vice/etc/CellServDB ファイルの表示方法

1. テキスト・エディターまたは cat コマンドを使用して、 /usr/vice/etc/CellServDB ファイルの内容を表示します。デフォルトでは、ファイルのモード・ビットにより誰でもその内容を読み取ることができます。

          % cat /usr/vice/etc/CellServDB

### カーネル・メモリー内のデータベース・サーバー・マシンのリストを表示する

1. fs listcells コマンドを発行します。

          % fs listcells [&]

   ここで、 listc は、listcells の受け入れ可能な省略形です。

   シェルのプロンプトが即時に戻されるように、アンパーサンド (&) を入れます。この記号はコマンドがバックグラウンドで実行されるようにします。カーネルがデータベース・サーバー・マシンの IP アドレスのみを保管し、 fs コマンド解釈プログラムがセルのネーム・レゾリューション・サービス (ドメイン・ネーム・サービスまたはローカル・ホスト・テーブルなど) を使用してその IP アドレスをホスト名に変換するため、完全な出力を生成するにはある程度時間がかかります。このコマンドは、Ctrl-c などの割り込みシグナルを発行して、いつでも停止させることができます。

   出力は、各セルに対して 1 つの行を含み、形式は次のとおりです。

          Cell cell_name on hosts list_of_hostnames.

   ネーム・サービスは、ホスト名を大文字で戻すことがあります。ネーム・サービスが名前を全く解決できない場合は、その名前の IP アドレスを戻します。次の例は、3 つの可能性すべてを示します。

          % fs listcells
             .
             .
          Cell example.com on hosts db1.example.com db2.example.com db3.example.com
          Cell example.org on hosts SERVERA.EXAMPLE.ORG SERVERB.EXAMPLE.ORG
       			    SERVERC.EXAMPLE.ORG
          Cell ghi.org on hosts 191.255.64.111 191.255.64.112
             .
             .

### カーネル・メモリー内のデータベース・サーバー・マシンのリストを変更する

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. クライアント・マシンのソースとして CellServDB ファイルの中央コピーを使用する場合は、そのファイルのディレクトリーの ACL が l (ルックアップ)、 r (読み取り)、および w (書き込み) 許可を付与するかどうかを検査してください。通常のディレクトリーは、/afs/cell_name/common/etc です。必要に応じて、fs listacl コマンドを発行します。これについては、 ACL の表示 で詳しく説明しています。

          # fs listacl [<dir/file path>]

3. fs newcell コマンドを発行して、セルの項目をカーネル・メモリー内に追加または変更して入れます。各セルごとにコマンドを繰り返します。

   注: | このコマンドを使用してカーネル・メモリー内にあるセルの項目を完全に削除することはできません。まれに指定したセルへのアクセスを緊急に阻止する場合は、 CellServDB ファイルを編集してマシンをリブートする必要があります。

          # fs newcell <cell name> <primary servers>+ \
                       [-linkedcell <linked cell name>]

   ここで、

   n
     は、newcell の受け入れ可能な省略形です。

   cell name
     データベース・サーバー・マシンの新規リストを記録するセルの完全なインターネット・ドメイン名を指定します。

   primary servers
     セルの各データベース・サーバー・マシンの完全修飾ホスト名または IP アドレスを、小数点付き 10 進数の形式で指定します。指定したリストが既存のリストを完全に置換します。

   -linkedcell
     AFS セルの完全インターネット・ドメイン名を指定して、 DFS ファイル・セットを配置する目的で DCE セルにリンクします。マシンの AFS ユーザーが、 AFS/DFS 移行ツールキット・プロトコル変換プログラムを使用して DFS にアクセスする場合は、この引き数を使用することができます。説明については、AFS/DFS Migration Toolkit Administration Guide and Reference を参照してください。
4. 以下に示す 3 つの方法のうち 1 つを使用して、セルの項目を /usr/vice/etc/CellServDB ファイルに追加または編集してファイルに入れます。いずれの方法を使用する場合でも、 CellServDB ファイルの形式に記載されているフォーマット要件に必ず従ってください。
   - CellServDB ファイルの中央ソース・バージョンを保持し、パッケージ・プログラムを使用する場合は、まず最初にテキスト・エディターを使用してそのファイルの中央コピーを変更します。その後で、package コマンドを発行して、ファイルの内容をローカル・マシンに転送します。説明については、パッケージ・プログラムの実行を参照してください。

            # /etc/package -v -c <name of package file>

   - CellServDB ファイルの中央ソースを保持し、パッケージ・プログラムを使用する場合は、まず最初にテキスト・エディターを使用してそのファイルの中央コピーを変更します。その後で、cp コマンドを使用して、そのファイルをローカル /usr/vice/etc/CellServDB ファイルにコピーします。
   - 中央ソース CellServDB ファイルを使用しない場合は、ローカル・マシンの /usr/vice/etc/CellServDB ファイルを直接編集します。

## クライアントが Setuid プログラムを実行できるかどうかを決定する

setuid プログラム は、バイナリー・ファイルにおいて UNIX の setuid モード・ビットがオンになっているプログラムです。setuid プログラムの実行中は、そのプログラムを初期化したユーザーがそのバイナリー・ファイルの所有者のローカル一致 (UNIX UID) を取得します。したがって、所有者がローカル・ファイル・システム内で持っていた許可を付与されます。たいていの場合、発行者が取得する一致 (しばしば 有効 UID と呼ばれます) は、ローカル・スーパーユーザーの root です。

AFS は、有効 UID を認識しません。 setuid プログラムが AFS ファイルおよびディレクトリーにアクセスする場合は、setuid プログラムの所有者ではなく、そのプログラムを初期化した AFS ユーザーの現行の AFS 一致を使用してアクセスします。それにもかかわらず、setuid プログラムを AFS 内に保管して、 1 つ以上のクライアント・マシンが使用できるようにすることは有用です。AFS では、クライアント・マシンの管理者が、ローカル・キャッシュ・マネージャーに setuid プログラムの実行を許可させるかどうかを決定することができます。

デフォルトでは、キャッシュ・マネージャーは、所属するセルのホーム・セル内のすべてのプログラムが setuid 許可で実行されることを許可しますが、外部セルのプログラムからの setuid 許可を拒否します。あるプログラムは、ファイルが常駐するボリュームが存在するファイル・サーバー・マシンと同じセル内に所属します。このことは、ファイル・サーバー・マシンの /usr/afs/etc/ThisCell ファイルに指定されています。キャッシュ・マネージャーは、/usr/vice/etc/ThisCell ファイルを初期化の際に読み込むことによって、それ自身が所属するホーム・セルを判別します。

ローカル・マシンに関するセルの setuid 状況を変更するには、ローカル・スーパーユーザー root になり、 fs setcell コマンドを発行します。セルの現行の setuid 状況を判別するには、 fs getcellstatus コマンドを使用します。

fs setcell コマンドを発行する場合は、カーネル・メモリー内に記録されているセルの setuid 状況を直接変更します。したがって、マシンをリブートする必要はありません。しかしながら、マシンの AFS 初期設定ファイルに適切な fs setcell コマンドを追加しない場合は、デフォルトでない設定はマシンが次にリブートされるまで持続しません。

system:administrators グループのメンバーのみが、 AFS ファイルまたはディレクトリーに対して setuid モード・ビットをオンにすることができます。 setuid のモード・ビットがオンになると、UNIX の ls -l コマンドによって第三者のモード・ビットが x の代わりに s として表示されます。ただし、AFS フ ァイルまたはディレクトリーの場合は、ファイルが常駐するセルで setuid アクセス権が使用可能な場合にのみ、s が表示されます。

### セルの setuid 状況を判別する方法

1. fs getcellstatus コマンドを発行して、対象とする各セルの setuid 状況を検査します。

          % fs getcellstatus <cell name>

   ここで、

   getce
     は、getcellstatus の受け入れ可能な省略形です。

   cell name
     その setuid 状況を報告する各セルを指定します。完全なインターネット・ドメイン名、またはローカル /usr/vice/etc/CellServDB ファイルにリストされた他のセルと区別するドメイン名の短縮フォームです。

出力には、以下に示す各セルの setuid 状況が報告されます。

- ストリング `no setuid allowed` は、キャッシュ・マネージャーがそのセル内のプログラムが setuid 許可を使用して実行されることを許可しないことを示します。
- `setuid allowed` は、キャッシュ・マネージャーがそのセル内のプログラムが setuid 許可を使用して実行されることを許可することを示します。

### セルの setuid 状況を変更する方法

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. fs setcell コマンドを発行して、セルの setuid 状況を変更します。

          # fs setcell <cell name>+ [-suid] [-nosuid]

   ここで、

   setce
     は、setcell の受け入れ可能な省略形です。

   cell name
     -suid または -nosuid フラグで指定した状況に setuid 状況を変更する各セルを指定します。完全なインターネット・ドメイン名、またはローカル /usr/vice/etc/CellServDB ファイルにリストされた他のセルと区別するドメイン名の短縮フォームです。

   -suid
     指定する各セルのプログラムを、setuid 許可を使用して実行できるようにします。各セルに対して、このフラグまたは -nosuid フラグを指定します。あるいは両方を省略して setuid 許可を使用不可にします。

   -nosuid
     指定する各セルのプログラムを、setuid 許可を使用して実行できないようにします。各セルに対して、このフラグまたは -suid フラグを指定します。あるいは両方を省略して setuid 許可を使用不可にします。

## ファイル・サーバーのプローブ間隔を設定する

キャッシュ・マネージャーは、定期的にサーバー・マシンにプローブを送信して、サーバー・マシンがアクセス可能かどうかを確認します。キャッシュ・マネージャーは、特に、同じセル内のデータベース・サーバー・マシンおよびキャッシュ・マネージャーがキャッシュしたデータが存在するファイル・サーバーをプローブします。

あるサーバー・プロセスがプローブに対して応答しない場合は、クライアント・マシンはそのサーバー・プロセスがアクセス不能であると想定します。デフォルトでは、プローブの間隔は 3 分間であるため、あるサーバー・プロセスがいったんアクセス不能になってから再びアクセス可能になり、そのことをクライアントが認識するまでには 3 分間かかります。

プローブ間隔を調整するには、ローカル・スーパーユーザー root としてログインしているときに、 fs checkservers コマンドに -interval 引き数を指定します。新しい間隔の設定は、そのコマンドを再び発行するか、マシンをリブートするまで持続し、その後はデフォルトの設定に戻ります。デフォルト以外の設定をリブート以降も持続させるためには、マシンの AFS 初期設定ファイルに適切な fs checkservers コマンドを組み込みます。

### クライアントのファイル・サーバー・プローブ間隔を設定する

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. -interval 引き数を指定した fs checkservers コマンドを発行します。

          # fs checkservers -interval <seconds between probes>

   ここで、

   checks
     は、checkservers の受け入れ可能な省略形です。

   -interval
     プローブ間の秒数を指定します。ゼロより大きい整数値を指定します。

## クライアント・マシンのセル・メンバーシップを設定する

各クライアント・マシンは特定のセルに所属し、その内容は各クライアント・マシンのローカル・ディスク上の /usr/vice/etc/ThisCell に指定されています。マシンのセル・メンバーシップは、そのマシンにユーザーにとって重要な 3 つのデフォルトを決定します。

- マシンのユーザーが、login プログラムを使用するとき、または klog コマンドを発行するときに、トークン (認証) を取得するセル。これには、2 つの効果があります。
  - klog プログラムおよび AFS 仕様に変更されたログイン・ユーティリティーは、 ThisCell ファイルで指定されているセル内の認証サーバーに接続します。
  - klog プログラムおよび AFS 仕様に変更されたログイン・ユーティリティーは、 ThisCell ファイルの内容とユーザーが指定するパスワードを結合して、暗号化鍵を生成します。認証データベース内のユーザー項目には、パスワードとセル名の組み合わせによって生成された暗号化鍵が含まれます。 ThisCell ファイル内のセル名が正しくない場合は、ユーザーが正しいパスワードを指定してもユーザーは識別されません。
- キャッシュ・マネージャーがローカル・セル、またはホーム・セルであると判別するセル。キャッシュ・マネージャーは、所属するセルのローカル・セル内のプログラムが setuid 許可で実行されることを許可しますが、外部セルのプログラムには setuid 許可を許可しません。詳細な説明については、 クライアントが Setuid プログラムを実行できるかどうかを決定するを参照してください。
- 同じマシン上で実行されている AFS コマンド解釈プログラムが接続するデフォルトのデータベース・サーバー・マシン。

### クライアント・マシンのセル・メンバーシップを表示する方法

1. テキスト・エディターまたは cat コマンドを使用して、 /usr/vice/etc/ThisCell ファイルの内容を表示します。

          % cat /usr/vice/etc/ThisCell

### クライアント・マシンのセル・メンバーシップを設定する方法

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. テキスト・エディターを使用して、/usr/vice/etc/ThisCell ファイル内のセル名を置換します。
3. (オプション) マシンをリブートして、キャッシュ・マネージャーが即時に新しいセル名を使用できるようにします。適切なコマンドはマシンのシステム・タイプによって異なります。 klog プログラム、AFS 仕様に変更されたログイン・ユーティリティー、および AFS コマンド解釈プログラムは、次に起動されるときに新しいセル名を使用します。リブートする必要はありません。

          # sync

          # shutdown

## キャッシュ・データの更新を強制する

通常、AFS のコールバック機構は、キャッシュ・マネージャーがマシン上で実行されているアプリケーション・プログラムに対して、ファイルまたはディレクトリーの最新のバージョンを提供することを保証します。ただし、キャッシュ・マネージャーにキャッシュされたデータを廃棄させて、アプリケーション・プログラムが次にデータを要求したときに、キャッシュ・マネージャーがファイル・サーバーで使用可能な最新のバージョンをフェッチするように強制することもできます。

一度にフラッシュされるファイル・システムの要素数を制御することができます。

- 特定のファイルまたはディレクトリーをフラッシュする場合は、 fs flush コマンドを使用します。このコマンドは、キャッシュ・マネージャーが特定のファイルまたはディレクトリーからキャッシュしたデータおよび状況情報を廃棄するように強制します。このコマンドは、アプリケーション・プログラムのバッファーの情報、またはローカルで変更された情報は廃棄しません (キャッシュ内での変更であり、まだファイル・サーバーで永続的に保管されていないもの)。ただし、アプリケーションが次にその廃棄した要素のデータまたは状況情報を要求した場合は、キャッシュ・マネージャーはファイル・サーバーに接続してそれらのデータまたは情報を取得する必要があります。
- 特定のボリュームから、そこにキャッシュされていた内容をすべてフラッシュするには、fs flushvolume コマンドを使用します。このコマンドは、fs flush と同じように機能しますが、以下の 2 つの点で異なります。
  - キャッシュ・マネージャーは、指定したファイルまたはディレクトリーのボリュームと同じボリュームに含まれていたキャッシュ内のすべての要素のデータを廃棄します。
  - キャッシュ・マネージャーは、データのみを廃棄し、状況情報は廃棄しません。この差は、実際には小さな影響ですが、同じ要素に対してコマンドを使用したときに、ls コマンドの出力とは異なる場合があります。

コールバック機構の他に、キャッシュ・マネージャーには、ボリュームの位置の変更など、他の種類の変更を追跡する機構を備えています。ボリュームが移動して、キャッシュ・マネージャーがそのボリュームのどのデータにも長期間アクセスしていない場合は、キャッシュ・マネージャーのボリューム・ロケーション・レコードが間違っていることがあります。これを再同期するには、 fs checkvolumes コマンドを使用します。このコマンドを発行すると、キャッシュ・マネージャーは、ボリューム名、ID 名、およびロケーション間のマッピング・テーブルを新規に作成します。このことによって、キャッシュ・マネージャーは新規に再配置およびリネームしたボリュームを参照し、それらのボリュームのデータを提供します。

また、マウント・ポイントに関する情報がキャッシュ内で壊されてしまうことも起こり得ます。マウント・ポイントが破壊されると、fs lsmount コマンドの出力が誤っている、マウント・ポイントにディレクトリーを変更しようとしたり、マウント・ポイントの内容をリストしようとして失敗する、などの症状がでます。このような場合、fs flushmount コマンドを使用して、破壊されたマウント・ポイントを廃棄します。キャッシュ・マネージャーは、この次にパス名にマウント・ポイントを見付けたときは、それを再フェッチしなければなりません。キャッシュ・マネージャーはキャッシュされたマウント・ポイントを定期的に更新しますが、キャッシュされたマウント・ポイントをそれ以外の方法で即時に破棄するには、マシンをリブートしてキャッシュ・マネージャーを再初期化するしかありません。

### 特定のファイルまたはディレクトリーをフラッシュする方法

1. fs flush コマンドを発行します。

          % fs flush [<dir/file path>+]

   ここで、

   flush
     完全な形式でタイプする必要があります。

   dir/file path
     キャッシュからフラッシュする各ファイルまたはディレクトリー構造を指定します。現行作業ディレクトリーをフラッシュする場合はこの引き数を省略します。ディレクトリー構造をフラッシュしても、そのディレクトリー構造からキャッシュされたファイルまたはサブディレクトリーのすべてはフラッシュされません。

### ボリュームからすべてのデータをフラッシュする方法

1. fs flushvolume コマンドを発行します。

         % fs flushvolume [<dir/file path>+]

   ここで、

   flushv
     は、flushvolume の受け入れ可能な省略形です。

   dir/file path
     キャッシュからフラッシュする各ボリュームに含まれるファイルまたはディレクトリーを指定します。キャッシュ・マネージャーは、同じボリュームからフェッチした、キャッシュ内のすべての内容をフラッシュします。現行作業ディレクトリーを含むボリュームからフェッチしたすべてのキャッシュ・データをフラッシュする場合は、この引き数を省略します。

### キャッシュ・マネージャーがその他のボリュームの変更を認識する

1. fs checkvolumes コマンドを発行します。

          % fs checkvolumes

   ここで、checkv は、checkvolumes の受け入れ可能な省略形です。

次のコマンドは、コマンドが正常に終了したことを確認します。

       All volumeID/name mappings checked.

### 1 つ以上のマウント・ポイントをフラッシュする

1. fs flushmount コマンドを発行する。

          % fs flush [<dir/file path>+]

   ここで、

   flushm
     flushmount の最も短い受け入れ可能な省略形です。

   dir/file path
     キャッシュからフラッシュする各マウント・ポイントを指定します。現行作業ディレクトリーをフラッシュする場合はこの引き数を省略します。関連付けられているボリュームからキャッシュされたファイルまたはサブディレクトリーは影響を受けません。

## サーバーのプリファレンス・ランクの保守

この章の概説で説明したように、AFS はクライアント・サイドのデータ・キャッシングを使用し、コールバックを行って、セルのネットワーク通信量を削減します。また、キャッシュ・マネージャーは、ローカル・マシンに対するネットワークの接近性に基づいてサーバー・マシンに プリファレンス・ランク を割り当てることによって、ネットワークの使用をできるだけ効率的にしようとします。ランクは、可能な場合は、他のネットワークではなくそのランクのサブネットワークやネットワーク上にあるサーバー・マシンから、キャッシュ・マネージャーが情報を取り出すようにします。クライアントおよびサーバー・マシン間をデータが行き来するネットワーク距離を削減することによって、ネットワーク通信量が減少し、キャッシュ・マネージャーのアプリケーションへのデータ・デリバリー速度が増加します。

キャッシュ・マネージャーは、2 つの別々のプリファレンス・ランクの組を、カーネル・メモリーに保管します。ランクの最初の組は、ボリューム・ロケーション (VL) サーバー・プロセスを実行するマシンに適用されるので、 VL サーバー・マシン と呼ばれます。ランクの 2 番目の組は、ファイル・サーバー・プロセスを実行するマシンに適用されるので、 ファイル・サーバー・マシン と呼ばれます。この機能グループでは、キャッシュ・マネージャーがデフォルトのランクを設定する方法、fs setserverprefs コマンドを使用してデフォルトを変更または新規ランクを設定する方法、およびfs getserverprefs コマンドを使用してランクの現在の組を表示する方法について説明します。

### キャッシュ・マネージャーがデフォルトのランクを設定する方法

afsd プログラムは、キャッシュ・マネージャーを初期設定するときに、ローカルの /usr/vice/etc/CellServDB ファイルにリストされた各 VL サーバー・マシンに対して、 10,000 のプリファレンス・ランクを割り当てます。それから、このプログラムは、 0 (ゼロ) から 126 までの範囲から無作為に選択した 1 つの整数を追加して、ランクを無作為化します。この方法は、1 つのセル内の複数のマシンに同じランクを割り当てるのは避けられますが、異なるセルのマシンに同じランクを設定する可能性があります。これは、使用上の問題にはなりません。キャッシュ・マネージャーでは、1 度に 1 つのセル内のデータベース・サーバー・マシンのランクが比較されるからです。 AFS は、マルチホーム・データベース・サーバー・マシンの使用をサポートしますが、キャッシュ・マネージャーは、ローカルの /usr/vice/etc/CellServDB ファイルに各データベース・サー・マシンごとにリストされた単一のアドレスだけを使用します。Ubik だけが、マルチホーム・データベース・サーバー・マシンのマルチ・インターフェースを利用することができます。

キャッシュ・マネージャーは、VL サーバーからそのサーバーの VLDB レコードを入手するとき、マシンに常駐するボリュームに初めてアクセスするとき、プリファレンス・ランクをファイル・サーバーに割り当てます。マルチホームのマシンの場合、キャッシュ・マネージャーは、各インターフェース (各マシン用に VLDB が保管できるインターフェースの最大数まで。これについては、AFS Release Notesで指定されています) ごとに別のランクを割り当てます。キャッシュ・マネージャーは、インターフェースの IP アドレスとローカル・マシンのアドレスを比較し、以下のアルゴリズムを適用します。

- ローカル・マシンがファイル・サーバー・マシンである場合は、各インターフェースの基準ランクは 5,000 です。
- ファイル・サーバー・マシン・インターフェースがローカル・マシンと同じサブネットワーク上にある場合は、その基準ランクは 20,000 です。
- ファイル・サーバー・マシン・インターフェースがローカル・マシンと同じサブネットワーク上にあるか、またはローカル・マシンとのポイントツーポイント・リンクの最も遠い終端にある場合は、その基準ランクは 30,000 です。
- ファイル・サーバー・マシン・インターフェースがローカル・マシンと異なるネットワーク上にある場合、またはキャッシュ・マネージャーがそのインターフェースに関するネットワーク情報を入手できない場合は、その基準ランクは 40,000 です。

クライアント・マシンのインターフェースが 1 つだけの場合、キャッシュ・マネージャーはこれをサーバー・インターフェースの IP アドレスと比較し、アルゴリズムに従ってランクを設定します。クライアント・マシンがマルチホームであれば、キャッシュ・マネージャーは各ローカル・インターフェースのアドレスをサーバー・インターフェースと比較し、すべてのクライアント・インターフェースと比較して最下位のランクをサーバー・インターフェースに割り当てます。

ファイル・サーバー・マシン・インターフェースに基準ランクを割り当てた後、キャッシュ・マネージャーは、0 (ゼロ) から 15 までの範囲から無作為に選択した数字を、この値に追加します。たとえば、ローカル・マシンと同じサブネットワークにあるファイル・サーバー・マシン・インターフェースが、基準ランク 20,000 を受け取ったとしても、実際のランクは、20,000 と 20,015 の間の整数として記録されます。このプロセスにより、正確に同じランクを持つインターフェースの数は減少します。VL サーバー・マシンのランクの場合、外部セルからのファイル・サーバー・マシン・インターフェースは、ローカル・セルのインターフェースと同じランクを持つことができますが、これは問題になることがありません。特定のボリュームが存在するインターフェースの相対的ランクだけが関係があります。 AFS は、1 度に 1 つのセルにおいてのみ、ボリュームの記憶域をサポートします。

### キャッシュ・マネージャーによるプリファレンス・ランクの使用方法

各プリファレンス・ランクは、インターフェースの IP アドレスと 1 から 65,534 までの範囲の整数の対になっています。低いランク (小さい値の数字) は、プリファレンスが強いことを示します。いったん設定すると、ランクは、マシンをリブートするまで、またはfs setserverprefs コマンドを使用して変更するまで、継続します。

キャッシュ・マネージャーは、セルからボリューム・ロケーション情報をフェッチする必要があるときに、VL サーバー・マシンのランクを使用します。キャッシュ・マネージャーは、セルの VL サーバー・マシンのランクを比較して、最も高いランク (最も小さい整数) のマシン上の VL サーバー・プロセスに接続しようとします。その VL サーバーに到達できない場合は、その次に高いランクのVL サーバーへの接続を試行する、などというようにします。セルのすべてのマシンにアクセスできない場合は、キャッシュ・マネージャーは、セルからデータをフェッチすることができません。

同様に、ボリュームからデータをフェッチしなければならない場合、キャッシュ・マネージャーは、ボリュームが存在するマシンのインターフェースのランクを比較し、最も高いランクのインターフェースへの接続を試行します。そのインターフェースを経由するファイル・サーバー・プロセスに到達できない場合は、その次に高いランクの整数のインターフェースへの接続を試行する、などというようにします。ボリュームが存在するマシンのインターフェースのいずれにも接続できない場合、キャッシュ・マネージャーは、ボリュームからデータをフェッチすることができません。

### プリファレンス・ランクの表示および設定

キャッシュ・マネージャーが使用している、ファイル・サーバー・マシンのランクを表示するには、 fs getserverprefs コマンドを使用します。または、 -vlservers フラグを組み込み、VL サーバー・マシンのランクを表示します。デフォルトでは、標準出力ストリーム (stdout) 上に出力が表示されますが、 -file 引き数を組み込むことにより、ランクをファイルに書き込むことができます。

キャッシュ・マネージャーは、カーネルのランク・リストに、ホスト名ではなく IP アドレスを保管します。ただし、デフォルトでは、セルの名前のサービス (ドメイン名サーバーなど) またはローカル・ホスト表のいずれかを参照する変換ルーチンを呼び出した後、出力はインターフェースを識別します。この場合は、IP アドレスが表示されます。これは、変換しようとして失敗したからです。変換ステップをう回して、ホスト名ではなく IP アドレスを表示するには、 -numeric フラグを組み込みます。これにより、出力速度をかなり上げることができます。

fs setserverprefs コマンドを使用して、既存のプリファレンス・ランクをリセットしたり、キャッシュ・マネージャーがランクを設定していないファイル・サーバー・インターフェースや VL サーバー・マシンにランクの初期値を設定したりできます。設定したランクは、マシンがリブートするまで、または fs setserverprefs コマンドを再発行するまで、継続します。ランクをリブート以降も持続させるためには、マシンの AFS 初期設定ファイルに適切な fs setserverprefs コマンドを組み込みます。

デフォルトのランクの場合、キャッシュ・マネージャーは、無作為に選択した整数を、割り当てた各ランク範囲に加算します。ファイル・サーバー・マシン・インターフェースの場合、無作為化する数字は、0 (ゼロ) から 15 までの範囲です。VL サーバー・マシンの場合は、0 (ゼロ) から 126 までの範囲です。たとえば、ファイル・サーバー・マシン・インターフェースに 15,000 のランクを割り当てた場合、キャッシュ・マネージャーは、 15,000 から 15,015 までの間の整数を保管します。

VL サーバー・マシンのランクを割り当てるには、 fs setserverprefs コマンドに -vlserver 引き数を指定した後、ランクをリストします。

ファイル・サーバー・マシンのランクを割り当てるには、次の 3 つの可能な方法の 1 つまたは複数を使用します。

1. コマンド行において、-servers 引き数の後にこれらのランクをリストする。
2. ファイルにランクを記録し、そのファイルを -file で指定する。 fs getserverprefs コマンドに -file 引き数を組み込むことによって、正しい形式のファイルを簡単に生成することができます。
3. -stdin フラグを組み込み、標準入力ストリームによってランクを与える。これにより、セルに適したアルゴリズムを使用して、プリファレンスを生成するコマンドまたはスクリプトから、値を直接与えることができます。各対の間、または対の 2 つの部分の間に、1 つまたは複数のスペースを入れて、正しい形式でファイルを生成する必要があります。AFS の配布には、このようなスクリプトは組み込まれていません。したがって、この方法を使用したい場合は、自分でファイルを書き込む必要があります。

必要な場合、同じコマンド行において、-servers、-file、および -stdin オプションを任意に組み合わせることができます。これらのオプションを 1 つ以上使用して、同じインターフェースに対するランクを指定した場合、 the -servers 引き数によって割り当てられたランクが優先されます。同じコマンド行に -vlservers 引き数を指定して、VL サーバー・マシンのランクをファイル・サーバー・マシンのランクと同時に指定することもできます。

fs コマンド・インタープリターは、ホスト名または IP アドレスを検証しません。したがって、実際には存在しないホスト名やアドレスに対するランクも保管します。キャッシュ・マネージャーは、サーバー・マシンに対する同じ VLDB レコードが同じ不正確な情報を記録するのでなければ、このようなランクを使用しません。

### サーバーのプリファレンス・ランクを表示する

1. fs getserverprefs コマンドを発行して、ファイル・サーバー・マシンまたは VL サーバー・マシンに対するキャッシュ・マネージャーのプリファレンス・ランクを表示します。

          % fs getserverprefs [-file <output to named file>] [-numeric] [-vlservers]

   ここで、

   gp
     は、getserverprefs の受け入れ可能な別名です (gets は受け入れ可能な最も短い省略形です)。

   -file
     ランクのリストを書き込むファイルのパス名を指定します。この引き数を省略すると、リストが標準出力ストリーム (stdout) に表示されます。

   -numeric
     ランク付けされた各マシン・インターフェースのホスト名ではなく、IP アドレスが表示されます。このフラグを省略すると、アドレスがより長いホスト名に変換されます。

   -vlservers
     ファイル・サーバー・マシンではなく、VL サーバー・マシンのランクを表示します。

   次の例では、ファイル・サーバー・マシンのランクを表示します。 -numeric フラグは使用されていないので、IP アドレスの表示は現在、そのアドレスをホスト名に変換できないことを示しています。

          % fs gp
          fs5.example.com         20000
          fs1.example.com         30014
          server1.example.org  40011
          fs3.example.com         20001
          fs4.example.com         30001
          192.12.106.120      40002
          192.12.106.119      40001
             .   .   .   .   .     . .

### サーバーのプリファレンス・ランクを設定する

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. fs setserverprefs コマンドを発行して、 1 つまたは複数のファイル・サーバー・マシンまたは VL サーバー・マシンに対するキャッシュ・マネージャーのプリファレンス・ランクを設定します。

          # fs setserverprefs [-servers <fileserver names and ranks>+]  \
                              [-vlservers <VL server names and ranks>+]  \
                              [-file <input from named file>] [-stdin]

   ここで、

   sp
     は、setserverprefs の受け入れ可能な別名です (sets は受け入れ可能な最も短い省略形です)。

   -servers
     は、1 つまたは複数のファイル・サーバー・マシンとそのランクの対を指定します。完全に修飾されたホスト名または IP アドレスを、小数点付き 10 進数形式で各インターフェースに指定します。使用可能なランクは、1 から 65534 までの間の整数です。1 つまたは複数のブランクによって、対の各部分、および対と対を区切ります。

   -vlservers
     は、1 つまたは複数の VL サーバー・マシンとそのランクの対を指定します。完全に修飾されたホスト名または IP アドレスを、小数点付き 10 進数形式で各マシンに指定します。使用可能なランクは、1 から 65534 までの間の整数です。

   -file
     は、1 つまたは複数のファイル・サーバー・マシン・インターフェースとそのランクの対を含むファイルのパス名を指定します。ファイル内の別々の行に各組を配置します。インターフェースとランクの形式は、-servers 引き数を指定した場合と同じ形式を使用します。

   -stdin
     ファイル・サーバー・マシン・インターフェースの対およびランクが標準入力ストリーム (stdin) によって提供されていることを示します。対を生成するプログラムまたはスクリプトは、 -servers 引き数の場合と同じように、対を形式設定しなければなりません。

## マルチホーム・クライアント・マシンの管理

ファイル・サーバーがマルチホーム・クライアント・マシン (複数のネットワーク・インターフェースおよび IP アドレスを持つマシン) 上のキャッシュ・マネージャーとの通信を開始する場合、ファイル・サーバーはメッセージの送信先のアドレスを選択することができます。選択したインターフェースがアクセス不能であった場合は、送信先のインターフェースが代替のアドレスに自動的に切り替えられます。これにより、 AFS のパフォーマンスが向上します。つまり、あるインターフェースの故障は、ファイル・サーバーとキャッシュ・マネージャー間の通信を中断しません。

ファイル・サーバーは、以下の 2 つのタイプのメッセージを送信する際に、クライアント・インターフェースを選択することができます。

- キャッシュ・マネージャーがキャッシュ・ファイルで保持するコールバックを中断するメッセージ
- キャッシュ・マネージャーがまだアクセス可能であり応答していることを確認する ping メッセージ。ファイル・サーバーはこのようなメッセージを数分おきに送信します。

(ファイル・サーバーは、キャッシュ・マネージャーの AFS データ要求を埋め込む際にどのクライアント・インターフェースに応答するか選択しません。この場合、ファイル・サーバーは常に、要求を送信したキャッシュ・マネージャーを経由してクライアント・インターフェースに応答します。)

キャッシュ・マネージャーは、クライアント・マシン上の適格なインターフェースを初期設定し、これをカーネル・メモリーに記憶すると、そのリストをコンパイルします。キャッシュ・マネージャーがファイル・サーバーとの間で最初に接続を確立するときには、キャッシュ・マネージャーは、インターフェース・アドレスのリストも一緒に送信します。ファイル・サーバーは、このクライアント・マシンのアドレスを記録し、コールバックを中断するとき、または PING を送信するときにこのリストの最初に記載されているアドレスを使用します。そのインターフェースがアクセス不能である場合は、ファイル・サーバーは、リストに含まれるその他のすべてのインターフェースに同時にメッセージを送信します。最初に応答したインターフェースを使用して、ファイル・サーバーは以降のメッセージを送信します。

キャッシュ・マネージャーがファイル・サーバー用に登録するアドレスを制御するには、クライアント・マシンのローカル・ディスク上の /usr/vice/etc ディレクトリーにある 2 つのファイル (NetInfo および NetRestrict) にそのアドレスをリストします。NetInfo ファイルがキャッシュ・マネージャーの初期設定時に存在する場合は、キャッシュ・マネージャーは、インターフェースのリストの基本としてその内容を使用します。存在しない場合は、キャッシュ・マネージャーはオペレーティング・システムによって構成されたインターフェースのリストを使用します。その上でキャッシュ・マネージャーは、/usr/vice/etc/NetRestrict ファイルがある場合には、そのリストのアドレスを削除します。キャッシュ・マネージャーは、結果リストをカーネル・メモリーに記録します。

また、fs setclientaddrs コマンドを使用して、クライアント・マシンをリブートせずに、キャッシュ・マネージャーのカーネル・メモリー内に保管されているアドレス・リストを変更することができます。コマンド行で指定するアドレス・リストは、カーネル・メモリー内の現行リストを完全に置換します。ただし、実行した変更は、クライアント・マシンがリブートするときまで持続します。リブート後でも更新リストを持続させるには、そのインターフェースをローカル・ディレクトリー /usr/vice/etc の NetInfo ファイル (および使用できれば NetRestrict ファイル) にリストします。 (適切な fs setclientaddrs コマンドをマシンの AFS 初期設定スクリプトに配置する場合も有効ですが、上記の方法と比べるとそれ程効果的ではありません。キャッシュ・マネージャーがそのコマンドを読み取るときには、キャッシュ・マネージャーは既にインターフェースのリストをコンパイルしているからです。)

キャッシュ・マネージャーがファイル・サーバー用に現時点で登録しているアドレス・リストを確認するには、 fs getclientaddrs コマンドを使用します。

NetInfo または NetRestrict ファイルを変更する場合、あるいは fs getclientaddrs または fs setclientaddrs コマンドを発行するときには、以下の事項を考慮してください。

- fs setclientaddrs コマンドを発行するときには、アドレスの更新リストはキャッシュ・マネージャーが既に接続を確立したファイル・サーバーへは自動的に伝搬されません。ファイル・サーバーは、キャッシュ・マネージャーが最初に接続を確立したときにファイル・サーバー用に登録したリストを継続して使用します。以前接続したファイル・サーバーが更新リストを使用するように強制するには、それぞれのファイル・サーバー・マシンをリブートするか、クライアント・マシンの NetInfo ファイルまたは NetRestrict ファイル (あるいはその両方) を変更してからそのマシンをリブートする必要があります。
- fs コマンド・インタープリターは、 fs setclientaddrs コマンド行で指定する各アドレスが、実際にクライアント・マシン上のオペレーティング・システムによって構成されたものであるかどうかを検査します。そうでない場合は、コマンドは失敗し、指定したアドレスが `Nonexistent interface` であると指示するエラー・メッセージが戻されます。
- 先述のとおり、ファイル・サーバーは、キャッシュ・マネージャーのデータ要求に応答するときには登録されたアドレス・リストを使用しません (通信自体を開始するときは対照的に)。ファイル・サーバーは常に、キャッシュ・マネージャーが要求を送信したときに使用したインターフェースを使用して応答を送信しようと試みます。応答の試行が失敗した場合は、キャッシュ・マネージャーが登録したアドレス・リストではなく、ファイル・サーバー・マシンのネットワーク・ルーティング構成を使用して、応答を再度送信するための代替ネットワーク経路を選択します。
- キャッシュ・マネージャーは、ファイル・サーバーとの接続を確立するために使用するインターフェースを選択する際には、インターフェース・リストを使用しません。
- 指定するファイル・サーバーとキャッシュ・マネージャーが最初に通信した後で、システム管理者が fs setclientaddrs コマンドを発行した場合は、 fs getclientaddrs コマンドが表示するアドレス・リストは、必ずしも指定するファイル・サーバーが使用中のアドレスであるとは限りません。このコマンドは、キャッシュ・マネージャーが今後ファイル・サーバーと接続するときにどのアドレスを登録するかを決定するだけです。

### クライアントの NetInfo ファイルを作成または編集する

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. テキスト・エディターを使用して、/usr/vice/etc/NetInfo ファイルをオープンします。各行に小数点付き 10 進数の IP アドレスを配置します (たとえば、`192.12.107.33`)。1 行目に、各ファイル・サーバーが最初に使用するアドレスを配置します。最初のインターフェースに対する RPC が失敗すると、ファイル・サーバーはリストに含まれるその他のすべてのインターフェースに同時に RPC を送信するため、残りのマシンの順序は重要ではありません。最初に応答したインターフェースを使用して、ファイル・サーバーは PING を送信したり、コールバックを中断する RPC を送信します。
3. キャッシュ・マネージャーで更新リストがすぐに使用されるようにするには、マシンをリブートするか、または fs setclientaddrs コマンドを使用して、カーネル・メモリー内に直接同じアドレス・リストを作成します。

### クライアントの NetRestrict ファイルを作成または編集する

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. テキスト・エディターを使用して、/usr/vice/etc/NetRestrict ファイルをオープンします。各量に小数点付き 10 進数の IP アドレスを配置します。アドレスはどのような順序でもかまいません。そのフィールドで可能なすべてのアドレスを表すワイルドカードには、値 255 を使用します。たとえば `192.12.105.255` と入力した場合、キャッシュ・マネージャーは、192.12.105 サブネットのいずれのアドレスも登録しません。
3. キャッシュ・マネージャーで更新リストがすぐに使用されるようにするには、マシンをリブートするか、または fs setclientaddrs コマンドを使用して、使用禁止アドレスを含まないアドレス・リストを設定します。

### カーネル・メモリー内のアドレス・リストを表示する

1. fs getclientaddrs コマンドを発行します。

          % fs getclientaddrs

   ここで、gcは getclientaddrs の受け入れ可能な別名です (getcl は受け入れ可能な最も短い省略形です)。

出力は、各 IP アドレスを小数点付き 10 進数の形式で別々の行に表示します。

### カーネル・メモリー内のアドレス・リストを設定する

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. fs setclientaddrs コマンドを発行して、カーネル・メモリー内の現行のアドレス・リストを新規リストで置換します。

          # fs setclientaddrs [-address <client network interfaces>+]

   ここで、

   sc
     は、setclientaddrs の受け入れ可能な別名です (setcl は受け入れ可能な最も短い省略形です)。

   -address
     1 つまたは複数の IP アドレスを小数点付き 10 進数の形式で指定します (ホスト名は使用できません)。各アドレスは、1 つ以上のスペースを使用して分離します。

## 警告および状況メッセージの表示を制御する

デフォルトでは、キャッシュ・マネージャーは 2 つのタイプの警告および情報メッセージを生成します。

- キャッシュ・マネージャー、ユーザー・レベルの状況および警告情報を提供するユーザー・メッセージを、ユーザーの画面に送信します。
- キャッシュ・マネージャー、システム・レベルの状況および警告情報を提供するコンソール・メッセージを、クライアント・マシンに指定されたコンソールに送信します。

fs messages コマンドを使用して、キャッシュ・マネージャーがどちらかのタイプのメッセージを表示するのか、両方のタイプのメッセージを表示するのか、あるいはどちらのタイプも表示しないのかを制御することができます。メッセージは有用な情報を提供するため、メッセージを完全に使用不可にしないことをお勧めします。

キャッシュ・マネージャーの状況およびパフォーマンスをより積極的に監視する場合は、 afsmonitor プログラムを使用して、広範囲な統計セットを収集することができます (このセットは、ファイル・サーバーの統計も収集します)。パフォーマンス上に問題がある場合は、 fstrace コマンドの組を使用して、キャッシュ・マネージャー操作の低水準トレースを収集することができます。 AFS サポートおよび開発グループがこのトレースを分析することは、問題の解決に役立ちます。両方のユーティリティーについて確認するには、AFS パフォーマンスのモニターおよび監査を参照してください。

### 警告および状況メッセージの表示を制御する方法

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. -show 引き数を指定した fs messages コマンドを発行して、表示するメッセージのタイプを指定します。

          # fs messages -show <user|console|all|none>

   ここで、

   me
     は、messages の受け入れ可能な省略形です。

   -show
     表示するメッセージのタイプを指定します。次のいずれかの値を選択します。

     user
       ユーザー・メッセージをユーザーの画面に送信します。

     console
       コンソール・メッセージをコンソールに送信します。

     all
       ユーザー・メッセージをユーザーの画面に、そしてコンソール・メッセージをコンソールへ送信します (-show 引き数を省略すると、デフォルトになります)。

     none
       メッセージを完全に使用不可にします。

## システム・タイプ名の表示および設定

キャッシュ・マネージャーは、ローカル・クライアント・マシンのシステム・タイプ名を、カーネル・メモリーに保管します。キャッシュ・マネージャーは、ハードコーディングされた定義からデフォルト値を読み取ります。

キャッシュ・マネージャーでは、システム名を、AFS パス名の @sys 変数の代わりに使用します。この変数は、ローカル・ディスクから、クライアント・マシンのシステム・タイプのバイナリーを収容する AFS ディレクトリーへの記号リンクを作成するときに便利です。@sys 変数は、キャッシュ・マネージャーを自動的に適切なディレクトリーへと導くので、異なるシステム・タイプのクライアント・マシンに同じ記号リンクを作成することができます(パッケージ・プログラムを使用したクライアント・マシンの構成で説明するパッケージ・ユーティリティーを使用して、作成操作を自動化することもできます)。リンクは、マシンを新規システム・タイプにアップグレードした後も有効です。

AFS が割り当てるシステム・タイプ名を使用する場合は、構成は最も簡単です。リストについては、AFS Release Notesを参照してください。

カーネル・メモリーに保管されているシステム名を表示するには、sys または fs sysname コマンドを使用します。名前を変更するには、後者のコマンドの -newsys 引き数を追加します。

### システム・タイプ名を表示する

1. fs sysname あるいは sys コマンドを発行する。

          % fs sysname

          % sys

fs sysname コマンドの出力は以下の形式をしています。

       Current sysname is 'system_name'

sys コマンドは、system_name 文字列だけを表示し、その他のテキストは表示しません。

### システム・タイプ名を変更する

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. -newsys 引き数を使用して fs sysname コマンドを発行し、新規システム・タイプ名を指定します。

          # fs sysname <new sysname>

   ここで、

   sys
     は、sysname の受け入れ可能な省略形です。

   new sysname
     新しいシステム・タイプ名を指定します。

## 非同期書き込みを使用可能にする

デフォルトで、キャッシュ・マネージャーは、アプリケーション・プログラムがファイルをクローズするときに、即時にかつ同期的にファイル・サーバーにすべてのデータを書き込みます。つまり、キャッシュ・マネージャーが実際にすべてのファイルをファイル・サーバーに書き込むまで、 クローズのシステム呼び出しは戻されません。キャッシュ・マネージャーがファイルを非同期的に書き込むように、キャッシュ・マネージャーを使用可能にすることができます。その場合は、キャッシュ・マネージャーがアプリケーションに制御を戻すときに、ファイル・サーバーへ書き込むために残っているファイルの K バイト の数値を指定します。

非同期書き込みを使用可能にすると、通常アプリケーションの実行が速くなるため、日ごろかなり大きなサイズのファイルを扱うユーザーにとって有用です。しかしながら、いくつかの面倒な問題も発生します。マシンのユーザーが、潜在的な問題について理解し、それらの問題の発生を防止するために必要な知識を持っていない場合は、非同期書き込みを使用可能にしないことをお勧めします。面倒な問題は以下のとおりです。

- たいていの場合、キャッシュ・マネージャーはデフォルトの設定よりも速くアプリケーションに制御を戻します。ただし、必ずそうなることを保証するわけではありません。ユーザーは、必ずしもより高速なパフォーマンスを得られるわけではありません。
- 非同期書き込みが失敗した場合、正常に実行されたことを示すコードと共にクローズのシステム呼び出しが既に戻されているため、非同期書き込みが失敗したことをアプリケーションに通知することができません。
- 非同期書き込みは、書き込み操作によってボリュームの割り当て量が超過した場合でも、ユーザーがそのことを認識しない可能性を大きくします。通常、割り当て量を超えたファイルの部分は脱落しますが、次のようなメッセージがそのことを指示します。

         No space left on device

  不充分な割り当て量のために起こるデータの脱落を防止するためには、ファイルをクローズする前に、ファイルが存在するボリュームにこれから書き込むファイルに必要な空きスペースがあるかどうかを検査する必要があります。

fs storebehind コマンドを発行して非同期書き込みを使用可能にする場合は、キャッシュ・マネージャーがアプリケーション・プログラムに制御を戻すときに、ファイル・サーバーへ書き込むために残っているファイルの K バイト の数値を設定します。この設定は、マシン上で実行されるアプリケーションが操作するすべてのファイルに適用するか、または特定のファイルのみに適用することができます。

- すべてのファイルに適用する設定は、マシンに対するデフォルトの非同期保管と呼ばれ、マシンがリブートするまで持続します。たとえば、デフォルトの非同期保管を 10 KB に設定した場合、あるアプリケーションがファイルをクローズするときには、アプリケーションがクローズしたファイルのうちファイル・サーバーに書き込む内容の残りが 10 KB のみになるとすぐに、キャッシュ・マネージャーはそのアプリケーションに制御を戻すことができることを意味します。
- 個々のファイルに対する設定は、デフォルトの非同期保管をオーバーライドし、キャッシュ・マネージャーがファイルの特定の情報の追跡に使用する内部テーブル内のファイルに項目が存在する限り、デフォルトの非同期保管を接続します。一般的に、そのような項目はあるアプリケーションがファイルをクローズするか、または完全に終了するまで最低持続します。ただし、そのファイルが活動停止中であり、テーブル内のスロットを空にする必要がある場合は、キャッシュ・マネージャーは自由にその項目をリサイクルすることができます。テーブル内に項目が存在することを確認するためには、ファイルをクローズする直前に fs storebehind コマンドを発行します。

### デフォルトの非同期保管を設定する方法

1. まだの場合は、su コマンドを発行し、マシン上でローカル・スーパーユーザー root になります。

          % su root
          Password: root_password

2. -allfiles 引き数を指定した fs storebehind コマンドを発行する。

          # fs storebehind -allfiles  <new default (KB)> [-verbose]

   ここで、

   st
     は、storebehind の受け入れ可能な省略形です。

   -allfiles
     キャッシュ・マネージャーがファイルをクローズしたアプリケーションに制御を戻すときに、ファイル・サーバーへ書き込むために残っているファイルの K バイトの数値を設定します。

   -verbose
     新しい設定を確認するメッセージを生成します。

### 1 つまたは複数のファイルに対して非同期保管を設定する方法

1. fs listacl コマンドを発行して、非同期保管を設定する各ファイルのアクセス制御リスト (ACL) に対する w (書き込み) 許可を持っていることを確認します。このことについての完全な説明は、ACL の表示に記載されています。

          % fs listacl dir/file path

   上記の代替方法として、既にクライアント・マシン上のローカル・スーパーユーザー root になっていない場合は、 su コマンドを発行して登録します。

          % su root
          Password: root_password

2. -kbytes および -files 引き数を指定した fs storebehind コマンドを発行します。

          # fs storebehind -kbytes <asynchrony for specified names> \
                           -files <specific pathnames>+  \
                           [-verbose]

   ここで、

   st
     は、storebehind の受け入れ可能な省略形です。

   -kbytes
     キャッシュ・マネージャーが、 -files 引き数で指定するファイルをクローズしたアプリケーションに制御を戻すときに、ファイル・サーバーへ書き込むために残っているファイルの K バイトの数値を設定します。

   -files
     デフォルトの設定を上書きする非同期保管を設定する各ファイルを指定します。パス名の一部は、現行作業ディレクトリーとの関連で解釈されます。

   -verbose
     新しい設定を確認するメッセージを生成します。

### デフォルトの非同期保管を表示する方法

1. 引き数を全く指定しないか、 -verbose フラグのみを指定した fs storebehind コマンドを発行します。

          % fs storebehind  [-verbose]

   ここで、

   st
     は、storebehind の受け入れ可能な省略形です。

   -verbose
     デフォルトの非同期保管を報告する出力を生成します。

### 1 つまたは複数のファイルに対して非同期保管を表示する方法

1. -files 引き数のみを指定する fs storebehind コマンドを発行します。

          % fs storebehind -files
       <specific pathnames> +

   ここで、

   st
     は、storebehind の受け入れ可能な省略形です。

   -files
     非同期保管を表示する各ファイルを指定します。パス名の一部は、現行作業ディレクトリーとの関連で解釈されます。

出力は各ファイルを別々にリストします。指定したファイルに対して以前に値を設定している場合は、出力は次の内容を報告します。

       Will store up to y kbytes of file asynchronously.
       Default store asynchrony is x kbytes.

デフォルトの非同期保管がファイルに適用される場合は (ファイルに対して -kbytes 値を設定しなかったため)、出力は次の内容を報告します。

       Will store file according to default.
       Default store asynchrony is x kbytes.

[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]

(C) IBM Corporation 2000. All Rights Reserved