この章では、ユーザーがそこから AFS ファイル・スペースにアクセスし、AFS サーバー・プロセスと通信することができる任意のマシンである AFS クライアント・マシンについて説明します。(クライアント・マシンを適切に構成すると、クライアント・マシンは同時に AFS サーバー・マシンとして機能することができます)。AFS クライアント・マシンの特徴は次のとおりです。
マシンへクライアント機能を導入する方法について確認するためには、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 によって適切なデフォルトが設定されます。
構成の変更はすべてクライアント・マシン上で行う必要があります (コンソール上でまたは telnet 接続などの直接接続を介して)。キャッシュ・マネージャーをリモートで構成することはできません。システム管理者がいくつかのコマンドを発行するためには、ローカル・スーパーユーザー root としてログインする必要がありますが、その他のユーザーは何も特権を必要としません。この章で説明するすべてのファイルは、各 AFS クライアント・マシンのローカル・ディスク上に実際に常駐する必要があります (たとえば、ファイルが AFS 内のファイルへのシンボリック・リンクであってはなりません)。
AFS のパッケージ・プログラムには、通常クライアント・マシンの AFS 初期設定ファイルに設定する機能が含まれ、クライアント・マシンを構成する際のその他の設定作業を単純化します。パッケージ・プログラムを使用したクライアント・マシンの構成を参照してください。
この機能グループでは、すべてのクライアント・マシンのローカルな /usr/vice/etc ディレクトリー上に常駐する必要があるクライアント構成ファイルについて簡単に説明します。マシンがディスク・キャッシュを使用する場合は、キャッシュ・ファイル専用のパーティションが必要です。キャッシュ・ファイルは、慣例では、 /usr/vice/cache ディレクトリーにマウントされます。
Windows ユーザーへの注: 本書で説明されているファイルの一部は、Windows オペレーティング・システムを実行しているマシンには存在していないかもしれません。また、Windows は、パス名の要素を分離するのに円記号 ( \ ) を使用し、スラッシュ ( / ) は使用しません。
キャッシュ・マネージャーが正常に機能するためには、クライアント・マシンのローカル・ディスク上の /usr/vice/etc ディレクトリーに、特定のいくつかの構成ファイルが含まれていなければなりません。これらの構成ファイルは、キャッシュ・マネージャー構成の最も基本的な機能を制御します。
セル内のクライアント・マシンが一定の規則に従って実行されることが重要である場合は、これらの構成ファイルを中央ソースから更新することが最も効果的です。以下の説明には、最適なファイルの保守方法を説明する節の参照箇所が記載されています。
AFS インストールの手引き には、クライアント・マシンをインストールする際に行うこのファイルの作成方法が記載されています。マシンがメモリー・キャッシュを使用している場合は、キャッシュ・サイズを変更するためにファイルを編集して、マシンをリブートします。ディスク・キャッシュを使用するマシンでは、 fs setcachesize コマンドを発行することによってリブートせずにキャッシュ・サイズを変更することができます。説明については、キャッシュ・タイプ、サイズ、およびロケーションを決定するを参照してください。
キャッシュ・マネージャーは、セル内のデータベース・サーバー・マシンにアクセスして、そのファイル・スペースからファイルをフェッチできる必要があります。 CellServDB ファイル内の誤った情報または情報の欠落は、アクセスを遅らせたり、完全に遮断したりします。セルのデータベース・サーバー・マシンが変更された場合は、このファイルを更新してください。
afsd プログラムがキャッシュ・マネージャーを初期化すると、キャッシュ・マネージャーはファイルの内容をカーネル・メモリーにロードします。キャッシュ・マネージャーは、リブート時以外はそのファイルを読み取らないため、ファイルの変更をカーネル・メモリーに入れるためにはマシンをリブートする必要があります。ファイルを変更する代わりに、 fs newcell コマンドを発行して、変更を直接カーネル・メモリーに挿入することができます。中央のソースからファイルをアップグレードする方法も有用です。説明については、データベース・サーバー・マシンの情報を保持する を参照してください。
(クライアント・マシン上の CellServDB ファイルは、サーバー・マシン上の /usr/afs/etc ディレクトリー内で保持されているファイルと同一のものではありません。サーバー・マシン上の /usr/afs/etc ディレクトリー内のファイルは、ローカル・セルのデータベース・サーバー・マシンのみをリストします。サーバーの CellServDB ファイルの保持に関する説明は、 サーバー CellServDB ファイルの保守を参照してください)。
AFS インストールの手引き には、AFS クライアントの機能をインストールする際に行うこのファイルの作成方法が記載されています。クライアント・マシンのセル・メンバーシップの変更について確認するには、 クライアント・マシンのセル・メンバーシップを設定するを参照してください。
これらファイルの他にも、/usr/vice/etc ディレクトリーには、以下のタイプのファイルおよびサブディレクトリーが含まれる場合があります。
ディスク・キャッシュを使用するクライアント・マシンは、このキャッシュ専用のローカル・ディスク・ディレクトリーを保持する必要があります。標準的なマウント・ポイントは /usr/vice/cache ですが、利用できるより大きいスペースを持つ別のパーティションを使用することができます。
キャッシュ・ディレクトリー内のどのファイルも削除または直接変更しないでください。こららのファイルを変更または削除すると、カーネルの緊急事態が発生する場合があり、緊急事態からの唯一の回復方法はマシンをリブートすることだけです。デフォルトにより、ローカルのスーパーユーザー root だけがこれらのファイルを所有するため、これらのファイルを直接読み取ることができます。
メモリー・キャッシュを使用するクライアント・マシンは、これらのファイルに保管されるすべての情報を、代わりにマシン・メモリーで保持します。
この節では、メモリーまたはディスク・キャッシュの構成方法、どちらのタイプのキャッシュであるかを表示してサイズを設定する方法、およびディスク・キャッシュのためのキャッシュ・ディレクトリーのロケーションを設定する方法について説明します。
キャッシュ・マネージャーは、デフォルトによりディスク・キャッシュを使用します。ディスク・キャッシュは、優先されるキャッシュ・タイプです。メモリー・キャッシュを構成するには、通常マシンの 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 コマンドを使用してください。
% cat /usr/vice/etc/cacheinfo
% fs getcacheparms
ここで、 getca は、getcacheparms の受け入れ可能な省略形です。
出力は、コマンドを発行した時点でキャッシュ・マネージャーがキャッシュとして使用しているブロックの K バイトの数値を示します。たとえば、次のようになります。
AFS using 13709 of the cache's available 15000 1K byte blocks.
% su root Password: root_password
次の例では、AFS ファイル・スペースを /afs ディレクトリーにマウントし、キャッシュ・ディレクトリーとして /usr/vice/cache と命名し、キャッシュ・サイズを 50,000 KB に設定しています。
/afs:/usr/vice/cache:50000
% su root Password: root_password
注: | このコマンドはメモリー・キャッシュでは機能しません。 |
# fs setcachesize <size in 1K byte blocks (0 => reset)>
ここで、
% su root Password: root_password
# fs setcachesize 0
# fs setcachesize -reset
ここで、
キャッシュがフルでアプリケーション・プログラムが AFS からさらにデータを要求するとき、キャッシュ・マネージャーは、データ用の空きを作るためにキャッシュ・チャンクをフラッシュする必要があります。キャッシュ・マネージャーは、次の 2 つの要素を考慮します。
キャッシュ・マネージャーは、最も遠い最近に使用されたチャンクを最初にチェックします。チャンクがダーティーではない場合は、キャッシュ・マネージャーはそのチャンク内のデータを廃棄します。チャンクがダーティーである場合、キャッシュ・マネージャーは次に新しく使用されたチャンクのチェックするために移動します。キャッシュ・マネージャーは、十分な数の空のチャンクを作成するまで、この方法でチェックを続けます。
読み取り専用ボリュームからフェッチされたデータを含むチャンクは、定義により、ダーティーになることはありません。したがって、キャッシュ・マネージャーは常にこのようなチャンクを廃棄することができます。通常、キャッシュ・マネージャーは、読み取り / 書き込みボリュームからフェッチしたダーティーでないデータのチャンクを見付けることもできますが、キャッシュが小さい場合は、適切なデータを十分見付けることは難しくなります。キャッシュ・マネージャーが廃棄できるデータを何も見つけることができない場合は、 AFS からデータをさらに要求するアプリケーション・プログラムに対して、キャッシュ・マネージャーは入出力エラーを返します。通常、アプリケーション・プログラムにはそのようなエラーをユーザーに通知する機能は備わっていますが、エラーの原因は表示されません。
設定する必要があるキャッシュ構成パラメーターは、 AFS のマウント・ディレクトリー、ディスク・キャッシュ・ディレクトリーのロケーション、およびキャッシュ・サイズの 3 つです。これらのパラメーターは、 キャッシュ・タイプ、サイズ、およびロケーションを決定するで説明した /usr/vice/etc/cacheinfo ファイル内の 3 つのフィールドに対応しています。ただし、キャッシュ・パフォーマンスがよくなるように調整を行う場合は、 afsd コマンドに引き数を指定してその他のパラメーターを制御することができます。この節では、そのパラメーターの中でキャッシュ・パフォーマンスに最も直接的に影響するいくつかのものを説明します。 afsd コマンドの引き数について確認するには、 AFS Administration Referenceの参照ページを参照してください。
また、各システム・タイプの AFS の配布に含まれる AFS 初期設定スクリプトには、複数の afsd 引き数を異なるサイズおよび使用パターンのクライアント・マシンに適合するよう設定する変数がいくつか組み込まれています。スクリプトの最適な使用方法についての説明は、 AFS インストールの手引き のキャッシュ・マネージャーの構成セクションを参照してください。
キャッシュのパフォーマンスに最も直接的に影響するキャッシュ構成パラメーターは、以下のとおりです。
このパラメーターは、キャッシュのパフォーマンスに対して total size 程影響を与えません。しかしながら、このパラメーターを調整すると、キャッシュ・マネージャーが新しいデータのスペースを確保するためにキャッシュされたデータを廃棄する回数に影響します。たとえば、ディスク・キャッシュ・サイズを 50 MB に設定し、チャンクの数 (Vn ファイル) を 1,000 に設定すると仮定します。マシン上の 10人 のユーザーのそれぞれが、平均 20 KB のサイズを持つ 100 個の AFS ファイルをキャッシュした場合、 1,000 のチャンクはすべてフル (1 つのチャンクには 1 つの AFS からのデータだけを含むことができる) ですが、キャッシュは約 20 MB のデータだけを保持します。ユーザーがファイル・サーバーからさらにデータを要求すると、キャッシュの容量の 50% 以下までしか使用されていないにもかかわらず、キャッシュ・マネージャーはいくつかのチャンク・ファイルを再利用するために、キャッシュされたデータを廃棄する必要があります。このような状態では、チャンクの数を増やすと、キャッシュ・マネージャーがデータを廃棄する回数を減らすことができます。
チャンクのサイズを変更する主な理由は、チャンク・サイズが RPC ごとにフェッチするデータの量と関連しているからです。非常に高速のネットワーク・リンクの場合、そのネットワーク・リンクは、チャンク・サイズを増加するとパフォーマンスを向上させることができます。非常に低速のネットワークの場合は、チャンク・サイズを削減するのが最善です。
ディスク・キャッシュの場合は、dcache 項目は /usr/vice/cache/CacheItems に常駐します。少数の項目が、アクセスを速めるためにマシン・メモリーで複製されます。
メモリー・キャッシュの場合、dcache 項目の数はキャッシュ・チャンクの数と一致します。この問題の言外の意味についての説明は、メモリー・キャッシュ構成を制御する を参照してください。
キャッシュ・マネージャーがどのようにディスク・キャッシュ内のチャンクの数、チャンク・サイズ、および dcache 項目の数のデフォルトを決定するかについての説明は、 ディスク・キャッシュの構成 を参照してください。メモリー・キャッシュについては、メモリー・キャッシュ構成を制御する を参照してください。この説明では、デフォルトを上書きするための afsd コマンドの使用方法についても説明しています。
ディスク・キャッシュ内のキャッシュ・チャンク (Vn ファイル) の数のデフォルトは、 afsd コマンドを使用して計算され、以下の数値の中で最大のものと一致します。
この値は、-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 コマンドの組み合わせは次のとおりです。
/usr/vice/etc/afsd -memcache -blocks 5120
/usr/vice/etc/afsd -memcache -chunksize 12
/usr/vice/etc/afsd -memcache -blocks 6144 -chunksize 12
以下の組み合わせは、チャンクおよび dcache 項目の数を明示的に設定します。これらの組み合わせは、キャッシュ・サイズを間接的に設定し、キャッシュのサイズを決定するためにシステム管理者が手で計算する必要があるため、使用することをお勧めしません。代わりに、-blocks および -chunksize 引き数を、単独でまたは組み合わせて設定します。この場合、キャッシュ・マネージャーが、チャンクの数と dcache 項目自体を決定します。これらの組み合わせはお勧めしないため、例は示しません。
メモリー・キャッシュに対して、以下の引き数を使用しないでください。
AFS クライアント・マシンのユーザーが、セルの AFS ファイル・スペースおよびその他のサービスにアクセスする場合は、キャッシュ・マネージャーおよびその他のクライアント側のエージェントが、セル内のデータベース・サーバー・マシンの正確なリストを保持する必要があります。関連する機能は以下のとおりです。
あるマシンのユーザーがあるセルにアクセスできるようにするためには、システム管理者はそのセルのデータベース・サーバー・マシンの名前および IP アドレスを、そのマシンのローカル・ディスク上の /usr/vice/etc/CellServDB ファイルにリストする必要があります。マシンのホーム・セルの他に、ユーザーがアクセスするための任意の外部セルをリストすることができます。 (セルのファイル・スペースへのアクセスを可能にするためには、セルの root.cell ボリュームをローカル AFS ファイル・スペースにマウントする必要があります。ローカル AFS ファイル・スペースは、慣例として AFS ルート・ディレクトリー /afs のすぐ下に配置されています。説明については、AFS インストールの手引き を参照してください。)
afsd プログラムが実行されてキャッシュ・マネージャーが初期化されると、キャッシュ・マネージャーは CellServDB ファイルの内容を読み取ってカーネル・メモリーに入れます。キャッシュ・マネージャーは、マシンが次にリブートされるまでは再度そのファイルを調べることはありません。対照的に、AFS コマンドの組みに使用するコマンド解釈プログラム (fs および pts など) は、データベース・サーバー・プロセスに接続する必要があるたびに CellServDB ファイルを読み取ります。
セルのデータベース・サーバー・マシンのリストが変更されると、整合性のあるクライアントのパフォーマンスを確保するためには、 CellServDB ファイルおよびカーネル・メモリー内のリストの両方を変更する必要があります。CellServDB ファイルおよびカーネル・メモリーの両方を更新する方法として可能な方法の 1 つは、ファイルを編集した後でマシンをリブートすることです。リブートすることを省略するためには、代わりに以下の両方の操作を実行します。
CellServDB ファイルまたはカーネル・メモリー内での情報の脱落または誤りは、以下の結果をもたらします。
/usr/vice/etc/CellServDB ファイルを編集する際には、セルおよびマシンの項目に対して正しい形式を使用する必要があります。各セルには分離された項目があります。 1 行目の形式は次のとおりです。
>cell_name #organization
ここで、cell_name は、セルの完全インターネット・ドメイン名であり (たとえば、abc.com)、organization は任意の数のスペースおよび番号記号 (#) の後に続く任意指定フィールドであり、セルが対応している組織の名前を指定することができます (たとえば、ABC Corporation)。1 行目の後には、各データベース・サーバー・マシンを示す分離された行が続きます。各行の形式は次のとおりです。
IP_address #machine_name
ここで、IP_address は、小数点付き 10 進数形式のマシンの IP アドレスです (たとえば、192.12.105.3)。任意の数のスペースおよび番号記号 (#) の後に続くのは、マシンの完全に修飾されたホスト名を示す machine_name です (たとえば、db1.abc.com)。この場合、番号記号はコメントを示しているわけではなく、 machine_name は必須フィールドです。
セルが表示される順序は重要ではありませんが、クライアント・マシンのホーム・セルを最初に表示すると便利です。ファイルには、何もブランク行を入れないでください。最後の項目の後にもブランク行を入れてはなりません。
以下の例は、それぞれのセルに 3 つのデータベース・サーバー・マシンが存在する 2 つのセルの項目を示します。
>abc.com #ABC Corporation (home cell) 192.12.105.3 #db1.abc.com 192.12.105.4 #db2.abc.com 192.12.105.55 #db3.abc.com >stateu.edu #State University cell 138.255.68.93 #serverA.stateu.edu 138.255.68.72 #serverB.stateu.edu 138.255.33.154 #serverC.stateu.edu
整合性のあるクライアントのパフォーマンスを実現するためには、 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 ファイルの保守を参照してください。 |
% cat /usr/vice/etc/CellServDB
% fs listcells [&]
ここで、 listc は、listcells の受け入れ可能な省略形です。
シェルのプロンプトが即時に戻されるように、アンパーサンド (&) を入れます。この記号はコマンドがバックグラウンドで実行されるようにします。カーネルがデータベース・サーバー・マシンの IP アドレスのみを保管し、 fs コマンド解釈プログラムがセルのネーム・レゾリューション・サービス (ドメイン・ネーム・サービスまたはローカル・ホスト・テーブルなど) を使用してその IP アドレスをホスト名に変換するため、完全な出力を生成するにはある程度時間がかかります。このコマンドは、Ctrl-c などの割り込みシグナルを発行して、いつでも停止させることができます。
出力は、各セルに対して 1 つの行を含み、形式は次のとおりです。
Cell cell_name on hosts list_of_hostnames.
ネーム・サービスは、ホスト名を大文字で戻すことがあります。ネーム・サービスが名前を全く解決できない場合は、その名前の IP アドレスを戻します。次の例は、3 つの可能性すべてを示します。
% fs listcells . . Cell abc.com on hosts db1.abc.com db2.abc.com db3.abc.com Cell stateu.edu on hosts SERVERA.STATEU.EDU SERVERB.STATEU.EDU SERVERC.STATEU.EDU Cell ghi.org on hosts 191.255.64.111 191.255.64.112 . .
% su root Password: root_password
# fs listacl [<dir/file path>]
注: | このコマンドを使用してカーネル・メモリー内にあるセルの項目を完全に削除することはできません。まれに指定したセルへのアクセスを緊急に阻止する場合は、 CellServDB ファイルを編集してマシンをリブートする必要があります。 |
# fs newcell <cell name> <primary servers>+ \ [-linkedcell <linked cell name>]
ここで、
# /etc/package -v -c <name of package file>
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 が表示されます。
% fs getcellstatus <cell name>
ここで、
出力には、以下に示す各セルの setuid 状況が報告されます。
% su root Password: root_password
# fs setcell <cell name>+ [-suid] [-nosuid]
ここで、
キャッシュ・マネージャーは、定期的にサーバー・マシンにプローブを送信して、サーバー・マシンがアクセス可能かどうかを確認します。キャッシュ・マネージャーは、特に、同じセル内のデータベース・サーバー・マシンおよびキャッシュ・マネージャーがキャッシュしたデータが存在するファイル・サーバーをプローブします。
あるサーバー・プロセスがプローブに対して応答しない場合は、クライアント・マシンはそのサーバー・プロセスがアクセス不能であると想定します。デフォルトでは、プローブの間隔は 3 分間であるため、あるサーバー・プロセスがいったんアクセス不能になってから再びアクセス可能になり、そのことをクライアントが認識するまでには 3 分間かかります。
プローブ間隔を調整するには、ローカル・スーパーユーザー root としてログインしているときに、 fs checkservers コマンドに -interval 引き数を指定します。新しい間隔の設定は、そのコマンドを再び発行するか、マシンをリブートするまで持続し、その後はデフォルトの設定に戻ります。デフォルト以外の設定をリブート以降も持続させるためには、マシンの AFS 初期設定ファイルに適切な fs checkservers コマンドを組み込みます。
% su root Password: root_password
# fs checkservers -interval <seconds between probes>
ここで、
各クライアント・マシンは特定のセルに所属し、その内容は各クライアント・マシンのローカル・ディスク上の /usr/vice/etc/ThisCell に指定されています。マシンのセル・メンバーシップは、そのマシンにユーザーにとって重要な 3 つのデフォルトを決定します。
% cat /usr/vice/etc/ThisCell
% su root Password: root_password
# sync # shutdown
通常、AFS のコールバック機構は、キャッシュ・マネージャーがマシン上で実行されているアプリケーション・プログラムに対して、ファイルまたはディレクトリーの最新のバージョンを提供することを保証します。ただし、キャッシュ・マネージャーにキャッシュされたデータを廃棄させて、アプリケーション・プログラムが次にデータを要求したときに、キャッシュ・マネージャーがファイル・サーバーで使用可能な最新のバージョンをフェッチするように強制することもできます。
一度にフラッシュされるファイル・システムの要素数を制御することができます。
コールバック機構の他に、キャッシュ・マネージャーには、ボリュームの位置の変更など、他の種類の変更を追跡する機構を備えています。ボリュームが移動して、キャッシュ・マネージャーがそのボリュームのどのデータにも長期間アクセスしていない場合は、キャッシュ・マネージャーのボリューム・ロケーション・レコードが間違っていることがあります。これを再同期するには、 fs checkvolumes コマンドを使用します。このコマンドを発行すると、キャッシュ・マネージャーは、ボリューム名、ID 名、およびロケーション間のマッピング・テーブルを新規に作成します。このことによって、キャッシュ・マネージャーは新規に再配置およびリネームしたボリュームを参照し、それらのボリュームのデータを提供します。
また、マウント・ポイントに関する情報がキャッシュ内で壊されてしまうことも起こり得ます。マウント・ポイントが破壊されると、fs lsmount コマンドの出力が誤っている、マウント・ポイントにディレクトリーを変更しようとしたり、マウント・ポイントの内容をリストしようとして失敗する、などの症状がでます。このような場合、fs flushmount コマンドを使用して、破壊されたマウント・ポイントを廃棄します。キャッシュ・マネージャーは、この次にパス名にマウント・ポイントを見付けたときは、それを再フェッチしなければなりません。キャッシュ・マネージャーはキャッシュされたマウント・ポイントを定期的に更新しますが、キャッシュされたマウント・ポイントをそれ以外の方法で即時に破棄するには、マシンをリブートしてキャッシュ・マネージャーを再初期化するしかありません。
% fs flush [<dir/file path>+]
ここで、
% fs flushvolume [<dir/file path>+]
ここで、
% fs checkvolumes
ここで、checkv は、checkvolumes の受け入れ可能な省略形です。
次のコマンドは、コマンドが正常に終了したことを確認します。
All volumeID/name mappings checked.
% fs flush [<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 アドレスとローカル・マシンのアドレスを比較し、以下のアルゴリズムを適用します。
クライアント・マシンのインターフェースが 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 つまたは複数を使用します。
必要な場合、同じコマンド行において、-servers、-file、および -stdin オプションを任意に組み合わせることができます。これらのオプションを 1 つ以上使用して、同じインターフェースに対するランクを指定した場合、 the -servers 引き数によって割り当てられたランクが優先されます。同じコマンド行に -vlservers 引き数を指定して、VL サーバー・マシンのランクをファイル・サーバー・マシンのランクと同時に指定することもできます。
fs コマンド・インタープリターは、ホスト名または IP アドレスを検証しません。したがって、実際には存在しないホスト名やアドレスに対するランクも保管します。キャッシュ・マネージャーは、サーバー・マシンに対する同じ VLDB レコードが同じ不正確な情報を記録するのでなければ、このようなランクを使用しません。
% fs getserverprefs [-file <output to named file>] [-numeric] [-vlservers]
ここで、
次の例では、ファイル・サーバー・マシンのランクを表示します。 -numeric フラグは使用されていないので、IP アドレスの表示は現在、そのアドレスをホスト名に変換できないことを示しています。
% fs gp fs5.abc.com 20000 fs1.abc.com 30014 server1.stateu.edu 40011 fs3.abc.com 20001 fs4.abc.com 30001 192.12.106.120 40002 192.12.106.119 40001 . . . . . . .
% su root Password: root_password
# fs setserverprefs [-servers <fileserver names and ranks>+] \ [-vlservers <VL server names and ranks>+] \ [-file <input from named file>] [-stdin]
ここで、
ファイル・サーバーがマルチホーム・クライアント・マシン (複数のネットワーク・インターフェースおよび IP アドレスを持つマシン) 上のキャッシュ・マネージャーとの通信を開始する場合、ファイル・サーバーはメッセージの送信先のアドレスを選択することができます。選択したインターフェースがアクセス不能であった場合は、送信先のインターフェースが代替のアドレスに自動的に切り替えられます。これにより、 AFS のパフォーマンスが向上します。つまり、あるインターフェースの故障は、ファイル・サーバーとキャッシュ・マネージャー間の通信を中断しません。
ファイル・サーバーは、以下の 2 つのタイプのメッセージを送信する際に、クライアント・インターフェースを選択することができます。
(ファイル・サーバーは、キャッシュ・マネージャーの 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 コマンドを発行するときには、以下の事項を考慮してください。
% su root Password: root_password
% su root Password: root_password
% fs getclientaddrs
ここで、gcは getclientaddrs の受け入れ可能な別名です (getcl は受け入れ可能な最も短い省略形です)。
出力は、各 IP アドレスを小数点付き 10 進数の形式で別々の行に表示します。
% su root Password: root_password
# fs setclientaddrs [-address <client network interfaces>+]
ここで、
デフォルトでは、キャッシュ・マネージャーは 2 つのタイプの警告および情報メッセージを生成します。
fs messages コマンドを使用して、キャッシュ・マネージャーがどちらかのタイプのメッセージを表示するのか、両方のタイプのメッセージを表示するのか、あるいはどちらのタイプも表示しないのかを制御することができます。メッセージは有用な情報を提供するため、メッセージを完全に使用不可にしないことをお勧めします。
キャッシュ・マネージャーの状況およびパフォーマンスをより積極的に監視する場合は、 afsmonitor プログラムを使用して、広範囲な統計セットを収集することができます (このセットは、ファイル・サーバーの統計も収集します)。パフォーマンス上に問題がある場合は、 fstrace コマンドの組を使用して、キャッシュ・マネージャー操作の低水準トレースを収集することができます。 AFS サポートおよび開発グループがこのトレースを分析することは、問題の解決に役立ちます。両方のユーティリティーについて確認するには、AFS パフォーマンスのモニターおよび監査を参照してください。
% su root Password: root_password
# fs messages -show <user|console|all|none>
ここで、
キャッシュ・マネージャーは、ローカル・クライアント・マシンのシステム・タイプ名を、カーネル・メモリーに保管します。キャッシュ・マネージャーは、ハードコーディングされた定義からデフォルト値を読み取ります。
キャッシュ・マネージャーでは、システム名を、AFS パス名の @sys 変数の代わりに使用します。この変数は、ローカル・ディスクから、クライアント・マシンのシステム・タイプのバイナリーを収容する AFS ディレクトリーへの記号リンクを作成するときに便利です。@sys 変数は、キャッシュ・マネージャーを自動的に適切なディレクトリーへと導くので、異なるシステム・タイプのクライアント・マシンに同じ記号リンクを作成することができます(パッケージ・プログラムを使用したクライアント・マシンの構成で説明するパッケージ・ユーティリティーを使用して、作成操作を自動化することもできます)。リンクは、マシンを新規システム・タイプにアップグレードした後も有効です。
AFS が割り当てるシステム・タイプ名を使用する場合は、構成は最も簡単です。リストについては、AFS Release Notesを参照してください。
カーネル・メモリーに保管されているシステム名を表示するには、sys または fs sysname コマンドを使用します。名前を変更するには、後者のコマンドの -newsys 引き数を追加します。
% fs sysname % sys
fs sysname コマンドの出力は以下の形式をしています。
Current sysname is 'system_name'
sys コマンドは、system_name 文字列だけを表示し、その他のテキストは表示しません。
% su root Password: root_password
# fs sysname <new sysname>
ここで、
デフォルトで、キャッシュ・マネージャーは、アプリケーション・プログラムがファイルをクローズするときに、即時にかつ同期的にファイル・サーバーにすべてのデータを書き込みます。つまり、キャッシュ・マネージャーが実際にすべてのファイルをファイル・サーバーに書き込むまで、 クローズのシステム呼び出しは戻されません。キャッシュ・マネージャーがファイルを非同期的に書き込むように、キャッシュ・マネージャーを使用可能にすることができます。その場合は、キャッシュ・マネージャーがアプリケーションに制御を戻すときに、ファイル・サーバーへ書き込むために残っているファイルの K バイト の数値を指定します。
非同期書き込みを使用可能にすると、通常アプリケーションの実行が速くなるため、日ごろかなり大きなサイズのファイルを扱うユーザーにとって有用です。しかしながら、いくつかの面倒な問題も発生します。マシンのユーザーが、潜在的な問題について理解し、それらの問題の発生を防止するために必要な知識を持っていない場合は、非同期書き込みを使用可能にしないことをお勧めします。面倒な問題は以下のとおりです。
No space left on device
不充分な割り当て量のために起こるデータの脱落を防止するためには、ファイルをクローズする前に、ファイルが存在するボリュームにこれから書き込むファイルに必要な空きスペースがあるかどうかを検査する必要があります。
fs storebehind コマンドを発行して非同期書き込みを使用可能にする場合は、キャッシュ・マネージャーがアプリケーション・プログラムに制御を戻すときに、ファイル・サーバーへ書き込むために残っているファイルの K バイト の数値を設定します。この設定は、マシン上で実行されるアプリケーションが操作するすべてのファイルに適用するか、または特定のファイルのみに適用することができます。
% su root Password: root_password
# fs storebehind -allfiles <new default (KB)> [-verbose]
ここで、
% fs listacl dir/file path
上記の代替方法として、既にクライアント・マシン上のローカル・スーパーユーザー root になっていない場合は、 su コマンドを発行して登録します。
% su root Password: root_password
# fs storebehind -kbytes <asynchrony for specified names> \ -files <specific pathnames>+ \ [-verbose]
ここで、
% fs storebehind [-verbose]
ここで、
% fs storebehind -files <specific pathnames> +
ここで、
出力は各ファイルを別々にリストします。指定したファイルに対して以前に値を設定している場合は、出力は次の内容を報告します。
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.