この章では、CacheFS ファイルシステムの設定および管理の方法について説明します。
この章で説明する作業マップは、次のとおりです。
CacheFS に関するエラーの障害追跡については、「cachefspack エラーの障害追跡」を参照してください。
NFS version 4 および CacheFS ソフトウェアに関する重要な情報については、「NFS Version 4 と CacheFS の互換性の問題」を参照してください。
次の作業マップは、CacheFS ファイルシステムを使用するためのすべての作業を確認するために使用してください。各作業は、CacheFS ファイルシステムの作成とマウント、キャッシュのパッキングと保守などの一連の付加された作業を指しています。
作業 |
説明 |
参照先 |
---|---|---|
1. CacheFS ファイルシステムを作成してマウントします。 |
キャッシュを作成し、ファイルシステムをそのキャッシュにマウントします。 | |
2. CacheFS ファイルシステムを保守します。 |
キャッシュをマウント解除、削除、または作成し直して、CacheFS ファイルシステムを表示および変更します。 | |
3. (省略可能) CacheFS ファイルシステムをパックおよびパック解除します。 |
キャッシュをパックしてパッキングリストを使用するかどうかを決めます。キャッシュをパックすると、キャッシュ内の特定のファイルおよびディレクトリが常に更新されるようになります。 | |
4. CacheFS の統計情報を収集します。 |
キャッシュの性能や適切なキャッシュサイズを決めます。 |
CacheFS ファイルシステムは、サーバーとネットワークの負荷を軽減して NFS サーバーのパフォーマンスとスケーラビリティーを改善する汎用ファイルシステムキャッシュメカニズムです。CacheFS ファイルシステムは、階層化ファイルシステムとして設計されており、あるファイルシステムを別のファイルシステムのキャッシュに書き込む機能を持っています。NFS 環境では、CacheFS ファイルシステムはサーバーあたりのクライアント比率を高め、サーバーとネットワークの負荷を軽減し、ポイントツーポイントプロトコル (PPP) などの低速リンク上のクライアントのパフォーマンスを向上させます。
CacheFS ファイルシステムをクライアントシステム上に作成すると、キャッシュに書き込んだファイルシステムをクライアントがネットワークを経由しなくても、ローカルにアクセスできます。次の図は、CacheFS ファイルシステムの使用に関連する構成要素の関係を示しています。
キャッシュ内にマウントするように指定するファイルシステムを「バック」ファイルシステムと呼びます。バックファイルシステムは、NFS と HSFS (High Sierra File System) のどちらかになります。ユーザーがバックファイルシステムの一部であるファイルにアクセスしようとすると、そのファイルはキャッシュに書き込まれます。「フロント」ファイルシステムとは、キャッシュにマウントされ、ローカルのマウントポイントからアクセスされるファイルシステムです。フロントファイルシステムのタイプは、UFS でなければなりません。
CacheFS ファイルシステム内のファイルにはじめてアクセスするときは、要求の処理速度が遅く感じられる可能性があります。しかし、2 回目以降は、もっと短い時間で処理できます。
各キャッシュには、キャッシュの構造とその動作を決定する 1 組のパラメータが付いています。各パラメータは、次の表に示すデフォルト値に設定されています。デフォルト値は、フロントファイルシステム全体をキャッシュに使用するように指定しますが、これはファイルシステムをキャッシュに書き込む場合の推奨方法です。
表 19–1 CacheFS ファイルシステムのパラメータとそのデフォルト値
CacheFS ファイルシステムのパラメータ |
デフォルト値 |
定義 |
---|---|---|
maxblocks |
90 % |
CacheFS ファイルシステムがフロントファイルシステム内で要求できる最大ブロック数を設定します。 |
minblocks |
0 % |
CacheFS ファイルシステムがフロントファイルシステム内で要求できる最小ブロック数を設定します。 |
threshblocks |
85 % |
CacheFS ファイルシステムが minblocks で指定したより多数のブロックを要求する前に、フロントファイルシステム内で使用可能でなければならないブロック数を設定します。 |
maxfiles |
90 % |
CacheFS ファイルシステムがフロントファイルシステム内で要求できる使用可能な i ノードの最大数 (ファイル数) を設定します。 |
minfiles |
0 % |
CacheFS ファイルシステムがフロントファイルシステム内で要求できる使用可能な i ノードの最小数を設定します。 |
threshfiles |
85 % |
CacheFS ファイルシステムが minfiles で指定したより多くのファイルを要求する前に、フロントファイルシステム内で使用可能でなければならない i ノード数を設定します。 |
通常、これらのパラメータ値を変更する必要はありません。最適のキャッシュ動作が得られるデフォルト値に設定されています。ただし、キャッシュに使用されないフロントファイルシステム内に空き空間があり、それをほかのファイルシステムに使用する場合は、maxblocks と maxfiles の値を変更することをお勧めします。この変更を行うには、cfsadmin コマンドを使用します。次に例を示します。
$ cfsadmin -o maxblocks=60 |
次の作業マップの手順を参照して、CacheFS ファイルシステムを作成およびマウントしてください。
作業 |
説明 |
参照先 |
---|---|---|
1. キャッシュに書き込むファイルシステムを共有します。 |
キャッシュに書き込むファイルシステムが共有されていることを確認します。 | |
2. キャッシュを作成します。 |
cfsadmin コマンドを使用してキャッシュを作成します。 | |
3. ファイルシステムをキャッシュにマウントします。 |
次のいずれかの方法を使用して、ファイルシステムをキャッシュにマウントします。 |
|
|
mount コマンドで、CacheFS ファイルシステムをマウントします。 | |
|
/etc/vfstab ファイルを編集して、CacheFS ファイルシステムをマウントします。 | |
|
autofs サービスを使用して、キャッシュされたファイルシステムをマウントします。 |
クライアントシステムでスーパーユーザーになります。
# cfsadmin -c /cache-directory |
cache-directory は、キャッシュがあるディレクトリの名前を示します。
詳細は、cfsadmin(1M) のマニュアルページを参照してください。
キャッシュを作成し終わったら、キャッシュディレクトリ内で処理を実行しないでください。何か実行すると、CacheFS ソフトウェア内で矛盾が生じる可能性があります。
次の例は、デフォルトのキャッシュパラメータ値を使用して、/local/mycache ディレクトリ内にキャッシュを作成する方法を示しています。
# mkdir /local # cfsadmin -c /local/mycache |
キャッシュにマウントされるファイルシステムを指定して、ユーザーがそのファイルシステム内のファイルにローカルにアクセスできるようにします。実際には、各ファイルは、ユーザーがアクセスするまではキャッシュに書き込まれません。
次の表に、CacheFS ファイルシステムをマウントする 3 つの方法を示します。
CacheFS ファイルシステムのマウント方法 |
CacheFS マウント方法の使用頻度 |
---|---|
mount コマンドを使用する方法 |
同じファイルにアクセスするには、システムをリブートするたびに mount コマンドを使用します。 |
/etc/vfstab ファイルを編集する方法 |
1 度だけですみます。/etc/vfstab ファイルの内容は、システムをリブートしたあとも変更されずに残ります。 |
autofs を使用する方法 |
1 度だけですみます。autofs のマップは、システムをリブートしたあとも変更されずに残ります。 |
いずれかの方法を選択してファイルシステムをマウントしてください。
共有可能なファイルシステムしかマウントできません。ファイルシステムの共有については、share(1M) のマニュアルページを参照してください。
CacheFS ファイルシステムでは、ルート (/) と /usr のファイルシステムをキャッシュに書き込むことはできません。
クライアントシステムでスーパーユーザーになります。
必要に応じて、マウントポイントを作成します。
# mkdir /mount-point |
マウントポイントはどこからでも作成できますが、UFS ファイルシステムでなければなりません。次の手順のように、mount コマンドで CacheFS オプションを使用すると、作成するマウントポイントが指定したキャッシュディレクトリ内のキャッシュに書き込まれるように指定できます。
ファイルシステムをキャッシュにマウントします。
# mount -F cachefs -o backfstype=fstype,cachedir=/cache-directory[,options] /back-filesystem /mount-point |
キャッシュがある UFS ディレクトリの名前。「キャッシュを作成する方法」でキャッシュを作成するときに指定した名前と同じです。
ファイルシステムをキャッシュにマウントするときに追加できるほかのマウントオプション。CacheFS の mount オプションの詳細は、mount_cachefs(1M) のマニュアルページを参照してください。
キャッシュにマウントするバックファイルシステムのマウントポイント。バックファイルシステムが NFS ファイルシステムである場合は、ファイルシステムのマウント元となるサーバーのホスト名と、キャッシュにマウントするファイルシステム名 (コロンで区切る) を指定する必要があります。たとえば、merlin: /data/abc。
ファイルシステムのマウント先となるディレクトリ。
作成したキャッシュが実際にマウントされたかどうかを確認します。
# cachefsstat /mount-point |
/mount-point は作成した CacheFS ファイルシステムです。
次に例を示します。
# cachefsstat /docs /docs cache hit rate: 100% (0 hits, 0 misses) consistency checks: 1 (1 pass, 0 fail) modifies: 0 garbage collection: 0 |
ファイルシステムがキャッシュにマウントされなかった場合は、次のようなエラーメッセージが表示されます。
# cachefsstat /mount-point cachefsstat: mount-point: not a cachefs mountpoint |
cachefsstat コマンドの詳細は、「CacheFS の統計情報の収集」を参照してください。
次の例は、NFS ファイルシステム merlin:/docs を /docs という CacheFS ファイルシステムとして、/local/mycache というキャッシュにマウントする方法を示しています。
# mkdir /docs # mount -F cachefs -o backfstype=nfs,cachedir=/local/mycache merlin:/docs /docs |
次の例は、Solaris 10 DVDを /cfssrc という CacheFS ファイルシステムとして使用できるようにする方法を示しています。DVD には書き込めないので、引数 ro を指定して CacheFS ファイルシステムを読み取り専用にします。この例では、リムーバブルメディアサービスを実行していないものとします。
# mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /sol10 # mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst, backpath=/sol10 /dev/dsk/c0t6d0s0 /cfssrc # ls /cfssrc Copyright Solaris_10 |
次の例は、vold を実行しながら、Solaris 10 DVD を CacheFS ファイルシステムとしてマウントする方法を示しています。
# mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst, backpath=/cdrom/sol_10_sparc/s0 /vol/dev/dsk/c0t2d0/sol_10_sparc/s0 /cfssrc |
次の例は、vold を実行しながら、DVD を CacheFS ファイルシステムとしてマウントする方法を示しています。
# mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst, backpath=/cdrom/epson /vol/dev/dsk/c0t2d0/epson /drvrs |
次の例では、demandconst オプションを使用して、NFS CacheFS ファイルシステム /docs の整合性検査を指定します。/docs のバックファイルシステムは merlin:/docs です。詳細は、「CacheFS ファイルシステムの整合性検査」を参照してください。
# mount -F cachefs -o backfstype=nfs,cachedir=/local/mycache,demandconst merlin:/docs /docs |
クライアントシステムでスーパーユーザーになります。
エディタを使用して、マウントするファイルシステムを /etc/vfstab ファイル内で指定します。
下の例を参照してください。
/etc/vfstab ファイルの詳細は、「/etc/vfstab ファイルのフィールドの説明」を参照してください。
CacheFS ファイルシステムをマウントします。
# mount /mount-point |
あるいはシステムをリブートします。
次の例は、キャッシュされたディレクトリ /opt/cache にマウントされるリモートシステム starbug からの /data/abc ディレクトリ用の /etc/vfstab エントリを示しています。
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # starbug:/data/abc /local/abc /opt/cache cachefs 7 yes local-access,bg, nosuid,demandconst,backfstype=nfs,cachedir=/opt/cache |
自動マウントマップ内で -fstype=cachefs マウントオプションを指定して、autofs によってファイルシステムをキャッシュにマウントします。CacheFS のマウントオプション (backfstype や cachedir など) も、自動マウントマップ内で指定します。
自動マウントマップの詳細は、『Solaris のシステム管理 (ネットワークサービス)』の「autofs 管理作業の概要」または automount(1M) のマニュアルページを参照してください。
クライアントシステムでスーパーユーザーになります。
エディタを使用して、次の 1 行を auto_direct マップに追加します。
/mount-point -fstype=cachefs,cachedir=/directory,backfstype=nfs server:/file-system |
エディタを使用して、次の 1 行を auto_master マップに追加します。
/- |
/- エントリによって、auto_direct マップを検査するように指示します。
システムを再起動します。
エントリが正しく作成されたか確認するには、次のようにキャッシュにマウントしたファイルシステムにカレントディレクトリを変更して内容を表示します。
# cd /filesystem # ls |
次の auto_direct エントリは、CacheFS ファイルシステムを /docs ディレクトリに自動的にマウントします。
/docs -fstype=cachefs,cachedir=/local/mycache,backfstype=nfs merlin:/docs |
CacheFS ファイルシステムを設定し終わったら、保守作業を多少行う必要があります。CacheFS ファイルシステムの保守作業を行う必要がある場合は、次の作業マップの手順 (オプション) に従ってください。
作業 |
説明 |
参照先 |
---|---|---|
CacheFS ファイルシステムを変更します。 |
キャッシュをマウント解除、削除、または作成し直して、CacheFS ファイルシステムの動作を変更します。 | |
CacheFS ファイルシステム情報を表示します。 |
cfsadmin コマンドを使用して、CacheFS ファイルシステムに関する情報を表示します。 | |
整合性検査を実行します。 |
cfsadmin コマンドを使用して必要に応じて整合性検査を実行します。 | |
CacheFS ファイルシステムを削除します。 |
umount コマンドと cfsadmin コマンドを使用して、CacheFS ファイルシステムを削除します。 | |
CacheFS ファイルシステムの整合性を検査します。 |
fsck_cachefs コマンドを使用して、CacheFS ファイルシステムの整合性を検査します。 |
この節では、CacheFS ファイルシステムの保守方法について説明します。
/etc/vfstab ファイルを使用してファイルシステムをマウントしている場合は、このファイル内でファイルシステムオプションを編集してキャッシュを変更します。autofs を使用している場合は、autofs マップ内でファイルシステムオプションを編集してキャッシュを変更します。
キャッシュ内でファイルシステムを変更する場合は、キャッシュを削除してから作成し直す必要があります。また、ファイルシステムの共有方法とアクセス方法によっては、マシンをシングルユーザーモードでリブートしなければならない場合があります。
次の例では、キャッシュが削除されてから再び作成され、ファイルシステム /docs に指定された demandconst オプションを使用して再びマウントされます。
# shutdown -g30 -y . . . Root password for system maintenance (control-d to bypass): single-user privilege assigned to /dev/console. . . . Here is where you might be prompted to run fsck on the file system where the cache is located. # fsck /local # mount /local # cfsadmin -d all /local/mycache # cfsadmin -c /local/mycache # init 6 . . . console login: password: # mount -F cachefs -o backfstype=nfs,cachedir=/local/cache1,demandconst merlin:/docs /docs # |
クライアントシステムでスーパーユーザーになります。
指定したキャッシュにマウントされたすべてのファイルシステムに関する情報を表示します。
# cfsadmin -l /cache-directory |
/cache-directory は、キャッシュがあるディレクトリの名前です。
次の例は、/local/mycache キャッシュディレクトリに関する情報を示しています。この例では、/docs ファイルシステムが /local/mycache にキャッシュされます。最終行には、CacheFS ファイルシステムの名前が表示されます。
# cfsadmin -l /local/mycache cfsadmin: list cache FS information maxblocks 90% minblocks 0% threshblocks 85% maxfiles 90% minfiles 0% threshfiles 85% maxfilesize 3MB merlin:_docs:_docs # |
CacheFS ソフトウェアでは、キャッシュされたディレクトリとファイルが最新の状態に保たれることを保証するために、キャッシュに格納されているファイルの整合性を定期的に検査します。整合性を検査するために、CacheFS ソフトウェアでは現在の変更時刻を前回の変更時刻と比較します。変更時刻が異なる場合は、そのディレクトリまたはファイルに関するすべてのデータと属性がキャッシュから消去されます。そして、バックファイルシステムから新しいデータと属性が取り出されます。
整合性検査は、-o demandconst オプションを使用してマウントされたファイルシステムに対して明示的に要求した場合にのみ実行できます。このオプションでファイルシステムをキャッシュにマウントした場合は、-s オプションを指定した cfsadmin コマンドを実行して整合性検査を要求します。デフォルトでは、ファイルがアクセスされるたびに、各ファイルの整合性が検査されます。ファイルがアクセスされなければ、検査は実行されません。-o demandconst オプションを使用すると、整合性検査によってネットワークがいっぱいになるという事態を回避できます。
詳細は、mount_cachefs(1M) のマニュアルページを参照してください。
クライアントシステムでスーパーユーザーになります。
ファイルシステムをキャッシュにマウントし、キャッシュの整合性検査を指定します。
# mount -F cachefs -o backfstype=nfs,cachedir=/directory,demandconst server:/file-system /mount-point |
特定の CacheFS ファイルシステムに対する整合性検査を開始します。
# cfsadmin -s /mount-point |
クライアントシステムでスーパーユーザーになります。
CacheFS ファイルシステムをマウント解除します。
# umount /mount-point |
/mount-point は、削除する CacheFS ファイルシステムを示します。
CacheFS ファイルシステムの名前 (キャッシュ ID) を判別します。
# cfsadmin -l /cache-directory cfsadmin: list cache FS information maxblocks 90% minblocks 0% threshblocks 85% maxfiles 90% minfiles 0% threshfiles 85% maxfilesize 3MB cache-ID # |
指定したキャッシュから CacheFS ファイルシステムを削除します。
# cfsadmin -d cache-ID /cache-directory |
CacheFS ファイルシステム名を表し、この名前は、cfsadmin -l コマンドからの出力の最終行に表示されます。詳細は、「CacheFS ファイルシステムに関する情報を表示する方法」を参照してください。cache-ID に all を指定すると、特定のキャッシュに書き込まれた CacheFS ファイルシステムをすべて削除できます。
キャッシュがあるディレクトリを指定します。
CacheFS ファイルシステムが削除されたことを確認します。
直前に削除したファイルシステムのキャッシュ ID が、cfsadmin -l の出力に表示されなくなります。
# cfsadmin -l /cache-directory cfsadmin: list cache FS information maxblocks 90% minblocks 0% threshblocks 85% maxfiles 90% minfiles 0% threshfiles 85% maxfilesize 3MB # |
このコマンド出力に指定されるフィールドについては、cfsadmin(1M) のマニュアルページを参照してください。
キャッシュのリソース数を更新します。
# fsck -F cachefs /cache-directory |
詳細は、「CacheFS ファイルシステムの整合性を検査する方法」を参照してください。
次の例は、キャッシュからファイルシステムを削除する方法を示しています。
# umount /cfssrc # cfsadmin -l /cfssrc # cfsadmin -d _dev_dsk_c0t6d0s0:_cfssrc # cfsadmin -l # fsck -F cachefs /cache-directory |
fsck コマンドを使用して、CacheFS ファイルシステムの整合性を検査します。何も操作しなくても、fsck コマンドの CacheFS バージョンによって問題が自動的に解決されます。fsck コマンドはブート時またはファイルシステムのマウント時に自動的に実行されるため、CacheFS ファイルシステムに対して fsck コマンドを手作業で実行する必要はありません。整合性を手作業で検査する場合は、次の手順を使用できます。
詳細は、fsck_cachefs(1M) のマニュアルページを参照してください。
クライアントシステムでスーパーユーザーになります。
指定されたキャッシュ内でファイルシステムを検査します。
# fsck -F cachefs [-m -o noclean] /cache-directory |
fsck コマンドに CacheFS ファイルシステムを検査させますが、修復は行いません。
CacheFS ファイルシステムに対する検査のみを実行させます。修復は行いません。
キャッシュがあるディレクトリの名前を指定します。
次の例は、/local/mycache キャッシュに書き込まれているファイルシステムを検査する方法を示しています。
# fsck -F cachefs /local/mycache # |
次の作業マップでは、CacheFS ファイルシステムのパッキングに関連する手順について説明します。これらの手順はすべてオプションです。
作業 |
説明 |
参照先 |
---|---|---|
ファイルをキャッシュにパックします。 |
キャッシュにロードされるファイルとディレクトリを識別し、それらをパックします。パッキングは、これらのファイルのコピーがキャッシュで利用できることを保証します。 | |
パッキングリストを作成します。 |
キャッシュにパックするファイルを個々に指定しない場合は、パッキングリストを作成します。 | |
パッキングリストを使ってファイルをキャッシュにパックします。 |
キャッシュにパックするファイルが記載されているパッキングリストの名前を指定します。 | |
キャッシュからファイルまたはパッキングリストのパッキングを解除します。 |
不要になったファイルをキャッシュから削除します。 |
「キャッシュからファイルまたはパッキングリストのパッキングを解除する方法」「キャッシュからファイルまたはパッキングリストのパッキングを解除する方法」 |
パックされたファイルの情報を表示します。 |
パックしたファイルに関する情報 (パッキング状況など) を表示します。 |
一般的な使い方では、設定が終わると、CacheFS ソフトウェアは、ユーザーが要求しなくても自動的に適切な動作をします。最近使用されたファイルがキャッシュされます。「パッキング」機能を使用するとキャッシュ内で、特定のファイルまたはディレクトリを常に最新の状態で保持できるので、より積極的にキャッシュを管理できます。
cachefspack コマンドを使用すると、キャッシュにロードするファイルとディレクトリを指定できます。このコマンドは、これらのファイルのコピーがキャッシュで利用できることを保証します。
パッキングリストには、特定のファイル名やディレクトリ名が入っています。ほかのパッキングリストを入れることも可能です。この機能によって、たくさんの項目をキャッシュにパックする場合に、個々のファイルやディレクトリを指定する手間が省けます。
次のように、-h オプションを使用すると、cachefspack のすべてのオプションの簡単なヘルプ情報を出力できます。
$ cachefspack -h Must select 1 and only 1 of the following 5 options -d Display selected filenames -i Display selected filenames packing status -p Pack selected filenames -u Unpack selected filenames -U Unpack all files in directory 'dir' -f Specify input file containing rules -h Print usage information -r Interpret strings in LIST rules as regular expressions -s Strip './' from the beginning of a pattern name -v Verbose option files - a list of filenames to be packed/unpacked |
$ cachefspack -p filename |
ファイルまたは複数のファイルをパックすることを示します。このオプションはデフォルトです。
キャッシュにパックするファイルまたはディレクトリの名前を指定します。ディレクトリを指定すると、そのサブディレクトリもすべてパックされます。詳細は、cachefspack(1M) のマニュアルページを参照してください。
次の例は、projects ファイルがキャッシュにパックされることを示しています。
$ cachefspack -p projects |
次の例は、3 つのファイルがキャッシュにパックされることを示しています。
$ cachefspack -p projects updates master_plan |
次の例は、ディレクトリがキャッシュにパックされることを示しています。
$ cachefspack -p /data/abc/bin |
$ cachefspack -i[v] cached-filename-or-directory |
パックされたファイルの情報を表示することを示します。
詳細表示オプションです。
情報を表示するファイル名またはディレクトリ名を指定します。
次の例は、doc_file ファイルが正常にパックされていることを示しています。
$ cachefspack -i doc_file cachefspack: file doc_file marked packed YES, packed YES |
次の例では、/data/abc ディレクトリに bin サブディレクトリがあります。bin サブディレクトリには、 big、medium、および small という 3 つのファイルがあります。big と small ファイルはパックするように指定されていますが、パックされていません。medium ファイルは正常にパックされています。
$ cd /data/abc $ cachefspack -i bin . . . cachefspack: file /bin/big marked packed YES, packed NO cachefspack: file /bin/medium marked packed YES, packed YES cachefspack: file /bin/small marked packed YES, packed NO . . . |
-iv オプションを指定した場合は、指定したファイルまたはディレクトリがキャッシュからフラッシュされたかどうかに関する追加情報が表示されます。次に例を示します。
$ cd /data/bin FSCACHEPACK-4$ cachefspack -iv bin . . . cachefspack: file /bin/big marked packed YES, packed NO, nocache YES cachefspack: file /bin/medium marked packed YES, packed YES, nocache NO cachefspack: file /bin/small marked packed YES, packed NO nocache NO . . . |
上記例の最後の行は、ディレクトリの内容がキャッシュからフラッシュされていないことを示しています。
cachefspack コマンドの機能の 1 つに、パッキングリストを作成するという機能があります。
パッキングリストには、キャッシュにパックするファイルやディレクトリが入っています。ディレクトリがパッキングリストに入っている場合、そのサブディレクトリとファイルもすべてパックされます。
この機能によって、キャッシュにパックする各ファイルをそれぞれ指定するという手間が省けます。
vi を使ってパッキングリストファイルを作成する
パッキングリストファイルの書式は、filesync コマンドで使用する書式と同じです。詳細は、filesync(1) のマニュアルページを参照してください。
パッキングリストには、次の 2 つの機能があります。
パッキングリスト内のファイルを文字どおりのファイル名ではなく、正規表現として識別することができるため、ファイル名を個別に指定する必要がありません。
所有するファイルだけがパックされるようにすることで、共有ディレクトリのファイルをパックできます。
これらの機能の使い方については、cachefspack(1M) のマニュアルページを参照してください。
次の例は、パッキングリストファイルの内容を示しています。
BASE /home/ignatz LIST plans LIST docs IGNORE *.ps |
BASE 文は、パックする項目が存在するディレクトリのパスを指定しています。
2 つの LIST 文は、当該ディレクトリ中のパックされるファイルを指定しています。
IGNORE 文は、パックしないファイルタイプ (ここでは .ps) を指定しています。
パッキングリストにファイルをパックする
$ cachefspack -f packing-list |
パッキングリストを使用することを指定します。
パッキングリスト名を指定します。
この例では、list.pkg ファイルを cachefspack コマンドのパッキングリストとして使用しています。
$ cachefspack -f list.pkg |
キャッシュからファイルを削除、つまりそのパッキングを「解除」する場合もあります。ほかよりも優先度が高いファイルまたはディレクトリがいくつか存在する場合があるため、重要でないファイルのパッキングを解除する必要があります。たとえば、あるプロジェクトを終了して、そのプロジェクトに関連するファイルをアーカイブしたと仮定します。次は、新しいプロジェクト、つまり新しいファイルのセットで作業することになります。
キャッシュからファイルまたはパッキングリストのパッキングを解除します。
$ cachefspack -u filename | -U cache-directory |
ファイルまたは複数のファイルのパッキングを解除することを示します。このオプションを使用する場合は、ファイル名を指定しなければなりません。
キャッシュからパッキングを解除するファイルまたはパッキングリストの名前を示します。
キャッシュ中のすべてのファイルのパッキングを解除することを示します。
詳細は、cachefspack(1M) のマニュアルページを参照してください。
次の例は、キャッシュから /data/abc/bin/big ファイルのパッキングが解除されることを示しています。
$ cachefspack -u /data/abc/bin/big |
次の例は、キャッシュから 3 つのファイルのパッキングが解除されることを示しています。
$ cd /data/abc/bin/big $ cachefspack -u big small medium |
次の例は、パッキングリストのパッキングを解除する方法を示しています。パッキングリストは、ファイルのディレクトリへのパスを含むファイルです。
$ cachefspack -uf list.pkg |
次の例は、キャッシュディレクトリ中のすべてのファイルのパッキングが解除されるように -U オプションを使用する方法を示しています。
$ cachefspack -U /local/mycache |
ファイルシステムを 1 つもマウントしていないキャッシュのパッキングは解除できません。-U オプションで、マウント済みファイルシステムを持っていないキャッシュを指定した場合、次のような出力が表示されます。
$ cachefspack -U /local/mycache cachefspack: Could not unpack cache /local/mycache, no mounted filesystems in the cache. |
cachefspack コマンドを使用すると、次のようなエラーメッセージが表示されることがあります。
cachefspack: pathname - can't open directory: permission denied |
ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。
適切なアクセス権を取得してください。
cachefspack: pathname - can't open directory: no such file or directory |
ファイルまたはディレクトリの指定が間違っている可能性があります。
入力ミスがないか確認してください。
cachefspack: pathname - can't open directory: stale NFS file handle |
アクセスしようとしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。
サーバー上のファイルやディレクトリにまだアクセスできることを確認してください。
cachefspack: pathname - can't open directory: interrupted system call |
コマンドの実行中に間違って Control + C を押した可能性があります。
このコマンドを再度実行してください。
cachefspack: pathname - can't open directory: I/O error |
ハードウェアの障害の可能性があります。
ハードウェアの接続を確認してください。
cachefspack: error opening dir |
ファイルまたはディレクトリの指定が間違っている可能性があります。ファイル書式中の BASE コマンドの後に指定したパスが、ディレクトリではなくファイルになっている可能性があります。指定するパスはディレクトリでなければなりません。
入力ミスがないか確認してください。ファイル書式中の BASE コマンドの後に指定したパスを確認してください。ファイルではなくディレクトリが指定されていることを確認してください。
cachefspack: unable to get shared objects |
実行可能ファイルが壊れているか、その形式を認識できません。
実行可能ファイルを交換してください。
cachefspack: filename - can't pack file: permission denied |
ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。
適切なアクセス権を取得してください。
cachefspack: filename - can't pack file: no such file or directory |
ファイルまたはディレクトリの指定が間違っている可能性があります。
入力ミスがないか確認してください。
cachefspack: filename- can't pack file: stale NFS file handle |
アクセスしようとしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。
サーバー上のファイルやディレクトリにまだアクセスできることを確認してください。
cachefspack: filename- can't pack file: interrupted system call |
コマンドの実行中に間違って Control + C を押した可能性があります。
このコマンドを再度実行してください。
cachefspack: filename- can't pack file: I/O error |
ハードウェアの障害の可能性があります。
ハードウェアの接続を確認してください。
cachefspack: filename- can't pack file: no space left on device. |
キャッシュのディスク容量が不足しています。
ディスク容量を増やしてキャッシュのサイズを大きくする必要があります。
cachefspack: filename - can't unpack file: permission denied |
ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。
適切なアクセス権を取得してください。
cachefspack: filename - can't unpack file: no such file or directory |
ファイルまたはディレクトリの指定が間違っている可能性があります。
入力ミスがないか確認してください。
cachefspack: filename- can't unpack file: stale NFS file handle |
アクセスしようとしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。
サーバー上のファイルやディレクトリにまだアクセスできることを確認してください。
cachefspack: filename- can't unpack file: interrupted system call |
コマンドの実行中に間違って Control + C を押した可能性があります。
このコマンドを再度実行してください。
cachefspack: filename- can't unpack file I/O error |
ハードウェアの障害の可能性があります。
ハードウェアの接続を確認してください。
cachefspack: only one `d', `i', `p', or `u' option allowed |
コマンドに対して上記オプションのうち複数のオプションが指定されています。
オプションは 1 つだけ選択してください。
cachefspack: can't find environment variable. |
構成ファイル中で $ で指定されている環境変数を設定していません。
環境変数を適切な場所に定義してください。
cachefspack: skipping LIST command - no active base |
LIST コマンドが構成ファイル内にありますが、対応する BASE コマンドがありません。
BASE コマンドを定義してください。
次の作業マップは、CacheFS の統計情報の収集に関連する手順を示しています。これらの手順はすべてオプションです。
作業 |
説明 |
参照先 |
---|---|---|
ロギングを設定します。 |
cachefslog コマンドを使用して、CacheFS ファイルシステムのロギングを設定します。 | |
ログファイルを検索します。 |
cachefslog コマンドを使用してログファイルの位置を特定します。 | |
ロギングを停止します。 |
cachefslog コマンドを使用してロギングを停止します。 | |
キャッシュサイズを表示します。 |
cachefswssize コマンドを使用してキャッシュサイズを表示します。 | |
キャッシュ統計情報を表示します。 |
cachefsstat コマンドを使用して統計情報を表示します。 |
CacheFS の統計情報を収集すると、次の作業を行うことができます。
適切なキャッシュサイズを判断します。
キャッシュのパフォーマンスを監視します。
これらの統計情報を使用すると、キャッシュサイズと望ましいパフォーマンスを選択して調整できます。
次の表に、CacheFS 統計コマンドを示します。
コマンド |
説明 |
マニュアルページ |
---|---|---|
cachefslog |
ログファイルの位置を指定します。統計情報が現在どこに記録されているかを表示し、ロギングを中止することもできます。 | |
cachefswssize |
ログファイルを解釈して推奨キャッシュサイズを表示します。 | |
cachefsstat |
特定の CacheFS ファイルシステム、またはすべての CacheFS ファイルシステムに関する統計情報を表示します。このコマンドの出力に含まれる情報は、キャッシュから直接取り出されます。 |
CacheFS 統計情報コマンドは、どのディレクトリから実行してもかまいません。ただし、cachefswssize コマンドを実行するには、スーパーユーザーにならなければなりません。
CacheFS 統計の累計は、ログファイルの作成時から始まります。作業時間が終わったら、cachefslog -h コマンドを使用してロギングを停止してください。手順については、「CacheFS ロギングを停止する方法」を参照してください。
CacheFS 統計情報コマンドを使用する前に、次の操作を実行する必要があります。
cfsadmin コマンドを使用してキャッシュを設定します。
作成するログファイルに統計情報を収集できるように、適切な時間を決定します。この時間は、一般的な作業間隔に等しくする必要があります。たとえば、1 日、1 週間、1 カ月などにします。
ログファイルの位置またはパスを選択します。ログファイルが大きくなっても対応できる程度の領域があることを確認します。ログファイルに統計情報を収集できる時間を長くするほど、大きな領域が必要になります。
次の手順は推奨する順序を示しています。異なる順序で作業してもかまいません。
$ cachefslog -f log-file-path /mount-point |
ロギングを設定します。
ログファイルの位置を指定します。ログファイルは、vi などのエディタで作成する標準ファイルです。
統計情報を収集するマウントポイント (CacheFS ファイルシステム) を指定します。
ログファイルを正しく設定したかどうかを確認します。
$ cachefslog /mount-point |
次の例は、/var/tmp/samlog ログファイルを設定して、/home/sam ディレクトリに関する統計情報を収集する方法を示しています。
$ cachefslog -f /var/tmp/samlog /home/sam /var/tmp/samlog: /home/sam |
CacheFS 統計情報のログが記録される場所を表示する
$ cachefslog /mount-point |
/mount-point は、統計情報を表示する CacheFS ファイルシステムを示します。
オプションを指定せずに cachefslog コマンドを使用して、特定のマウントポイントに対するログファイルの場所を調べることもできます。
次の例は、ログファイルが設定されている場合の表示を示します。ログファイルは、/var/tmp/stufflog にあります。
$ cachefslog /home/stuff /var/tmp/stufflog: /home/stuff |
次の例は、指定したファイルシステムのログファイルが設定されていないことを示しています。
$ cachefslog /home/zap not logged: /home/zap |
ロギングを停止するには、cachefslog -h オプションを使用します。
$ cachefslog -h /mount-point |
次の例は、/home/stuff に対するロギングを停止する方法を示しています。
$ cachefslog -h /home/stuff not logged: /home/stuff |
上記の例と異なるシステム応答が表示される場合は、ロギングが正常に停止されていません。正しいログファイル名とマウントポイントを指定したかどうかを確認してください。
キャッシュサイズを増やすべきかどうかを確認できます。または、特定のマウントポイントに関して前回 cachefslog コマンドを使用したあとの作業に基づいて、理想的なキャッシュサイズを決定することもできます。
クライアントシステムでスーパーユーザーになります。
現在のキャッシュサイズとロギングされた最大キャッシュサイズを表示します。
# cachefswssize log-file-path |
詳細は、cachefswssize(1M) のマニュアルページを参照してください。
次の例で、「end size」とは cachefswssize コマンドを実行した時点のキャッシュサイズです。「high water size」とは、ロギングが発生した時間枠内のキャッシュの最大サイズです。
# cachefswssize /var/tmp/samlog /home/sam end size: 10688k high water size: 10704k / end size: 1736k high water size: 1736k /opt end size: 128k high water size: 128k /nfs/saturn.dist end size: 1472k high water size: 1472k /data/abc end size: 7168k high water size: 7168k /nfs/venus.svr4 end size: 4688k high water size: 5000k /data end size: 4992k high water size: 4992k total for cache initial size: 110960k end size: 30872k high water size: 30872k |
次の表では、出力された CacheFS ファイルシステムの統計情報の用語について解説します。
表 19–2 CacheFS 統計情報の用語
用語 |
説明 |
---|---|
キャッシュのヒット率 |
キャッシュのヒット率対ミスヒット率の比と、それに続く実際のヒット数とミスヒット数。キャッシュヒットは、ユーザーがファイル操作を実行するときに、そのファイルが実際にキャッシュ内にあると発生します。キャッシュのミスヒットは、ファイルがキャッシュにないときに発生します。サーバーにかかる負荷は、キャッシュのミスヒット数、整合性検査数、および変更数の合計です。 |
整合性検査 |
実行された整合性検査の回数、合格回数、不合格回数。 |
変更数 (modifies) |
変更操作の回数。書き込みや作成など。 |
cachefsstat コマンドを使用して統計情報を表示します。この操作はいつでも実行できます。たとえば、ロギングを設定しなくても統計情報を表示できます。
CacheFS 統計情報を表示する
$ cachefsstat /mount-point |
/mount-point は、統計情報を表示する CacheFS ファイルシステムを示します。
マウントポイントを指定しなければ、マウントされているすべての CacheFS ファイルシステムに関する統計情報が表示されます。
この例は、キャッシュされたファイルシステム /home/sam に関する統計情報の表示方法を示しています。
$ cachefsstat /home/sam cache hit rate: 73% (1234 hits, 450 misses) consistency checks: 700 (650 pass, 50 fail) modifies: 321 garbage collection: 0 |