Solaris のシステム管理 (第 1 巻)

第 37 章 キャッシュファイルシステム (手順)

キャッシュファイルシステム (CacheFS) は、サーバーとネットワークの負荷を軽減して NFS サーバーのパフォーマンスとスケーラビリティを改善する汎用ファイルシステムキャッシュ機構です。CacheFS は階層化ファイルシステムとして設計されていて、あるファイルシステムを別のファイルシステムのキャッシュに書き込む機能を持っています。NFS 環境では、CacheFS はサーバーあたりのクライアント比率を高め、サーバーとネットワークの負荷を軽減し、ポイントツーポイントプロトコル (PPP) のような低速リンク上でクライアントのパフォーマンスを改善します。

この章の内容は次のとおりです。

CacheFS の機能

キャッシュにマウントするように指定したファイルシステムに、ユーザーがネットワークを経由しなくてもローカルにアクセスできるように、cfsadmin(1M) コマンドを使用してキャッシュをクライアント上で作成します。図 37-1 に、CacheFS の使用に関連する構成要素の関係を示します。

バックファイルシステムとは、キャッシュにマウントするように指定するファイルシステムです。通常、これは NFS または HSFS (High Sierra File System) ファイルシステムです。ユーザーがバックファイルシステムの一部であるファイルにアクセスしようとすると、そのファイルはキャッシュに書き込まれます。したがって、ユーザーがファイルにアクセスするまで、キャッシュは空になっています。ユーザーにとって、ファイルに初めてアクセスするときは低速に思われますが、同じファイルを使用すると高速になります。


注 -

共有可能なファイルシステムしかマウントできません。share(1M) コマンドを参照してください。


図 37-1 CacheFS の機能

Graphic

キャッシュファイルシステムの設定

表 37-1 作業マップ : キャッシュファイルシステムの設定

作業 

説明 

手順の説明 

1. キャッシュの作成 

cfsadmin コマンドを使用してキャッシュを作成する。

「キャッシュを作成する方法」

2. ファイルシステムをキャッシュにマウントする 

mount コマンドを使用してファイルシステムをキャッシュにマウントする。

mount を使用してキャッシュにマウントするファイルシステムを指定する方法」

 

/etc/vfstab ファイルを編集してファイルシステムをキャッシュに書き込む。

/etc/vfstab ファイルを編集してファイルシステムをキャッシュにマウントする方法」

 

AutoFS を使用してファイルシステムをキャッシュに書き込む。 

「AutoFS を使用してファイルシステムをキャッシュにマウントする方法」

キャッシュを作成する

次に、キャッシュディレクトリを作成する手順について説明します。

キャッシュを作成する方法

  1. スーパーユーザーになります。

  2. 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 管理者ガイド』を参照してください。


mount を使用してキャッシュにマウントするファイルシステムを指定する方法

  1. スーパーユーザーになります。

  2. マウントポイントを作成します。

    マウントポイントを作成すると、ユーザーはそのマウントポイントで指定されたファイルシステムにアクセスできます。マウントポイントはどこからでも作成できます。次の手順のように、マウントコマンドで使用する CacheFS オプションによって、作成するマウントポイントを、指定したキャッシュディレクトリ内のキャッシュに書き込むように決めます。

  3. mount コマンドを使用して、ファイルシステムをキャッシュにマウントします。


    # mount -F cachefs -o backfstype=fstype,cachedir=cache-directory[,options] 
    back-filesystem mount-point
    

    fstype

    バックファイルシステムのタイプ (NFS または HSFS)

    cache-directory

    キャッシュがあるディレクトリ名。これは、「キャッシュを作成する方法」でキャッシュを作成するときの指定と同じ

    options

    ファイルシステムをキャッシュにマウントするときに追加できる他のマウントオプションを指定する。CacheFS マウントオプションの詳細は、mount_cachefs(1M) のマニュアルページを参照

    back-filesystem

    キャッシュにマウントするバックファイルシステムのマウントポイント。バックファイルシステムが NFS ファイルシステムであれば、merlin: /usr/openwin など、ファイルシステムのマウント元となるサーバーのホスト名と、キャッシュにマウントするファイルシステム名 (コロンで区切る) を指定しなければならない

    mount-point

    ファイルシステムのマウント先となるディレクトリ 

  4. 作成したキャッシュが実際にマウントされたかどうかを確認するには、次のように 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

例 - mount を使用してキャッシュにマウントするファイルシステムを指定する

次の例では、マウントポイント /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 ファイルを編集してファイルシステムをキャッシュにマウントする方法

  1. スーパーユーザーになります。

  2. エディタを使用して、マウントするファイルシステムを /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  -

    最終行は新しいエントリを表します。

  3. 次のように mount コマンドを使用してキャッシュされたファイルシステムをマウントするか、リブートします。


    # mount /mount-point
    

例 - /etc/vfstab ファイルを編集してキャッシュにファイルシステムをマウントする

次の例は、キャッシュファイルシステム用の /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

AutoFS を使用してファイルシステムをキャッシュにマウントする方法

自動マウントマップ内で -fstype=cachefs マウントオプションを指定して、AutoFS によってキャッシュにファイルシステムをマウントします。CacheFS のマウントオプション (backfstypecachedir など) も、自動マウントマップ内で指定します。自動マウントマップについての詳細は、automount(1M) のマニュアルページや、『Solaris のシステム管理 (第 3 巻)』も参照してください。

  1. スーパーユーザーになります。

  2. エディタを使用して、次の 1 行を auto_direct マップに追加します。

      /mount-point -fstype=cachefs,cachedir=/directory,backfstype=nfs server:/file-system
    
  3. エディタを使用して、次の 1 行を auto_master マップに追加します。

      /-

    /- エントリによって、auto_direct マップをチェックするように指示します。

  4. システムをリブートします。

  5. エントリが正しく作成されたか確認するには、次のようにキャッシュにマウントしたファイルシステムにカレントディレクトリを変更して内容を表示します。


    # cd filesystem
    # ls 
    

AutoFS とマップを編集する方法についての詳細は、『Solaris のシステム管理 (第 3 巻)』の AutoFS に関する章を参照してください。

例 - AutoFS を使用してファイルシステムをキャッシュにマウントする

次の auto_master エントリは、キャッシュファイルシステムを /docs ディレクトリに自動的にマウントします。

/docs	 -fstype=cachefs,cachedir=/local/mycache,backfstype=nfs merlin:/docs

キャッシュされたファイルシステムの管理

表 37-2 作業マップ : キャッシュされたファイルシステムの管理

作業 

説明 

手順の説明 

1. キャッシュの変更 

キャッシュの動作を変更する。 

「キャッシュ内のファイルシステムを変更する方法」

2. キャッシュ情報の表示 

cfsadmin コマンドを使用してキャッシュされたファイルシステムに関する情報を表示する。

「キャッシュされたファイルシステムに関する情報を表示する方法」

3. 整合性チェックの実行 

cfsadmin コマンドを使用して必要に応じて整合性チェックを実行する。

「必要に応じて整合性チェックを指定する方法」

4. キャッシュの削除 

umount コマンドと cfsadmin コマンドを使用して、キャッシュされたファイルシステムを削除する。

「キャッシュされたファイルシステムを削除する方法」

5. ファイルシステムの完全性の検査 

fsck_cachefs コマンドを使用して、キャッシュされたファイルシステムの完全性をチェックする。

「キャッシュされたファイルシステムの完全性をチェックする方法」

キャッシュの管理

キャッシュを設定し終わったら、次の管理作業を実行できます。

キャッシュ内のファイルシステムを変更する方法

ファイルシステムの特定のオプションを変更する方法については、第 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

キャッシュされたファイルシステムに関する情報を表示する方法

  1. スーパーユーザーになります。

  2. 指定したキャッシュにマウントされたすべてのファイルシステムに関する情報を表示します。


    # 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
#

必要に応じて整合性チェックを指定する方法

  1. スーパーユーザーになります。

  2. 次のように mount(1M) コマンドの demandconst オプションを指定して、ファイルシステムをキャッシュにマウントします。


    # mount -F cachefs -o backfstype=nfs,cachedir=/directory,demandconst 
    server:/file-system /mount-point
    

  3. キャッシュされた特定のファイルシステム上で整合性チェックを有効にするには、次のように cfsadmin -s コマンドを使用します。


    # cfsadmin -s  /mount-point
    

    整合性チェックについての詳細は、「キャッシュされたファイルシステムとバックファイルシステムとの整合性チェック」を参照してください。

キャッシュされたファイルシステムを削除する方法

  1. スーパーユーザーになります。

  2. キャッシュ内のすべてのファイルシステムをマウント解除します。


    # umount mount-point
    

    mount-point には、削除したい、キャッシュされたファイルシステムを指定します。

  3. 次のように、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
    #
  4. キャッシュされたファイルシステムを指定したキャッシュから削除します。


    # cfsadmin -d cache-id cache-directory
    

    cache-id

    キャッシュされたファイルシステム名。この名前は、cfsadmin -l コマンドからの出力の最終行に表示される。詳細は、「キャッシュされたファイルシステムに関する情報を表示する方法」を参照。cache-idall を指定すると、特定のキャッシュに書き込まれたすべてのファイルシステムを削除できる

    cache-directory

    キャッシュがあるディレクトリ 

  5. キャッシュされたファイルシステムが削除されたことを確認します。

    削除したファイルシステムのキャッシュ 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) を参照してください。

  1. スーパーユーザーになります。

  2. 指定されたキャッシュ内でキャッシュされたファイルシステムをチェックします。


    # fsck -F cachefs [-m -o noclean] cache-directory
    

    -m

    fsck にキャッシュされたファイルシステムをチェックさせるが、修復しない

    -o noclean

    キャッシュされたファイルシステム上でチェックのみを実行させるが、修復しない 

    cache-directory

    キャッシュがあるディレクトリ名 

例 - キャッシュされたファイルシステムの完全性をチェックする

次の例では、/local/mycache キャッシュの一部になっているキャッシュされたファイルシステムをチェックします。


# fsck -F cachefs /local/mycache
#

cachefspack によるキャッシュファイルシステムの管理

一般的な使い方でも、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

パッキングリストに指定してファイルをキャッシュにパックする方法

パッキングリストを使用してファイルをパックするには、次に示すように、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 コマンドに定義されたファイル名を (文字どおりのファイル名ではなく) 正規表現として扱います。

共有ディレクトリのファイルをパックする方法

  1. 共有ディレクトリにある、ユーザーが所有するファイルだけをパックするには、次のように LIST コマンドをパッキングリストに定義します。

       LIST !find . -user your_user_name -print
  2. 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 には xtermtexteditresize の 3 つのファイルがあります。xtermresize ファイルはパックするように指定されていますが、パックされていません。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 コマンドのヘルプの表示

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 コマンドを使用する時に、次のようなエラーメッセージが表示されることがあります。


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 の統計情報は、次のように利用できます。

これらの結果から得られた情報を使用すると、キャッシュサイズと望ましいパフォーマンスを取捨選択して調整できます。

CacheFS の統計に関連する、次の 3 つのコマンドがあります。

cachefslog(1M)

ログファイルの位置を指定します。また、このコマンドでは、統計情報が現在どこに記録されているかが表示されるので、ロギングを中止できます。 

cachefswssize(1M)

ログファイルを解釈して推奨キャッシュサイズを表示します。 

cachefsstat(1M)

特定のファイルシステム、またはキャッシュされたすべてのファイルシステムに関する統計情報を表示します。このコマンドの出力に含まれる情報は、キャッシュから直接取り出されます。 


注 -

CacheFS 統計情報コマンドは、どのディレクトリから実行してもかまいません。ただし、cachefswssize コマンドを実行するには、スーパーユーザーにならなければなりません。


統計の累計は、ログファイルの作成時から始まります。作業時間が終わったら、cachefslog -h コマンドを使用してロギングを停止してください。手順については、「ロギングプロセスを停止する方法」を参照してください。

CacheFS 統計情報を設定して表示するための前提条件

CacheFS 統計情報コマンドを使用する前に、次の操作を実行しておかなければなりません。


注 -

次の手順は推奨する順序を示しています。異なる順序で作業してもかまいません。


CacheFS 統計情報の設定

表 37-3 に、CacheFS 統計情報の設定に関連する手順を示します。

表 37-3 作業マップ : CacheFS 統計情報の設定

作業 

説明 

手順の説明 

1. ロギングの設定 

cachefslog コマンドを使用して、キャッシュされたファイルシステムのロギングを設定する。

「ロギングプロセスを設定する方法」

2. ログファイルの検索 

cachefslog コマンドを使用してログファイルの位置を特定する。

「ログファイルの場所を調べる方法」

3. ロギングプロセスの停止 

cachefslog コマンドを使用してロギングプロセスを停止する。

「ロギングプロセスを停止する方法」

4. キャッシュサイズの表示 

cachefswssize コマンドを使用してキャッシュサイズを表示する。

「作業セット (キャッシュ) のサイズを表示する方法」

5. キャッシュ統計情報の表示。 

cachefsstat コマンドを使用して統計情報を表示する。

「キャッシュ統計情報を表示する方法」

CacheFS ロギング

この節では CacheFS ロギングを設定し、表示する方法を説明します。

ロギングプロセスを設定する方法

  1. cachefslog コマンドを使用してロギングプロセスを設定します。


    $ cachefslog -f  log-file-path mount-point 
    

    -f

    ロギングプロセスを設定する 

    log-file-path

    ログファイルの位置を表す。ログファイルは、vi などのエディタで作成する標準ファイル 

    mount-point

    統計情報を収集するマウントポイント (キャッシュされたファイルシステム) を指定する 

  2. ログファイルを正しく設定したかどうかを確認するには、次のように 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) コマンドを使用した後の作業から理想的なキャッシュサイズを決定したりできます。

作業セット (キャッシュ) のサイズを表示する方法

  1. スーパーユーザーになります。

  2. 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 ノード数 (ファイル数) を設定する

通常、これらのパラメータ値を変更する必要はありません。最適のキャッシュ動作が得られるデフォルト値に設定されています。ただし、キャッシュに使用されないフロントファイルシステム内に空き空間があり、それを他のファイルシステムに使用したい場合は、maxblocksmaxfiles の設定を変更できます。そのためには、cfsadmin(1M) コマンドを使用します。たとえば、次のようになります。


$ cfsadmin -o maxblocks=60

キャッシュされたファイルシステムとバックファイルシステムとの整合性チェック

CacheFS は、キャッシュされたディレクトリとファイルが最新の状態に保たれることを保証するために、キャッシュに格納されたファイルの整合性を定期的にチェックします。整合性をチェックするために、CacheFS は現在の変更時刻を前回の変更時刻と比較します。変更時刻が異なる場合は、そのディレクトリまたはファイルに関するすべてのデータと属性がキャッシュから消去され、バックファイルシステムから新しいデータと属性が取り出されます。

ユーザーがディレクトリやファイルの処理を要求すると、CacheFS は整合性を検査する時間があるかどうかをチェックします。時間があれば、バックファイルシステムから変更時刻を取得して比較します。

必要に応じて行う整合性チェック

mount(1M) コマンドの demandconst オプションを指定すると、このオプションでマウントしたファイルシステムに関して明示的に要求するときのみ、整合性チェックを実行できます。ファイルシステムをキャッシュにマウントするときに demandconst オプションを指定すると、-s オプションを指定して cfsadmin コマンドを使用し、整合性チェックを要求します。デフォルトでは、ファイルがアクセスされるたびに、各ファイルの整合性がチェックされます。ファイルがアクセスされなければ、チェックは実行されません。demandconst オプションを使用すると、整合性チェックによってネットワークがいっぱいになるという事態を回避できます。