キャッシュファイルシステム (CacheFS) は、サーバーとネットワークの負荷を軽減して NFS サーバーの性能とスケーラビリティを改善する汎用ファイルシステムキャッシュ機構です。CacheFS は階層化ファイルシステムとして設計されていて、あるファイルシステムを別のファイルシステムのキャッシュに書き込む機能を持っています。NFS 環境では、CacheFS はサーバーあたりのクライアント比率を高め、サーバーとネットワークの負荷を軽減し、ポイントツーポイントプロトコル (PPP) のような低速リンク上でクライアントの性能を改善します。
この章の内容は次のとおりです。
キャッシュにマウントするように指定したファイルシステムに、ユーザーがネットワークを経由しなくてもローカルにアクセスできるように、cfsadmin(1M) コマンドを使用してキャッシュをクライアント上で作成します。図 29-1 は、CacheFS の使用に関連する構成要素の関係を示しています。バックファイルシステムとは、キャッシュにマウントするように指定するファイルシステムです。通常、これは NFS または HSFS (High Sierra File System) ファイルシステムです。ユーザーがバックファイルシステムの一部であるファイルにアクセスしようとすると、そのファイルはキャッシュに書き込まれます。したがって、ユーザーがファイルにアクセスするまで、キャッシュは空になっています。ユーザーにとって、ファイルに初めてアクセスするときは低速に思われますが、同じファイルを使用するたびに高速になります。
共有されるファイルシステムしかマウントできません。share(1M) コマンドを参照してください。
作業 |
説明 |
手順の説明 |
|||||
---|---|---|---|---|---|---|---|
キャッシュの作成 |
cfsadmin コマンドを使用してキャッシュを作成する | ||||||
| |||||||
ファイルシステムをキャッシュにマウントする |
mount コマンドを使用してファイルシステムをキャッシュにマウントする | ||||||
|
/etc/vfstab ファイルを編集してファイルシステムをキャッシュに書き込む | ||||||
|
|
|
AutoFS を使用してファイルシステムをキャッシュに書き込む |
| |||
スーパーユーザーになります。
cfsadmin(1M) コマンドの -c オプションを使用してキャッシュを作成します。
# cfsadmin -c cache-directory
cache-directory |
キャッシュがあるディレクトリ名。詳細は、cfsadmin(1M) のマニュアルページを参照 |
キャッシュを作成し終わったら、キャッシュディレクトリ内では操作しないでください。何か実行すると、CacheFS ソフトウェア内で矛盾が生じます。
次の例では、デフォルトのキャッシュパラメタ値を使用して、/local/mycache ディレクトリ内でキャッシュを作成します。
# cfsadmin -c /local/mycache #
指定したファイルシステム内のファイルにユーザーがローカルにアクセスできるように、キャッシュにマウントされるファイルシステムを指定します。実際には、各ファイルは、ユーザーがアクセスするまではキャッシュに書き込まれません。
キャッシュにマウントされるファイルシステムを指定するには、次の 3 つの方法があります。
mount(1M) コマンドを使用する方法 - 同じファイルにアクセスするには、システムをリブートするたびに mount コマンドを使用する必要がある。
/etc/vfstab ファイルを編集する方法 - 一度編集するだけですむ。/etc/vfstab ファイルの内容は、システムをリブートした後も変更されずに残る。
AutoFS を使用する方法 - 一度実行するだけですむ。AutoFS のマップは、システムをリブートした後も変更されずに残る。
いずれかの方法を選択してファイルシステムをマウントしてください。
CacheFS では、ルート (/) と /usr のファイルシステムをキャッシュに書き込むことはできません。ルート (/) と /usr のファイルシステムをキャッシュに書き込むには、Solstice AutoClient 製品を購入しなければなりません。AutoClient 製品の詳細は、『Solstice AutoClient 管理ガイド』を参照してください。
スーパーユーザーになります。
マウントポイントを作成します。
マウントポイントを作成すると、ユーザーはそのマウントポイントで指定されたファイルシステムにアクセスできます。マウントポイントはどこからでも作成できます。次の手順のように、マウントコマンドで使用する CacheFS オプションによって、作成するマウントポイントを、指定したキャッシュディレクトリ内のキャッシュに書き込むように決めます。
mount コマンドを使用して、ファイルシステムをキャッシュにマウントします。
# mount -F cachefs -o backfstype=fstype,cachedir=cache-directory[,options] back-filesystem mount-point
fstype | |
cache-directory |
キャッシュがあるディレクトリ名。これは、「キャッシュを作成する方法」でキャッシュを作成するときの指定と同じ |
options |
ファイルシステムをキャッシュにマウントするときに追加できる他のマウントオプションを指定する。CacheFS マウントオプションの詳細は、mount_cachefs(1M) のマニュアルページを参照 |
back-filesystem |
キャッシュにマウントするバックファイルシステムのマウントポイント。バックファイルシステムが NFS ファイルシステムであれば、merlin: /usr/openwin など、ファイルシステムのマウント元となるサーバーのホスト名と、キャッシュにマウントするファイルシステム名 (コロンで区切る) を指定しなければならない |
mount-point |
ファイルシステムのマウント先となるディレクトリ |
作成したキャッシュが実際にマウントされたかどうかを確認するには、次のように cachefsstat(1M) コマンドを使用します。
# cachefsstat mount-point
たとえば、次のようになります。
# cachefsstat /docs /docs cache hit rate: 100% (0 hits, 0 misses) consistency checks: 1 (1 pass, 0 fail) modifies: 0 garbage collection: 0
マウントポイントは、作成したキャッシュファイルシステムです。cachefsstat コマンドの詳細は、「CacheFS の統計情報」を参照してください。
ファイルシステムがキャッシュにマウントされなかった場合は、次のようなエラーメッセージが表示されます。
# cachefsstat mount-point cachefsstat: mount-point: not a cachefs mountpoint
次の例では、マウントポイント /docs を作成し、NFS ファイルシステム merlin:/docs を、キャッシュされたファイルシステム /docs としてキャッシュ /local/mycache にマウントします。
# mkdir /docs # mount -F cachefs -o backfstype=nfs,cachedir=/local/mycache merlin:/docs /docs
次の例では、CD-ROM (HSFS ファイルシステム) をキャッシュされたファイルシステム /docs として使用可能にします。CD-ROM には書き込めないので、引数 ro を指定してキャッシュされたファイルシステムを読み込み専用にします。CD-ROM は挿入時にボリューム管理によって自動的にマウントされるので、引数 backpath を指定しなければなりません。マウント場所は /cdrom ディレクトリにあり、CD-ROM 名によって決まります。マウントする特殊デバイスは、引数 backpath の値と同じです。
# mount -F cachefs -o backfstype=hsfs,cachedir=/local/mycache,ro, backpath=/cdrom/cdrom_name /cdrom/cdrom_name /docs
次の例では、demandconst オプションを使用して、NFS キャッシュファイルシステム /docs の整合性チェックを指定します。/docs のバックファイルシステムは merlin:/docs です。詳細は、「キャッシュされたファイルシステムとバックファイルシステムとの整合性チェック」を参照してください。
# mount -F cachefs -o backfstype=nfs,cachedir=/local/mycache, demandconst merlin:/docs /docs
スーパーユーザーになります。
エディタを使用して、マウントするファイルシステムを /etc/vfstab ファイル内で指定します。
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/dsk/devicename /dev/rdsk/devicename /mount-point cachefs 2 yes -
最終行は新しいエントリを表します。
次のように mount コマンドを使用してキャッシュされたファイルシステムをマウントするか、リブートします。
# mount /mount-point
次の例は、キャッシュファイルシステム用の /etc/vfstab エントリを示します。
#device device mount FS fsck mount mount #to mount to fsck point type pass at boot options # /dev/dsk/c0t1d0s0 /dev/rdsk/c0t1d0s0 /usr/local cachefs 2 yes -
次のように入力して、/usr/local ディレクトリをキャッシュディレクトリにマウントします。
# mount /usr/local
自動マウントマップ内で -fstype=cachefs マウントオプションを指定して、AutoFS によりキャッシュにファイルシステムをマウントします。CacheFS のマウントオプション (backfstype や cachedir など) も、自動マウントマップ内で指定します。自動マウントマップの詳細は、automount(1M) のマニュアルページや、『NFS の管理』も参照してください。
スーパーユーザーになります。
エディタを使用して、次の 1 行を auto_direct マップに追加します。
/mount-point -fstype=cachefs,cachedir=/directory,backfstype=nfs server:/file-system
エディタを使用して、次の 1 行を auto_master マップに追加します。
/-
/- エントリは、auto_direct マップをチェックするポインタです。
システムをリブートします。
エントリが正しく作成されたか確認するには、次のようにキャッシュにマウントしたファイルシステムにカレントディレクトリを変更して内容を表示します。
# cd filesystem # ls filesystem
AutoFS とマップを編集する方法の詳細は、『NFS の管理』の AutoFS に関する章を参照してください。
次の auto_master エントリは、キャッシュファイルシステムを /docs ディレクトリに自動的にマウントします。
/docs -fstype=cachefs,cachedir=/local/mycache,backfstype=nfs merlin:/docs
作業 |
説明 |
手順の説明 |
|||||
---|---|---|---|---|---|---|---|
キャッシュの変更 |
キャッシュの動作を変更する | ||||||
キャッシュ情報の表示 |
cfsadmin コマンドを使用してキャッシュされたファイルシステムに関する情報を表示する | ||||||
| |||||||
整合性チェックの実行 |
cfsadmin コマンドを使用して必要に応じて整合性チェックを実行する | ||||||
| |||||||
キャッシュの削除 |
umount コマンドと cfsadmin コマンドを使用して、キャッシュされたファイルシステムを削除する | ||||||
| |||||||
ファイルシステムの完全性の検査 |
fsck_cachefs コマンドを使用して、キャッシュされたファイルシステムの完全性をチェックする | ||||||
|
キャッシュを設定し終わったら、次の管理作業を実行できます。
キャッシュ内のファイルシステムを変更する (キャッシュをマウント解除し、削除し、作成し直し、再びマウントする)
キャッシュ情報を表示する
キャッシュの整合性をチェックする
キャッシュからファイルシステムを削除する
キャッシュされたファイルシステムの完全性をチェックする
/etc/vfstab ファイルを使用してファイルシステムをマウントしている場合は、このファイル内でファイルシステムオプションを編集してキャッシュを変更します。AutoFS を使用している場合は、AutoFS マップ内でファイルシステムオプションを編集してキャッシュを変更します。
ファイルシステムの特定のオプションを変更する方法については、第 28 章「ファイルシステムのマウントとマウント解除の手順」を参照してください。キャッシュ内でファイルシステムを変更する場合は、キャッシュを削除してから作成し直す必要があります。また、ファイルシステムの共有方法とアクセス方法によっては、マシンをシングルユーザーモードでリブートしなければならない場合があります。
次の例は、この手順を示しています。
次の例では、キャッシュが削除されてから再び作成され、ファイルシステム /docs に指定された demandconst オプションを使用して再びマウントされます。この例は、シングルユーザーモードでリブートするなどの手順を示しています。必要であれば他のコマンドを使用して、この例の作業を実行することもできます。
$ su password: # init 0 . . . ok boot -s . . . Type Cntrl-d to proceed with normal startup, (or give root password for system maintenance): # enter password: . . . 「キッシュを置くファイルシステムについて fsck を実行するか どうかのプロンプトがここで表示される」 # 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 #
ファイルシステムをキャッシュに正常に戻せなかった場合は、次のようなエラーメッセージが表示されます。
cachefsstat: /doc: not a cachefs mount point
スーパーユーザーになります。
指定したキャッシュにマウントされたすべてのファイルシステムに関する情報を表示します。
# cfsadmin -l cache-directory
cache-directory はキャッシュがあるディレクトリ名です。
次の例は、キャッシュディレクトリ /local/mycache に関する情報を示しています。この例では、ファイルシステム /docs が /local/mycache にマウントされています。最終行にはキャッシュされたファイルシステムが表示されます。
# 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 #
スーパーユーザーになります。
次のように mount(1M) コマンドの demandconst オプションを指定して、ファイルシステムをキャッシュにマウントします。
# mount -F cachefs -o backfstype=nfs,cachedir=/directory, demandconst server:/file-system /mount-point
キャッシュされた特定のファイルシステム上で整合性チェックを有効にするには、次のように -s オプションを指定して cfsadmin(1M) コマンドを使用します。
# cfsadmin -s /mount-point
整合性チェックの詳細は、「キャッシュされたファイルシステムとバックファイルシステムとの整合性チェック」を参照してください。
スーパーユーザーになります。
キャッシュ内のすべてのファイルシステムをマウント解除します。
# umount mount-point
mount-point では、ファイルシステムのマウント先となるディレクトリを指定します。
次のように、cfsadmin -l による出力からキャッシュ 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 #
キャッシュされたファイルシステムを指定したキャッシュから削除します。
# cfsadmin -d cache-id cache-directory
cache-id |
キャッシュされたファイルシステム名。この名前は、cfsadmin -l コマンドからの出力の最終行に表示される。詳細は、「キャッシュされたファイルシステムに関する情報を表示する方法」を参照。cache-id に all を指定すると、特定のキャッシュに書き込まれたすべてのファイルシステムを削除できる |
cache-directory |
キャッシュがあるディレクトリ |
キャッシュされたファイルシステムが削除されたことを確認します。
削除したファイルシステムのキャッシュ ID は、次のコマンドの出力に含まれなくなります。コマンド出力で指定するフィールドの詳細は、cfsadmin(1M) のマニュアルページを参照してください。
# cfsadmin -l cache-directory cfsadmin: list cache FS information maxblocks 90% minblocks 0% threshblocks 85% maxfiles 90% minfiles 0% threshfiles 85% maxfilesize 3MB #
次の例では、キャッシュされたファイルシステムをマウント解除して、キャッシュから削除します。
# umount /usr/openwin # cfsadmin -d merlin:docs /docs /local/mycache
次の例では、/local/mycache キャッシュ内のキャッシュされたファイルシステムをすべて削除します。
# cfsadmin -d all /local/mycache
fsck(1M) コマンドを使用して、キャッシュされたファイルシステムが完全かどうかを確認します。何も操作しなくても、fsck の CacheFS バージョンによって問題が自動的に解決されます。キャッシュされたファイルシステムの場合は、fsck を手作業で実行する必要はありません。fsck は、ブート時またはファイルシステムのマウント時に自動的に実行されます。完全性を手作業で確認したい場合は、次の手順を使用できます。
スーパーユーザーになります。
指定されたキャッシュ内でキャッシュされたファイルシステムをチェックします。
# fsck -F cachefs [-m] [-o noclean] cache-directory
-m |
fsck にキャッシュされたファイルシステムをチェックさせるが、修復しない |
-o noclean |
キャッシュされたファイルシステム上でチェックのみを実行させるが、修復しない |
cache-directory |
キャッシュがあるディレクトリ名 |
詳細は、fsck_cachefs(1M) のマニュアルページを参照してください。
次の例では、/local/mycache キャッシュの一部になっているキャッシュされたファイルシステムをチェックします。
# fsck -F cachefs /local/mycache #
一般的な使い方でも、CacheFS は、ユーザーが要求しなくても自動的に適切な動作をします。最近使用されたファイルがキャッシュされます。パッキング機能を使用するとキャッシュ内で、特定のファイルまたはディレクトリを常に最新の状態で保持できるので、より積極的にキャッシュを管理できます。
パッキング機能を使用すると、キャッシュにロードするファイルやディレクトリを指定できます。つまり、これらのファイルのコピーがキャッシュで利用できることを保証します。
パッキングリストには、特定のファイル名やディレクトリ名が入っています。他のパッキングリストを入れることも可能です。これによって、たくさんの項目をキャッシュにパックする場合に、個々のファイルやディレクトリを指定する手間が省けます。
cachefspack コマンドは、CacheFS ファイルシステムの制御にパッキング機能を追加します。
ファイルをキャッシュにパックするには、cachefspack コマンドを使用します。
$ cachefspack -p filename
-p |
ファイルまたは複数のファイルをパックすることを指定する。これはデフォルト |
filename |
キャッシュにパックするファイル名またはディレクトリ名を指定する。ディレクトリを指定すると、そのサブディレクトリもすべてパックされる。cachefspack コマンドの詳細は、cachefspack(1M) のマニュアルページを参照 |
次の例は、projects ファイルをキャッシュにパックするように指定する方法を示しています。
$ cachefspack -p projects
次の例は、複数のファイルをキャッシュにパックするように指定する方法を示しています。
$ cachefspack -p projects updates master_plan
次の例は、ディレクトリをキャッシュにパックするように指定する方法を示しています。
$ cachefspack -p /usr/openwin/bin
cachefspack コマンドの機能の 1 つに、パッキングリストをパックするという機能があります。これによって、キャッシュにパックする各ファイルをそれぞれ指定するという手間が省けます。
パッキングリストには、キャッシュにパックするファイルやディレクトリが入っています。ディレクトリがパッキングリストに入っている場合、そのサブディレクトリとファイルもすべてパックされます。
パッキングリストを作成するには、vi などのエディタを使用して、ファイルを開きます。パッキングリストファイルの書式は、filesync コマンドで使用する書式と同じです。filesync コマンドの詳細は、filesync(4) のマニュアルページを参照してください。
次の例は、パッキングリストファイルの内容を示しています。
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
(文字どおりのファイル名ではなく) 正規表現として扱う 1 つまたは複数のファイルをパッキングリストに指定するには、cachefspack コマンドの -r オプションと -f オプションを使用します。-r オプションのみを使用することはできません。
$ cachefspack -rf packing_list
packing_list には、次のように定義された LIST コマンドが入っています。
LIST *.doc
-r |
LIST コマンドに定義したファイルまたは複数のファイルを (文字どおりのファイル名ではなく) 正規表現として扱うことを指定する |
-f |
パッキングリストをキャッシュにパックすることを指定する |
packing_list |
正規表現として扱うファイルまたは複数のファイルを指定した LIST コマンドが入っているパッキングリスト名を示す |
次の例は、パッキングリスト list.pkg をキャッシュにパックするように指定する方法を示しています。list.pkg には、正規表現を定義する LIST コマンドが入っています。
$ cachefspack -rf list.pkg
このコマンドは、list.pkg ファイルをキャッシュにパッキングして、LIST コマンドに定義されたファイル名を (文字どおりのファイル名ではなく) 正規表現として扱います。
共有ディレクトリにある、ユーザーが所有するファイルだけをパックするには、次のように LIST コマンドをパッキングリストに定義します。
LIST !find . -user your_user_name -print
cachefspack コマンドの -f オプションといっしょに -s オプションを使用して、パッキングリストをキャッシュにパックします。
$ cachefspack -sf packing_list
-s |
find コマンドの出力をパッキングリストに適するように調整する |
-f |
パッキングリストを読み取ることを指定する |
filename |
読み取るパッキングリスト名を指定する |
-s オプションは -f オプションといっしょに使用しなければなりません。-s オプションのみを使用することはできません。
次の例は、ユーザーが所有するベースディレクトリのファイルだけをパックするために、LIST コマンドをパッキングリストに定義する方法を示しています。
LIST !find . -user jones -print
次の例は、パッキングリストをパックするように指定する方法を示しています。
$ cachefspack -sf /projects/proj_1
キャッシュからファイルを削除、つまりそのパッキングを解除する場合もあります。他よりも優先度が高い一部のファイルまたはディレクトリが存在する場合があるため、重要でないファイルのパッキングを解除する必要があります。たとえば、あるプロジェクトを終了して、そのプロジェクトに関連するファイルをアーカイブしたと仮定します。次は、新しいプロジェクト、つまり新しいファイルのセットで作業することになります。
キャッシュからファイルまたはパッキングリストをのパッキングを解除するには、cachefspack コマンドの -u オプションか -U オプションを使用します。
$ cachefspack -u filename | -U cache-directory
-u |
ファイルまたは複数のファイルのパッキングを解除することを指定する。このオプションを使用する場合は、ファイル名を指定しなければならない |
filename |
キャッシュからパッキングを解除するファイル名またはパッキングリスト名を指定する。cachefspack コマンドの詳細は、マニュアルページを参照 |
-U |
キャッシュ中のすべてのファイルのパッキングを解除することを指定する |
次の例は、キャッシュからファイル /usr/openwin/bin/xlogo のパッキングを解除するように指定する方法を示しています。
$ cachefspack -u /usr/openwin/bin/xlogo
次の例は、キャッシュから複数のファイルのパッキングを解除するように指定する方法を示しています。
$ cd /usr/openwin/bin $ cachefspack -u xlogo xview xcolor
また、次のように、パッキングリスト (ファイルのディレクトリのパスを含むファイル) でもパッキングを解除できます。
$ 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 コマンドの -i オプションを使用します。
$ cachefspack -i[v] cached-filename-or-directory
-i |
パックされたファイルの情報を表示することを指定する |
-v |
詳細表示オプション |
cached-filename-or-directory |
情報を表示するファイル名またはディレクトリ名を指定する |
次の例は、ファイル doc_file がパックされていることを示しています。
$ cachefspack -i doc_file cachefspack: file doc_file marked packed YES, packed YES
次の例は、ディレクトリ /usr/openwin に関する情報を示しています。このディレクトリには、サブディレクトリ bin があり、サブディレクトリ bin には xterm、textedit、resize の 3 つのファイルがあります。xterm と resize ファイルはパックするように指定されていますが、パックされていません。textedit ファイルは正常にパックされています。
$ cd /usr/openwin $ cachefspack -i bin . . . cachefspack: file /bin/xterm marked packed YES, packed NO cachefspack: file /bin/textedit marked packed YES, packed YES cachefspack: file /bin/resize marked packed YES, packed NO . . .
-v オプションを -i オプションといっしょに使用した場合、指定したファイルまたはディレクトリがキャッシュからフラッシュされたかどうかの追加情報も表示されます。たとえば、次のとおりです。
$ cd /usr/openwin $ cachefspack -iv bin . . . cachefspack: file /bin/xterm marked packed YES, packed NO, nocache YES cachefspack: file /bin/textedit marked packed YES, packed YES, nocache NO cachefspack: file /bin/resize marked packed YES, packed NO nocache NO . . .
上記例の最後の行は、ディレクトリの内容がキャッシュからフラッシュされていないことを示しています。
cachefspack のすべてのオプションのヘルプの要約とその意味を表示するには、次のように -h オプションを使用します。
$ 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: pathname - ディレクトリをオープンできません。アクセス権がありません。
エラーが発生した理由 |
問題を解決する方法 |
---|---|
ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。 |
適切なアクセス権を取得してください。 |
cachefspack: pathname - ディレクトリをオープンできません。ファイルまたはディレクトリは ありません
エラーが発生した理由 |
問題を解決する方法 |
---|---|
正しいファイルまたはディレクトリがありません。 |
入力ミスがないかチェックしてください。 |
cachefspack: pathname - ディレクトリをオープンできません。stale NFS file handle
エラーが発生した理由 |
問題を解決する方法 |
---|---|
アクセスしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。 |
システム管理者に問い合わせてください。 |
cachefspack: pathname - ディレクトリをオープンできません。interrupted system call
エラーが発生した理由 |
問題を解決する方法 |
---|---|
このコマンドの実行途中で Control-c キーを発行した可能性があります。 |
コマンドを再発行してください。 |
cachefspack: pathname - ディレクトリをオープンできません。I/O エラー
エラーが発生した理由 |
問題を解決する方法 |
---|---|
ハードウェアの障害です。 |
ハードウェアの接続をチェックしてください。 |
cachefspack: error opening dir
エラーが発生した理由 |
問題を解決する方法 |
---|---|
正しいファイルまたはディレクトリがありません。 |
入力ミスがないかチェックしてください。 |
ファイル書式中の BASE コマンドの後に指定したパスはファイルで、ディレクトリではない可能性があります。指定するパスはディレクトリでなければなりません。 |
ファイル書式中の BASE コマンドの後に指定したパスをチェックしてください。これが、ファイルではなく、ディレクトリであることを確認してください。 |
cachefspack: 共有オブジェクトを獲得できません
エラーが発生した理由 |
問題を解決する方法 |
---|---|
実行可能ファイルが壊れている可能性があります。あるいは、そのフォーマットが認識できません。 |
解決方法はありません。 |
cachefspack: filename - ファイルを pack できません。アクセス権がありません
エラーが発生した理由 |
問題を解決する方法 |
---|---|
ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。 | 適切なアクセス権を入手してください。 |
cachefspack: filename - ファイルを pack できません。ファイルまたはディレクトリは ありません
エラーが発生した理由 |
問題を解決する方法 |
---|---|
正しいファイルまたはディレクトリがありません。 |
入力ミスがないかチェックしてください。 |
cachefspack: filename - ファイルを pack できません。stale NFS file handle
エラーが発生した理由 |
問題を解決する方法 |
---|---|
アクセスしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。 |
システム管理者に問い合わせてください。 |
cachefspack: filename - ファイルを pack できません。interrupted system call
エラーが発生した理由 |
問題を解決する方法 |
---|---|
このコマンドの実行途中で Control-c キーを発行した可能性があります。 |
コマンドを再発行してください。 |
cachefspack: filename - ファイルを pack できません。I/O エラー
エラーが発生した理由 |
問題を解決する方法 |
---|---|
ハードウェアの障害です。 |
ハードウェアの接続をチェックしてください。 |
cachefspack: filename - ファイルを pack できません。ディスクに空き領域がありません
エラーが発生した理由 |
問題を解決する方法 |
---|---|
ディスク容量が足りなくなりました。 |
ディスク容量を増やす必要があります。 |
キャッシュが最大容量に達しました。 |
キャッシュのサイズを増やしてください。 |
cachefspack: filename - ファイルを unpack できません。アクセス権がありません
エラーが発生した理由 |
問題を解決する方法 |
---|---|
ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。 |
適切なアクセス権を取得してください。 |
cachefspack: filename - ファイルを unpack できません。ファイルまたはディレクトリは ありません
エラーが発生した理由 |
問題を解決する方法 |
---|---|
正しいファイルまたはディレクトリがありません。 |
入力ミスがないかチェックしてください。 |
cachefspack: filename - ファイルを unpack できません。stale NFS file handle
エラーが発生した理由 |
問題を解決する方法 |
---|---|
アクセスしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。 |
システム管理者に問い合わせてください。 |
cachefspack: filename - ファイルを unpack できません。interrupted system call
エラーが発生した理由 |
問題を解決する方法 |
---|---|
このコマンドの実行途中で Control-c キーを発行した可能性があります。 |
コマンドを再発行してください。 |
cachefspack: filename - ファイルを unpack できません。I/O エラー
エラーが発生した理由 |
問題を解決する方法 |
---|---|
ハードウェアの障害です。 |
ハードウェアの接続をチェックしてください。 |
cachefspack: `d'、`i'、`p'、`u' オプションのどれか 1 つを指定できます。
エラーが発生した理由 |
問題を解決する方法 |
---|---|
コマンドに対して上記オプションを複数入力しました。 |
オプションは 1 つだけ選択してください。 |
cachefspack: 環境変数を検索できません。
エラーが発生した理由 |
問題を解決する方法 |
---|---|
構成ファイル中で、$ で指定した環境変数を設定していません。 |
環境変数を適切な場所に定義してください。 |
cachefspack: LIST コマンドを無視します - 動作中の bese がありません
エラーが発生した理由 |
問題を解決する方法 |
---|---|
LIST コマンドが構成ファイル内にありますが、対応する BASE コマンドがありません。 |
BASE コマンドを定義してください。 |
CacheFS の統計情報は、次のように利用できます。
適切なキャッシュサイズを判断する。
キャッシュの性能を監視する。
これらの結果から得られた情報を使用すると、キャッシュサイズと望ましい性能を取捨選択して調整できます。
CacheFS の統計情報は、次の 3 つのコマンドからなっています。
cachefslog |
ログファイルの位置を指定します。また、このコマンドでは、統計情報が現在どこに記録されているかが表示されるので、ロギングを中止できます。詳細は、cachefslog(1M) のマニュアルページを参照してください。 |
cachefswssize |
ログファイルを解釈して推奨キャッシュサイズを表示します。詳細は、cachefswssize(1M) のマニュアルページを参照してください。 |
cachefsstat |
特定のファイルシステム、またはキャッシュされたすべてのファイルシステムに関する統計情報を表示します。このコマンドの出力に含まれる情報は、キャッシュから直接取り出されます。詳細は、cachefsstat(1M) のマニュアルページを参照してください。 |
CacheFS 統計情報コマンドは、どのディレクトリから実行してもかまいません。ただし、cachefswssize(1M) コマンドを実行するには、スーパーユーザーにならなければなりません。
統計の累計は、ログファイルの作成時から始まります。作業時間が終わったら、cachefslog -h コマンドを使用してロギングを停止してください。手順については、「ロギングプロセスを停止する方法」を参照してください。
CacheFS 統計情報コマンドを使用する前に、次の操作を実行しておかなければなりません。
cfsadmin(1M) コマンドを使用してキャッシュを設定する。
作成するログファイルに統計情報を収集できるように、適切な時間を決定する。この時間は、1 日、1 週間、1 カ月など、一般的な作業間隔に等しくする必要がある。
ログファイルの位置またはパスを選択する。ログファイルが大きくなっても対応できる程度の領域があることを確認する。ログファイルに統計情報を収集できる時間を長くするほど、大きな領域が必要になる。
次の手順は推奨する順序を示しています。異なる順序で作業してもかまいません。
表 29-3 は、CacheFS 統計情報の設定に関連する手順を示しています。
表 29-3 CacheFS 統計情報の設定
作業 |
説明 |
手順の説明 |
|||||
---|---|---|---|---|---|---|---|
ロギングの設定 |
cachefslog コマンドを使用して、キャッシュされたファイルシステムのロギングを設定する。 | ||||||
ロギングプロセスを設定する方法 |
cachefslog コマンドを使用してログファイルの位置を指定する。 | ||||||
| |||||||
ロギングプロセスの停止 |
cachefslog コマンドを使用してロギングプロセスを停止する。 | ||||||
| |||||||
キャッシュサイズの表示 |
cachefswssize コマンドを使用してキャッシュサイズを表示する | ||||||
| |||||||
キャッシュ統計情報を表示する。 |
cachefsstat コマンドを使用して統計情報を表示する。 | ||||||
|
この節では CacheFS ロギングを設定し、表示する方法を説明します。
cachefslog コマンドを使用してロギングプロセスを設定します。
$ cachefslog -f log-file-path mount-point
-f |
ロギングプロセスを設定する |
log-file-path |
ログファイルの位置を表す。ログファイルは、vi などのエディタで作成する標準ファイル |
mount-point |
統計情報を収集するマウントポイント (キャッシュされたファイルシステム) を指定する |
ログファイルを正しく設定したかどうかを確認するには、次のように cachefslog コマンドを使用します。
$ cachefslog mount-point
次の例では、ログファイル samlog を設定して /home/sam に関する統計情報を収集します。samlog の場所は /var/tmp/samlog です。
$ cachefslog -f /var/tmp/samlog /home/sam /var/tmp/samlog: /home/sam $ cachefslog /home/sam /var/tmp/samlog: home/sam
オプションを指定せずに cachefslog(1M) コマンドを使用して、特定のマウントポイントに対するログファイルの場所を調べることもできます。
$ cachefslog mount-point
mount-point |
統計情報を表示したいキャッシュされたファイルシステム |
次の例は、ログファイルが設定されている場合の表示を示します。ログファイルは、/var/tmp/stufflog にあります。
$ cachefslog /home/stuff /var/tmp/stufflog: /home/stuff
次の例は、指定したファイルシステムのログファイルが設定されていないことを示しています。
$ cachefslog /home/zap not logged: /home/zap
cachefslog(1M) コマンドの -h オプションを使用して、ロギングプロセスを停止します。
$ cachefslog -h mount-point
次の例では、/home/stuff のロギングを停止します。
$ cachefslog -h /home/stuff not logged: /home/stuff
上記の例と異なるシステム応答が表示される場合は、ロギングプロセスが正常に停止されていません。正しいログファイル名とマウントポイントを指定したかどうかを確認してください。
キャッシュサイズを増やすべきかどうかを確認したり、特定のマウントポイントに関して前回 cachefslog(1M) コマンドを使用した後の作業から理想的なキャッシュサイズを決定したりできます。
スーパーユーザーになります。
cachefswssize(1M) コマンドを使用して、現在のログのキャッシュサイズと最大キャッシュサイズを表示します。
# cachefswssize log-file-path
次の例で、「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 /usr/openwin end size: 7168k high water size: 7168k /nfs/venus.svr4 end size: 4688k high water size: 5000k /usr end size: 4992k high water size: 4992k total for cache initial size: 110960k end size: 30872k high water size: 30872k
キャッシュされた特定のファイルシステムに関する情報を表示できます。次の表は、統計情報の出力時に表示される用語を示しています。
表 29-4 統計情報の出力に表示される用語
用語 |
説明 |
---|---|
ヒット率 (hit rate) |
キャッシュのヒット率対欠落率の比と、それに続く実際のヒット数と欠落数。キャッシュヒットは、ユーザーがファイル操作を実行したいときに、そのファイルが実際にはキャッシュ内にあると発生する。キャッシュの欠落は、ファイルがキャッシュになかったときに発生する。サーバーにかかる負荷は、キャッシュ欠落数、整合性チェック数、および変更数の合計である |
チェック数 (checks) |
実行された整合性チェックの回数、合格回数、不合格回数 |
変更数 (modifies) |
書き込みや作成など、変更操作の回数 |
cachefsstat(1M) コマンドを使用して統計情報を表示します。この操作はいつでも実行できます。たとえば、ロギングを設定しなくても統計情報を表示できます。
$ cachefsstat mount-point
mount-point |
統計情報を表示したいキャッシュされたファイルシステム |
マウントポイントを指定しなければ、マウントされているすべての CacheFS ファイルシステムに関する統計情報が表示されます。
$ cachefsstat /home/sam cache hit rate: 73% (1234 hits, 450 misses) consistency checks: 700 (650 pass, 50 fail) modifies: 321
各キャッシュには、その動作と構造を決定する一連のパラメタが付いています。各パラメタは、表 29-5 に示すデフォルト値に設定されています。デフォルト値は、フロントファイルシステム全体をキャッシュに使用するように指定しますが、これはファイルシステムをキャッシュに書き込む場合の推奨方法です。
表 29-5 キャッシュパラメタとデフォルト値
キャッシュパラメタ |
デフォルト値 |
定義 |
---|---|---|
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(1M) コマンドを使用します。たとえば、次のようになります。
$ cfsadmin -o maxblocks=60
CacheFS は、キャッシュされたディレクトリとファイルが最新の状態に保たれることを保証するために、キャッシュに格納されたファイルの整合性を定期的にチェックします。整合性をチェックするために、CacheFS は現在の変更時刻を前回の変更時刻と比較します。変更時刻が異なる場合は、そのディレクトリまたはファイルに関するすべてのデータと属性がキャッシュから消去され、バックファイルシステムから新しいデータと属性が取り出されます。
ユーザーがディレクトリやファイルの処理を要求すると、CacheFS は整合性を検査する時間があるかどうかをチェックします。時間があれば、バックファイルシステムから変更時刻を取得して比較します。
mount(1M) コマンドの demandconst オプションを指定すると、このオプションでマウントしたファイルシステムに関して明示的に要求するときのみ、整合性チェックを実行できます。ファイルシステムをキャッシュにマウントするときに demandconst オプションを指定すると、-s オプションを指定して cfsadmin コマンドを使用し、整合性チェックを要求します。デフォルトでは、ファイルがアクセスされるたびに、各ファイルの整合性がチェックされます。ファイルがアクセスされなければ、チェックは実行されません。demandconst オプションを使用すると、整合性チェックによってネットワークがあふれる事態を回避できます。この整合性チェックの詳細は、cfsadmin(1M) のマニュアルページを参照してください。