この章では、CacheFSTM ファイルシステムの設定および管理の方法について説明します。
この章で説明する作業マップは、次のとおりです。
CacheFS に関するエラーの障害追跡については、「cachefspack エラーの障害追跡」を参照してください。
次の作業マップは、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 ファイルシステムのファイルに初めてアクセスするときは低速に思われますが、同じファイルを続けて使用していると高速になります。
各キャッシュには、その動作と構造を決定する一連のパラメータが付いています。各パラメータは、以下の表に示すデフォルト値に設定されています。デフォルト値は、フロントファイルシステム全体をキャッシュに使用するように指定しますが、これはファイルシステムをキャッシュに書き込む場合の推奨方法です。
表 40-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. キャッシュに書き込むファイルシステムを共有する |
キャッシュに書き込むファイルシステムが共有されていることを確認する |
share(1M) のマニュアルページ |
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 ファイルを編集する方法 |
一度だけですむ。/etc/vfstab ファイルの内容は、システムをリブートした後も変更されずに残る |
AutoFS を使用する方法 |
一度だけですむ。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 |
fstype | |
/cache-directory |
キャッシュがある UFS ディレクトリの名前。これは、「キャッシュを作成する方法」でキャッシュを作成するときの指定と同じ |
options |
ファイルシステムをキャッシュにマウントするときに追加できる他のマウントオプション。CacheFS mount オプションの詳細は、mount_cachefs(1M) のマニュアルページを参照 |
/back-filesystem |
キャッシュにマウントするバックファイルシステムのマウントポイント。バックファイルシステムが NFS ファイルシステムである場合は、ファイルシステムのマウント元となるサーバーのホスト名と、キャッシュにマウントするファイルシステム名 (コロンで区切る) を指定する必要がある (たとえば、merlin: data/abc) |
/mount-point |
ファイルシステムのマウント先となるディレクトリ |
作成したキャッシュが実際にマウントされたかどうかを確認します。
# 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 9 SPARC CD (HSFS ファイルシステム) を /cfssrc という CacheFS ファイルシステムとして使用できるようにする方法を示しています。CD には書き込めないので、引数 ro を指定して CacheFS ファイルシステムを読み取り専用にします。この例では、vold を実行していないものとします。
# mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /sol9 # mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst, backpath=/sol9 /dev/dsk/c0t6d0s0 /cfssrc # ls /cfssrc Copyright Solaris_9 |
次の例は、vold を実行しながら、Solaris 9 SPARC CD を CacheFS ファイルシステムとしてマウントする方法を示しています。
# mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst, backpath=/cdrom/sol_9_sparc/s0 /vol/dev/dsk/c0t2d0/sol_9_sparc/s0 /cfssrc |
次の例は、vold を実行しながら、CD を 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 など) も、自動マウントマップ内で指定します。自動マウントマップの詳細については、automount(1M) のマニュアルページを参照してください。
クライアントシステムでスーパーユーザーになります。
エディタを使用して、次の 1 行を auto_direct マップに追加します。
/mount-point -fstype=cachefs,cachedir=/directory,backfstype=nfs server:/file-system |
エディタを使用して、次の 1 行を auto_master マップに追加します。
/- |
/- エントリによって、auto_direct マップをチェックするように指示します。
システムをリブートします。
エントリが正しく作成されたか確認するには、次のようにキャッシュにマウントしたファイルシステムにカレントディレクトリを変更して内容を表示します。
# cd /filesystem # ls |
AutoFS とマップの編集方法については、『Solaris のシステム管理 (資源管理とネットワークサービス)』の「autofs 管理作業の概要」を参照してください。
次の auto_direct エントリは、CacheFS ファイルシステムを /docs ディレクトリに自動的にマウントします。
/docs -fstype=cachefs,cachedir=/local/mycache,backfstype=nfs merlin:/docs |
CacheFS ファイルシステムを設定し終わったら、保守作業を多少行う必要があります。CacheFS ファイルシステムの保守作業を行う必要がある場合は、次の表の手順 (オプション) に従ってください。
作業 |
説明 |
参照先 |
---|---|---|
1. CacheFS ファイルシステムの変更 |
キャッシュをマウント解除、削除、または作成し直して、CacheFS ファイルシステムの動作を変更する | |
2. CacheFS ファイルシステム情報の表示 |
cfsadmin コマンドを使用して、CacheFS ファイルシステムに関する情報を表示する | |
3. 整合性チェックの実行 |
cfsadmin コマンドを使用して必要に応じて整合性チェックを実行する | |
4. CacheFS ファイルシステムの削除 |
umount コマンドと cfsadmin コマンドを使用して、CacheFS ファイルシステムを削除する | |
5. CacheFS ファイルシステムの整合性の検査 |
fsck_cachefs コマンドを使用して、CacheFS ファイルシステムの整合性を検査する |
この節では、CacheFS ファイルシステムの保守方法について説明します。
/etc/vfstab ファイルを使用してファイルシステムをマウントしている場合は、このファイル内でファイルシステムオプションを編集してキャッシュを変更します。AutoFS を使用している場合は、AutoFS マップ内でファイルシステムオプションを編集してキャッシュを変更します。
キャッシュ内でファイルシステムを変更する場合は、キャッシュを削除してから作成し直す必要があります。また、ファイルシステムの共有方法とアクセス方法によっては、マシンをシングルユーザーモードでリブートしなければならない場合があります。
次の例では、キャッシュが削除されてから再び作成され、ファイルシステム /docs に指定された demandconst オプションを使用して再びマウントされます。
# shutdown -g30 -y . . . Type Cntrl-d to proceed with normal startup, (or give root password for system maintenance): # enter password: . . . 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 ソフトウェアでは現在の変更時刻を前回の変更時刻と比較します。変更時刻が異なる場合は、そのディレクトリまたはファイルに関するすべてのデータと属性がキャッシュから消去され、バックファイルシステムから新しいデータと属性が取り出されます。
ユーザーがディレクトリやファイルの処理を要求すると、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 |
cache-ID |
CacheFS ファイルシステム名。この名前は、cfsadmin -l コマンドからの出力の最終行に表示される。詳細は、「CacheFS ファイルシステムに関する情報を表示する方法」を参照。cache-ID に all を指定すると、特定のキャッシュに書き込まれた CacheFS ファイルシステムをすべて削除できる |
/cache-directory |
キャッシュがあるディレクトリ |
ファイルシステムが削除されたことを確認します。
直前に削除したファイルシステムのキャッシュ 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 コマンドを実行して、キャッシュのリソースカウントを更新します。
詳細は、「CacheFS ファイルシステムの整合性をチェックする方法」を参照してください。
次の例は、キャッシュからファイルシステムを削除する方法を示しています。
# umount /cfssrc # cfsadmin -l /cfssrc # cfsadmin -d _dev_dsk_c0t6d0s0:_cfssrc # cfsadmin -l |
fsck コマンドを使用して、CacheFS ファイルシステムの整合性を確認します。何も操作しなくても、fsck コマンドの CacheFS バージョンによって問題が自動的に解決されます。fsck コマンドはブート時またはファイルシステムのマウント時に自動的に実行されるため、CacheFS ファイルシステムに対して fsck コマンドを手 作業で実行する必要はありません。整合性を手作業で確認する場合は、次の手順を使用できます。
詳細は、fsck_cachefs(1M) のマニュアルページを参照してください。
クライアントシステムでスーパーユーザーになります。
指定されたキャッシュ内でファイルシステムをチェックします。
# fsck -F cachefs [-m -o noclean] /cache-directory |
-m |
fsck コマンドに CacheFS ファイルシステムをチェックさせるが、修復は行わない。 |
-o noclean |
CacheFS ファイルシステムに対するチェックのみを実行させる。修復は行わない。 |
/cache-directory |
キャッシュがあるディレクトリの名前を指定する。 |
次の例は、/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 コマンドを使用します。
$ cachefspack -p filename |
-p |
ファイルまたは複数のファイルをパックすることを示す。このオプションはデフォルト。 |
filename |
キャッシュにパックするファイルまたはディレクトリの名前を指定する。ディレクトリを指定すると、そのサブディレクトリもすべてパックされる。詳細は、cachefspack(1M) のマニュアルページを参照。 |
次の例は、projects ファイルがキャッシュにパックされることを示しています。
$ cachefspack -p projects |
次の例は、3 つのファイルがキャッシュにパックされることを示しています。
$ cachefspack -p projects updates master_plan |
次の例は、ディレクトリがキャッシュにパックされることを示しています。
$ cachefspack -p /data/abc/bin |
パックされたファイル情報を表示するには、 cachefspack -i コマンドを使用します。
$ cachefspack -i[v] filename |
-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 $ 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 コマンドを使用します。
$ cachefspack -f packing-list |
-f |
パッキングリストを使用することを示す。 |
packing-list |
パッキングリスト名を指定する。 |
この例では、list.pkg ファイルを cachefspack コマンドのパッキングリストとして使用しています。
$ cachefspack -f list.pkg |
キャッシュからファイルを削除、つまりそのパッキングを解除する場合もあります。他よりも優先度が高い一部のファイルまたはディレクトリが存在する場合があるため、重要でないファイルのパッキングを解除する必要があります。たとえば、あるプロジェクトを終了して、そのプロジェクトに関連するファイルをアーカイブしたと仮定します。次は、新しいプロジェクト、つまり新しいファイルのセットで作業することになります。
キャッシュからファイルまたはパッキングリストのパッキングを解除するには、cachefspack コマンドの -u または -U オプションを使用します。
$ cachefspack -u filename | -U cache-directory |
-u |
ファイルまたは複数のファイルのパッキングを解除することを示す。このオプションを使用する場合は、ファイル名を指定しなければならない。 |
filename |
キャッシュからパッキングを解除するファイルまたはパッキングリストの名前を示す。 |
-U |
キャッシュ中のすべてのファイルのパッキングを解除することを示す。 |
cachefspack コマンドの詳細については、マニュアルページを参照してください。
次の例は、キャッシュから /data/abc/bin/big ファイルのパッキングが解除されることを示しています。
$ cachefspack -u /data/abc/bin/big |
次の例は、キャッシュからいくつかのファイルのパッキングが解除されることを示しています。
$ 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 コマンドを使用すると、次のようなエラーメッセージが表示されることがあります。
achefspack: pathname - ディレクトリを オープンできません。アクセス権がありません。 |
ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。
適切なアクセス権を取得してください。
cachefspack: pathname - ディレクトリを オープンできません。ファイルまたはディレクトリがありません。 |
正しいファイルまたはディレクトリがありません。
入力ミスがないか確認してください。
cachefspack: pathname - ディレクトリを オープンできません。NFS のファイルハンドルが無効です。 |
アクセスしようとしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。
サーバー上のファイルやディレクトリにまだアクセスできることを確認してください。
cachefspack: pathname - ディレクトリを オープンできません。システムコールに割り込みがかかりました。 |
コマンドの実行中に間違って Control + C を押した可能性があります。
このコマンドを再度実行してください。
cachefspack: pathname - ディレクトリを オープンできません。I/O エラー |
ハードウェアの障害の可能性があります。
ハードウェアの接続を確認してください。
cachefspack: ディレクトリのオープンに失敗しました。 |
正しいファイルまたはディレクトリがありません。ファイル書式中の BASE コマンドの後に指定したパスが、ディレクトリではなくファイルになっている可能性があります。指定するパスはディレクトリでなければなりません。
入力ミスがないか確認してください。ファイル書式中の BASE コマンドの後に、ファイルではなくディレクトリが指定されていることを確認してください。
cachefspack: 共有オブジェクトを得られません。 |
実行可能ファイルが壊れているか、そのフォーマットを認識できません。
実行可能ファイルを交換してください。
cachefspack: filename - ファイルを pack できません。 アクセス権がありません。 |
ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。
適切なアクセス権を取得してください。
cachefspack: filename - ファイルを pack できません。 ファイルまたはディレクトリがありません。 |
正しいファイルまたはディレクトリがありません。
入力ミスがないか確認してください。
cachefspack: filename - ファイルを pack できません。 NFS のファイルハンドルが無効です。 |
アクセスしようとしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。
サーバー上のファイルやディレクトリにまだアクセスできることを確認してください。
cachefspack: filename - ファイルを pack できません。 システムコールに割り込みがかかりました。 |
コマンドの実行中に間違って Control + C を押した可能性があります。
このコマンドを再度実行してください。
cachefspack: filename - ファイルを pack できません。I/O エラー |
ハードウェアの障害の可能性があります。
ハードウェアの接続を確認してください。
cachefspack: filename - ファイルを pack できません。 デバイス上に十分な領域がありません。 |
キャッシュのディスク容量が不足しています。
ディスク容量を増やしてキャッシュのサイズを大きくする必要があります。
cachefspack: filename - ファイルを unpack できません。 アクセス権がありません。 |
ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。
適切なアクセス権を取得してください。
cachefspack: filename - ファイルを unpack できません。 ファイルまたはディレクトリがありません。 |
正しいファイルまたはディレクトリがありません。
入力ミスがないか確認してください。
cachefspack: filename - ファイルを unpack できません。 NFS のファイルハンドルが無効です。 |
アクセスしようとしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。
サーバー上のファイルやディレクトリにまだアクセスできることを確認してください。
cachefspack: filename - ファイルを unpack できません。 システムコールに割り込みがかかりました。 |
コマンドの実行中に間違って Control + C を押した可能性があります。
このコマンドを再度実行してください。
cachefspack: filename - ファイルを unpack できません。I/O エラー |
ハードウェアの障害の可能性があります。
ハードウェアの接続を確認してください。
cachefspack: `d'、`i'、`p'、`u' オプションのどれか 1 つを指定できます。 |
コマンドに対して上記オプションのうち複数のオプションが指定されています。
オプションは 1 つだけ選択してください。
cachefspack: 環境変数が見つかりません。 |
構成ファイル中で $ で指定されている環境変数を設定していません。
環境変数を適切な場所に定義してください。
cachefspack: LIST コマンドをスキップします - 動作中の bese はありません |
LIST コマンドが構成ファイル内にありますが、対応する BASE コマンドがありません。
BASE コマンドを定義してください。
次の作業マップは、CacheFS の統計情報の収集に関連する手順を示しています。この表に記載されている手順はすべてオプションです。
作業 |
説明 |
参照先 |
---|---|---|
ロギングの設定 |
cachefslog コマンドを使用して、CacheFS ファイルシステムのロギングを設定する。 | |
ログファイルの検索 |
cachefslog コマンドを使用してログファイルの位置を特定する。 | |
ロギングの停止 |
cachefslog コマンドを使用してロギングを停止する。 | |
キャッシュサイズの表示 |
cachefswssize コマンドを使用してキャッシュサイズを表示する。 | |
キャッシュ統計情報の表示 |
cachefsstat コマンドを使用して統計情報を表示する。 |
CacheFS の統計情報を収集すると、次の作業を行うことができます。
適切なキャッシュサイズを判断する。
キャッシュのパフォーマンスを監視する。
これらの統計情報を使用すると、キャッシュサイズと望ましいパフォーマンスを取捨選択して調整できます。
CacheFS 統計情報コマンドには次のものがあります。
コマンド |
マニュアルページ |
説明 |
---|---|---|
cachefslog |
cachefslog(1M) |
ログファイルの位置を指定します。また、このコマンドでは、統計情報が現在どこに記録されているかが表示されるので、ロギングを中止できます。 |
cachefswssize |
cachefswssize(1M) |
ログファイルを解釈して推奨キャッシュサイズを表示します。 |
cachefsstat |
cachefsstat(1M) |
特定のファイルシステム、またはすべての CacheFS ファイルシステムに関する統計情報を表示します。このコマンドの出力に含まれる情報は、キャッシュから直接取り出されます。 |
|
|
|
CacheFS 統計情報コマンドは、どのディレクトリから実行してもかまいません。ただし、cachefswssize コマンドを実行するには、スーパーユーザーにならなければなりません。
CacheFS 統計の累計は、ログファイルの作成時から始まります。作業時間が終わったら、cachefslog -h コマンドを使用してロギングを停止してください。手順については、「CacheFS ロギングを停止する方法」を参照してください。
CacheFS 統計情報コマンドを使用する前に、次の操作を実行する必要があります。
cfsadmin コマンドを使用してキャッシュを設定する。
作成するログファイルに統計情報を収集できるように、適切な時間を決定する。この時間は、1 日、1 週間、1 カ月など、一般的な作業間隔に等しくする必要がある。
ログファイルの位置またはパスを選択する。ログファイルが大きくなっても対応できる程度の領域があることを確認する。ログファイルに統計情報を収集できる時間を長くするほど、大きな領域が必要になる。
次の手順は推奨する順序を示しています。異なる順序で作業してもかまいません。
$ cachefslog -f log-file-path /mount-point |
-f |
ロギングを設定する。 |
log-file-path |
ログファイルの位置を指定する。ログファイルは、vi などのエディタで作成する標準ファイル。 |
/mount-point |
統計情報を収集するマウントポイント (CacheFS ファイルシステム) を指定する。 |
ログファイルを正しく設定したかどうかを確認します。
$ cachefslog /mount-point |
次の例は、/var/tmp/samlog ログファイルを設定して、/home/sam ディレクトリに関する統計情報を収集する方法を示しています。
$ cachefslog -f /var/tmp/samlog /home/sam /var/tmp/samlog: /home/sam |
オプションを指定せずに cachefslog コマンドを使用して、特定のマウントポイントに対するログファイルの場所を調べることもできます。
$ cachefslog /mount-point |
/mount-point は、統計情報を表示する CacheFS ファイルシステムを示します。
次の例は、ログファイルが設定されている場合の表示を示します。ログファイルは、/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 ファイルシステムに関する情報を表示できます。次の表は、統計情報の出力時に表示される用語を示しています。
表 40-2 CacheFS 統計情報の用語
用語 |
説明 |
---|---|
キャッシュのヒット率 |
キャッシュのヒット率対ミスヒット率の比と、それに続く実際のヒット数とミスヒット数。キャッシュヒットは、ユーザーがファイル操作を実行したいときに、そのファイルが実際にはキャッシュ内にあると発生する。キャッシュのミスヒットは、ファイルがキャッシュにないときに発生する。サーバーにかかる負荷は、キャッシュのミスヒット数、整合性チェック数、および変更数の合計である |
整合性チェック |
実行された整合性チェックの回数、合格回数、不合格回数 |
変更数 (modifies) |
書き込みや作成など、変更操作の回数 |
cachefsstat コマンドを使用して統計情報を表示します。この操作はいつでも実行できます。たとえば、ロギングを設定しなくても統計情報を表示できます。
$ cachefsstat /mount-point |
/mount-point は、統計情報を表示する CacheFS ファイルシステムを示します。
マウントポイントを指定しなければ、マウントされているすべての CacheFS ファイルシステムに関する統計情報が表示されます。
詳細は、cachefsstat(1M) のマニュアルページを参照してください。
この例は、キャッシュされたファイルシステム /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 |