キャッシュファイルシステム (CacheFS) は、サーバーとネットワークの負荷を軽減して NFS サーバーのパフォーマンスとスケーラビリティを改善する汎用ファイルシステムキャッシュ機構です。CacheFS は階層化ファイルシステムとして設計されていて、あるファイルシステムを別のファイルシステムのキャッシュに書き込む機能を持っています。NFS 環境では、CacheFS はサーバーあたりのクライアント比率を高め、サーバーとネットワークの負荷を軽減し、ポイントツーポイントプロトコル (PPP) のような低速リンク上でクライアントのパフォーマンスを改善します。
この章の内容は次のとおりです。
キャッシュにマウントするように指定したファイルシステムに、ユーザーがネットワークを経由しなくてもローカルにアクセスできるように、cfsadmin(1M) コマンドを使用してキャッシュをクライアント上で作成します。図 37-1 に、CacheFS の使用に関連する構成要素の関係を示します。
バックファイルシステムとは、キャッシュにマウントするように指定するファイルシステムです。通常、これは NFS または HSFS (High Sierra File System) ファイルシステムです。ユーザーがバックファイルシステムの一部であるファイルにアクセスしようとすると、そのファイルはキャッシュに書き込まれます。したがって、ユーザーがファイルにアクセスするまで、キャッシュは空になっています。ユーザーにとって、ファイルに初めてアクセスするときは低速に思われますが、同じファイルを使用すると高速になります。
共有可能なファイルシステムしかマウントできません。share(1M) コマンドを参照してください。
作業 |
説明 |
手順の説明 |
---|---|---|
1. キャッシュの作成 |
cfsadmin コマンドを使用してキャッシュを作成する。 | |
2. ファイルシステムをキャッシュにマウントする |
mount コマンドを使用してファイルシステムをキャッシュにマウントする。 | |
|
/etc/vfstab ファイルを編集してファイルシステムをキャッシュに書き込む。 | |
|
AutoFS を使用してファイルシステムをキャッシュに書き込む。 |
次に、キャッシュディレクトリを作成する手順について説明します。
スーパーユーザーになります。
cfsadmin -c コマンドを使用してキャッシュを作成します。
# cfsadmin -c cache-directory |
cache-directory |
キャッシュが作成されるディレクトリ名。詳細は、cfsadmin(1M) のマニュアルページを参照 |
キャッシュを作成し終わったら、キャッシュディレクトリ内で処理を実行しないでください。何か実行すると、CacheFS ソフトウェア内で矛盾が生じます。
次の例では、デフォルトのキャッシュパラメータ値を使用して、/local/mycache ディレクトリ内にキャッシュを作成します。
# mkdir /local # cfsadmin -c /local/mycache |
指定したファイルシステム内のファイルにユーザーがローカルにアクセスできるように、キャッシュにマウントされるファイルシステムを指定します。実際には、各ファイルは、ユーザーがアクセスするまではキャッシュに書き込まれません。
キャッシュにマウントされるファイルシステムを指定するには、次の 3 つの方法があります。
キャッシュにマウントされるファイルシステムを指定する方法 |
説明 |
---|---|
mount(1M) コマンドを使用する方法 |
同じファイルにアクセスするには、システムをリブートするたびに mount コマンドを使用する |
/etc/vfstab ファイルを編集する方法 |
一度だけですむ。/etc/vfstab ファイルの内容は、システムをリブートした後も変更されずに残る。 |
AutoFS を使用する方法 |
一度だけですむ。AutoFS のマップは、システムをリブートした後も変更されずに残る。 |
いずれかの方法を選択してファイルシステムをマウントしてください。
CacheFS では、ルート (/) と /usr のファイルシステムをキャッシュに書き込むことはできません。ルート (/) と /usr のファイルシステムをキャッシュに書き込むには、Solstice AutoClient 製品を購入しなければなりません。AutoClient 製品の詳細は、『Solstice AutoClient 2.1 管理者ガイド』を参照してください。
スーパーユーザーになります。
マウントポイントを作成します。
マウントポイントを作成すると、ユーザーはそのマウントポイントで指定されたファイルシステムにアクセスできます。マウントポイントはどこからでも作成できます。次の手順のように、マウントコマンドで使用する 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) のマニュアルページや、『Solaris のシステム管理 (第 3 巻)』も参照してください。
スーパーユーザーになります。
エディタを使用して、次の 1 行を auto_direct マップに追加します。
/mount-point -fstype=cachefs,cachedir=/directory,backfstype=nfs server:/file-system
エディタを使用して、次の 1 行を auto_master マップに追加します。
/-
/- エントリによって、auto_direct マップをチェックするように指示します。
システムをリブートします。
エントリが正しく作成されたか確認するには、次のようにキャッシュにマウントしたファイルシステムにカレントディレクトリを変更して内容を表示します。
# cd filesystem # ls |
AutoFS とマップを編集する方法についての詳細は、『Solaris のシステム管理 (第 3 巻)』の AutoFS に関する章を参照してください。
次の auto_master エントリは、キャッシュファイルシステムを /docs ディレクトリに自動的にマウントします。
/docs -fstype=cachefs,cachedir=/local/mycache,backfstype=nfs merlin:/docs
作業 |
説明 |
手順の説明 |
---|---|---|
1. キャッシュの変更 |
キャッシュの動作を変更する。 | |
2. キャッシュ情報の表示 |
cfsadmin コマンドを使用してキャッシュされたファイルシステムに関する情報を表示する。 | |
3. 整合性チェックの実行 |
cfsadmin コマンドを使用して必要に応じて整合性チェックを実行する。 | |
4. キャッシュの削除 |
umount コマンドと cfsadmin コマンドを使用して、キャッシュされたファイルシステムを削除する。 | |
5. ファイルシステムの完全性の検査 |
fsck_cachefs コマンドを使用して、キャッシュされたファイルシステムの完全性をチェックする。 |
キャッシュを設定し終わったら、次の管理作業を実行できます。
キャッシュ内のファイルシステムを変更する (キャッシュをマウント解除し、削除し、作成し直し、再びマウントする)
キャッシュ情報を表示する
キャッシュの整合性をチェックする
キャッシュからファイルシステムを削除する
キャッシュされたファイルシステムの完全性をチェックする
/etc/vfstab ファイルを使用してファイルシステムをマウントしている場合は、このファイル内でファイルシステムオプションを編集してキャッシュを変更します。AutoFS を使用している場合は、AutoFS マップ内でファイルシステムオプションを編集してキャッシュを変更します。
ファイルシステムの特定のオプションを変更する方法については、第 36 章「ファイルシステムのマウントとマウント解除 (手順)」を参照してください。キャッシュ内でファイルシステムを変更する場合は、キャッシュを削除してから作成し直す必要があります。また、ファイルシステムの共有方法とアクセス方法によっては、マシンをシングルユーザーモードでリブートしなければならない場合があります。
次の例は、この手順を示しています。
次の例では、キャッシュが削除されてから再び作成され、ファイルシステム /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 from system 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 # |
ファイルシステムをキャッシュに正常に戻せなかった場合は、次のようなエラーメッセージが表示されます。
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 |
キャッシュされた特定のファイルシステム上で整合性チェックを有効にするには、次のように cfsadmin -s コマンドを使用します。
# 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_cachefs(1M) を参照してください。
スーパーユーザーになります。
指定されたキャッシュ内でキャッシュされたファイルシステムをチェックします。
# fsck -F cachefs [-m -o noclean] cache-directory |
-m |
fsck にキャッシュされたファイルシステムをチェックさせるが、修復しない |
-o noclean |
キャッシュされたファイルシステム上でチェックのみを実行させるが、修復しない |
cache-directory |
キャッシュがあるディレクトリ名 |
次の例では、/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(1) のマニュアルページを参照してください。
次の例は、パッキングリストファイルの内容を示しています。
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 -sf コマンドを使用して、パッキングリストをキャッシュにパックします。
$ 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 . . . |
-iv オプションを使用した場合、指定したファイルまたはディレクトリがキャッシュからフラッシュされたかどうかの追加情報も表示されます。たとえば、次のとおりです。
$ 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 コマンドを使用する時に、次のようなエラーメッセージが表示されることがあります。
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 の統計情報は、次のように利用できます。
適切なキャッシュサイズを判断する。
キャッシュのパフォーマンスを監視する。
これらの結果から得られた情報を使用すると、キャッシュサイズと望ましいパフォーマンスを取捨選択して調整できます。
CacheFS の統計に関連する、次の 3 つのコマンドがあります。
cachefslog(1M) |
ログファイルの位置を指定します。また、このコマンドでは、統計情報が現在どこに記録されているかが表示されるので、ロギングを中止できます。 |
cachefswssize(1M) |
ログファイルを解釈して推奨キャッシュサイズを表示します。 |
cachefsstat(1M) |
特定のファイルシステム、またはキャッシュされたすべてのファイルシステムに関する統計情報を表示します。このコマンドの出力に含まれる情報は、キャッシュから直接取り出されます。 |
CacheFS 統計情報コマンドは、どのディレクトリから実行してもかまいません。ただし、cachefswssize コマンドを実行するには、スーパーユーザーにならなければなりません。
統計の累計は、ログファイルの作成時から始まります。作業時間が終わったら、cachefslog -h コマンドを使用してロギングを停止してください。手順については、「ロギングプロセスを停止する方法」を参照してください。
CacheFS 統計情報コマンドを使用する前に、次の操作を実行しておかなければなりません。
cfsadmin(1M) コマンドを使用してキャッシュを設定する。
作成するログファイルに統計情報を収集できるように、適切な時間を決定する。この時間は、1 日、1 週間、1 カ月など、一般的な作業間隔に等しくする必要がある。
ログファイルの位置またはパスを選択する。ログファイルが大きくなっても対応できる程度の領域があることを確認する。ログファイルに統計情報を収集できる時間を長くするほど、大きな領域が必要になる。
次の手順は推奨する順序を示しています。異なる順序で作業してもかまいません。
表 37-3 に、CacheFS 統計情報の設定に関連する手順を示します。
表 37-3 作業マップ : CacheFS 統計情報の設定
作業 |
説明 |
手順の説明 |
---|---|---|
1. ロギングの設定 |
cachefslog コマンドを使用して、キャッシュされたファイルシステムのロギングを設定する。 | |
2. ログファイルの検索 |
cachefslog コマンドを使用してログファイルの位置を特定する。 | |
3. ロギングプロセスの停止 |
cachefslog コマンドを使用してロギングプロセスを停止する。 | |
4. キャッシュサイズの表示 |
cachefswssize コマンドを使用してキャッシュサイズを表示する。 | |
5. キャッシュ統計情報の表示。 |
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(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 |
キャッシュされた特定のファイルシステムに関する情報を表示できます。次の表は、統計情報の出力時に表示される用語を示しています。
表 37-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 garbage collection: 0 |
各キャッシュには、その動作と構造を決定する一連のパラメータが付いています。各パラメータは、表 37-5 に示すデフォルト値に設定されています。デフォルト値は、フロントファイルシステム全体をキャッシュに使用するように指定しますが、これはファイルシステムをキャッシュに書き込む場合の推奨方法です。
表 37-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 オプションを使用すると、整合性チェックによってネットワークがいっぱいになるという事態を回避できます。