Solaris のシステム管理 (デバイスとファイルシステム)

第 19 章 CacheFS ファイルシステムの使用 (手順)

この章では、CacheFS ファイルシステムの設定および管理の方法について説明します。

この章で説明する作業マップは、次のとおりです。

CacheFS に関するエラーの障害追跡については、cachefspack エラーの障害追跡」を参照してください。


注 –

NFS version 4 および CacheFS ソフトウェアに関する重要な情報については、「NFS Version 4 と CacheFS の互換性の問題」を参照してください。


CacheFS ファイルシステムの概観 (作業マップ)

次の作業マップは、CacheFS ファイルシステムを使用するためのすべての作業を確認するために使用してください。各作業は、CacheFS ファイルシステムの作成とマウント、キャッシュのパッキングと保守などの一連の付加された作業を指しています。

作業 

説明 

参照先 

1. CacheFS ファイルシステムを作成してマウントします。 

キャッシュを作成し、ファイルシステムをそのキャッシュにマウントします。 

「CacheFS ファイルシステムの作成とマウント (作業マップ)」

2. CacheFS ファイルシステムを保守します。 

キャッシュをマウント解除、削除、または作成し直して、CacheFS ファイルシステムを表示および変更します。 

「CacheFS ファイルシステムの保守 (作業マップ)」

3. (省略可能) CacheFS ファイルシステムをパックおよびパック解除します。 

キャッシュをパックしてパッキングリストを使用するかどうかを決めます。キャッシュをパックすると、キャッシュ内の特定のファイルおよびディレクトリが常に更新されるようになります。 

「CacheFS ファイルシステムのパッキング (作業マップ)」

4. CacheFS の統計情報を収集します。 

キャッシュの性能や適切なキャッシュサイズを決めます。 

「CacheFS の統計情報の収集 (作業マップ)」

CacheFS ファイルシステムの概要

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

CacheFS ファイルシステムの機能

CacheFS ファイルシステムをクライアントシステム上に作成すると、キャッシュに書き込んだファイルシステムをクライアントがネットワークを経由しなくても、ローカルにアクセスできます。次の図は、CacheFS ファイルシステムの使用に関連する構成要素の関係を示しています。

図 19–1 CacheFS ファイルシステムの機能

CacheFS コンポーネント。CacheFS の構成要素を示す。サーバー上のバックファイルシステムとクライアント上のキャッシュされたファイルシステムとの関係を識別する

キャッシュ内にマウントするように指定するファイルシステムを「バック」ファイルシステムと呼びます。バックファイルシステムは、NFS と HSFS (High Sierra File System) のどちらかになります。ユーザーがバックファイルシステムの一部であるファイルにアクセスしようとすると、そのファイルはキャッシュに書き込まれます。「フロント」ファイルシステムとは、キャッシュにマウントされ、ローカルのマウントポイントからアクセスされるファイルシステムです。フロントファイルシステムのタイプは、UFS でなければなりません。

CacheFS ファイルシステム内のファイルにはじめてアクセスするときは、要求の処理速度が遅く感じられる可能性があります。しかし、2 回目以降は、もっと短い時間で処理できます。

CacheFS ファイルシステムの構造と動作

各キャッシュには、キャッシュの構造とその動作を決定する 1 組のパラメータが付いています。各パラメータは、次の表に示すデフォルト値に設定されています。デフォルト値は、フロントファイルシステム全体をキャッシュに使用するように指定しますが、これはファイルシステムをキャッシュに書き込む場合の推奨方法です。

表 19–1 CacheFS ファイルシステムのパラメータとそのデフォルト値

CacheFS ファイルシステムのパラメータ 

デフォルト値 

定義 

maxblocks

90 % 

CacheFS ファイルシステムがフロントファイルシステム内で要求できる最大ブロック数を設定します。 

minblocks

0 % 

CacheFS ファイルシステムがフロントファイルシステム内で要求できる最小ブロック数を設定します。 

threshblocks

85 % 

CacheFS ファイルシステムが minblocks で指定したより多数のブロックを要求する前に、フロントファイルシステム内で使用可能でなければならないブロック数を設定します。

maxfiles

90 % 

CacheFS ファイルシステムがフロントファイルシステム内で要求できる使用可能な i ノードの最大数 (ファイル数) を設定します。 

minfiles

0 % 

CacheFS ファイルシステムがフロントファイルシステム内で要求できる使用可能な i ノードの最小数を設定します。 

threshfiles

85 % 

CacheFS ファイルシステムが minfiles で指定したより多くのファイルを要求する前に、フロントファイルシステム内で使用可能でなければならない i ノード数を設定します。

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


$ cfsadmin -o maxblocks=60

CacheFS ファイルシステムの作成とマウント (作業マップ)

次の作業マップの手順を参照して、CacheFS ファイルシステムを作成およびマウントしてください。

作業 

説明 

参照先 

1. キャッシュに書き込むファイルシステムを共有します。 

キャッシュに書き込むファイルシステムが共有されていることを確認します。 

share(1M)

2. キャッシュを作成します。 

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

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

3. ファイルシステムをキャッシュにマウントします。 

次のいずれかの方法を使用して、ファイルシステムをキャッシュにマウントします。 

 

 

mount コマンドで、CacheFS ファイルシステムをマウントします。

「CacheFS ファイルシステムのマウント方法 (mount)」

 

/etc/vfstab ファイルを編集して、CacheFS ファイルシステムをマウントします。

「CacheFS ファイルシステムのマウント方法 (/etc/vfstab)」

 

autofs サービスを使用して、キャッシュされたファイルシステムをマウントします。 

「CacheFS ファイルシステムのマウント方法 (autofs)」

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

  1. クライアントシステムでスーパーユーザーになります。

  2. キャッシュを作成します。


    # cfsadmin -c /cache-directory
    

    cache-directory は、キャッシュがあるディレクトリの名前を示します。

    詳細は、cfsadmin(1M) のマニュアルページを参照してください。


    注 –

    キャッシュを作成し終わったら、キャッシュディレクトリ内で処理を実行しないでください。何か実行すると、CacheFS ソフトウェア内で矛盾が生じる可能性があります。



例 19–1 キャッシュを作成する

次の例は、デフォルトのキャッシュパラメータ値を使用して、/local/mycache ディレクトリ内にキャッシュを作成する方法を示しています。


# mkdir /local
# cfsadmin -c /local/mycache

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

キャッシュにマウントされるファイルシステムを指定して、ユーザーがそのファイルシステム内のファイルにローカルにアクセスできるようにします。実際には、各ファイルは、ユーザーがアクセスするまではキャッシュに書き込まれません。

次の表に、CacheFS ファイルシステムをマウントする 3 つの方法を示します。

CacheFS ファイルシステムのマウント方法 

CacheFS マウント方法の使用頻度 

mount コマンドを使用する方法

同じファイルにアクセスするには、システムをリブートするたびに mount コマンドを使用します。 

/etc/vfstab ファイルを編集する方法

1 度だけですみます。/etc/vfstab ファイルの内容は、システムをリブートしたあとも変更されずに残ります。

autofs を使用する方法 

1 度だけですみます。autofs のマップは、システムをリブートしたあとも変更されずに残ります。  

いずれかの方法を選択してファイルシステムをマウントしてください。

共有可能なファイルシステムしかマウントできません。ファイルシステムの共有については、share(1M) のマニュアルページを参照してください。


注 –

CacheFS ファイルシステムでは、ルート (/) と /usr のファイルシステムをキャッシュに書き込むことはできません。


ProcedureCacheFS ファイルシステムのマウント方法 (mount)

  1. クライアントシステムでスーパーユーザーになります。

  2. 必要に応じて、マウントポイントを作成します。


    # mkdir /mount-point
    

    マウントポイントはどこからでも作成できますが、UFS ファイルシステムでなければなりません。次の手順のように、mount コマンドで CacheFS オプションを使用すると、作成するマウントポイントが指定したキャッシュディレクトリ内のキャッシュに書き込まれるように指定できます。

  3. ファイルシステムをキャッシュにマウントします。


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

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

    /cache-directory

    キャッシュがある UFS ディレクトリの名前。「キャッシュを作成する方法」でキャッシュを作成するときに指定した名前と同じです。

    options

    ファイルシステムをキャッシュにマウントするときに追加できるほかのマウントオプション。CacheFS の mount オプションの詳細は、mount_cachefs(1M) のマニュアルページを参照してください。

    /back-filesystem

    キャッシュにマウントするバックファイルシステムのマウントポイント。バックファイルシステムが NFS ファイルシステムである場合は、ファイルシステムのマウント元となるサーバーのホスト名と、キャッシュにマウントするファイルシステム名 (コロンで区切る) を指定する必要があります。たとえば、merlin: /data/abc

    /mount-point

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

  4. 作成したキャッシュが実際にマウントされたかどうかを確認します。


    # 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 の統計情報の収集」を参照してください。


例 19–2 CacheFS ファイルシステムをマウントする (mount)

次の例は、NFS ファイルシステム merlin:/docs/docs という CacheFS ファイルシステムとして、/local/mycache というキャッシュにマウントする方法を示しています。


# mkdir /docs
# mount -F cachefs -o backfstype=nfs,cachedir=/local/mycache merlin:/docs /docs

次の例は、Solaris 10 DVDを /cfssrc という CacheFS ファイルシステムとして使用できるようにする方法を示しています。DVD には書き込めないので、引数 ro を指定して CacheFS ファイルシステムを読み取り専用にします。この例では、リムーバブルメディアサービスを実行していないものとします。


# mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /sol10
# mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst,
backpath=/sol10 /dev/dsk/c0t6d0s0 /cfssrc
# ls /cfssrc
Copyright  Solaris_10

次の例は、vold を実行しながら、Solaris 10 DVD を CacheFS ファイルシステムとしてマウントする方法を示しています。


# mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst,
backpath=/cdrom/sol_10_sparc/s0 /vol/dev/dsk/c0t2d0/sol_10_sparc/s0 /cfssrc

次の例は、vold を実行しながら、DVD を CacheFS ファイルシステムとしてマウントする方法を示しています。


# mount -F cachefs -o backfstype=hsfs,cachedir=/cfs/cache,ro,noconst,
backpath=/cdrom/epson /vol/dev/dsk/c0t2d0/epson /drvrs

次の例では、demandconst オプションを使用して、NFS CacheFS ファイルシステム /docs の整合性検査を指定します。/docs のバックファイルシステムは merlin:/docs です。詳細は、「CacheFS ファイルシステムの整合性検査」を参照してください。


# mount -F cachefs -o backfstype=nfs,cachedir=/local/mycache,demandconst merlin:/docs /docs

ProcedureCacheFS ファイルシステムのマウント方法 (/etc/vfstab)

  1. クライアントシステムでスーパーユーザーになります。

  2. エディタを使用して、マウントするファイルシステムを /etc/vfstab ファイル内で指定します。

    下の例を参照してください。

    /etc/vfstab ファイルの詳細は、/etc/vfstab ファイルのフィールドの説明」を参照してください。

  3. CacheFS ファイルシステムをマウントします。


    # mount /mount-point
    

    あるいはシステムをリブートします。


例 19–3 CacheFS ファイルシステムをマウントする (/etc/vfstab)

次の例は、キャッシュされたディレクトリ /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

ProcedureCacheFS ファイルシステムのマウント方法 (autofs)

自動マウントマップ内で -fstype=cachefs マウントオプションを指定して、autofs によってファイルシステムをキャッシュにマウントします。CacheFS のマウントオプション (backfstypecachedir など) も、自動マウントマップ内で指定します。

自動マウントマップの詳細は、『Solaris のシステム管理 (ネットワークサービス)』「autofs 管理作業の概要」または automount(1M) のマニュアルページを参照してください。

  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
    

例 19–4 CacheFS ファイルシステムをマウントする (autofs)

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


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

CacheFS ファイルシステムの保守 (作業マップ)

CacheFS ファイルシステムを設定し終わったら、保守作業を多少行う必要があります。CacheFS ファイルシステムの保守作業を行う必要がある場合は、次の作業マップの手順 (オプション) に従ってください。

作業 

説明 

参照先 

CacheFS ファイルシステムを変更します。 

キャッシュをマウント解除、削除、または作成し直して、CacheFS ファイルシステムの動作を変更します。 

「CacheFS ファイルシステムの変更」

CacheFS ファイルシステム情報を表示します。 

cfsadmin コマンドを使用して、CacheFS ファイルシステムに関する情報を表示します。

「CacheFS ファイルシステムに関する情報を表示する方法」

整合性検査を実行します。 

cfsadmin コマンドを使用して必要に応じて整合性検査を実行します。

「必要に応じてキャッシュの整合性検査を指定する方法」

CacheFS ファイルシステムを削除します。 

umount コマンドと cfsadmin コマンドを使用して、CacheFS ファイルシステムを削除します。

「CacheFS ファイルシステムを削除する方法」

CacheFS ファイルシステムの整合性を検査します。 

fsck_cachefs コマンドを使用して、CacheFS ファイルシステムの整合性を検査します。

「CacheFS ファイルシステムの整合性を検査する方法」

CacheFS ファイルシステムの保守

この節では、CacheFS ファイルシステムの保守方法について説明します。

/etc/vfstab ファイルを使用してファイルシステムをマウントしている場合は、このファイル内でファイルシステムオプションを編集してキャッシュを変更します。autofs を使用している場合は、autofs マップ内でファイルシステムオプションを編集してキャッシュを変更します。

CacheFS ファイルシステムの変更

キャッシュ内でファイルシステムを変更する場合は、キャッシュを削除してから作成し直す必要があります。また、ファイルシステムの共有方法とアクセス方法によっては、マシンをシングルユーザーモードでリブートしなければならない場合があります。

次の例では、キャッシュが削除されてから再び作成され、ファイルシステム /docs に指定された demandconst オプションを使用して再びマウントされます。


# shutdown -g30 -y
.
.
.
Root password for system maintenance (control-d to bypass):
single-user privilege assigned to /dev/console. 

.
.
.
Here is where you might be prompted to run fsck on the
file system where the cache is located.

# fsck /local
# mount /local
# cfsadmin -d all /local/mycache
# cfsadmin -c /local/mycache
# init 6
.
.
.
console login:
password:
# mount -F cachefs -o backfstype=nfs,cachedir=/local/cache1,demandconst
merlin:/docs /docs
#

ProcedureCacheFS ファイルシステムに関する情報を表示する方法

  1. クライアントシステムでスーパーユーザーになります。

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


    # cfsadmin -l /cache-directory
    

    /cache-directory は、キャッシュがあるディレクトリの名前です。


例 19–5 CacheFS ファイルシステムに関する情報を表示する

次の例は、/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) のマニュアルページを参照してください。

Procedure必要に応じてキャッシュの整合性検査を指定する方法

  1. クライアントシステムでスーパーユーザーになります。

  2. ファイルシステムをキャッシュにマウントし、キャッシュの整合性検査を指定します。


    # mount -F cachefs -o backfstype=nfs,cachedir=/directory,demandconst
    server:/file-system /mount-point
    
  3. 特定の CacheFS ファイルシステムに対する整合性検査を開始します。


    # cfsadmin -s /mount-point
    

ProcedureCacheFS ファイルシステムを削除する方法

  1. クライアントシステムでスーパーユーザーになります。

  2. CacheFS ファイルシステムをマウント解除します。


    # umount /mount-point
    

    /mount-point は、削除する CacheFS ファイルシステムを示します。

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


    # cfsadmin -d cache-ID /cache-directory
    
    cache-ID

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

    /cache-directory

    キャッシュがあるディレクトリを指定します。

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

    直前に削除したファイルシステムのキャッシュ ID が、cfsadmin -l の出力に表示されなくなります。


    # cfsadmin -l /cache-directory
    cfsadmin: list cache FS information
       maxblocks     90%
       minblocks      0%
       threshblocks  85%
       maxfiles      90%
       minfiles       0%
       threshfiles   85%
       maxfilesize    3MB
    # 

    このコマンド出力に指定されるフィールドについては、cfsadmin(1M) のマニュアルページを参照してください。

  6. キャッシュのリソース数を更新します。


    # fsck -F cachefs /cache-directory
    

    詳細は、「CacheFS ファイルシステムの整合性を検査する方法」を参照してください。


例 19–6 CacheFS ファイルシステムを削除する

次の例は、キャッシュからファイルシステムを削除する方法を示しています。


# umount /cfssrc
# cfsadmin -l /cfssrc
# cfsadmin -d _dev_dsk_c0t6d0s0:_cfssrc
# cfsadmin -l
# fsck -F cachefs /cache-directory

ProcedureCacheFS ファイルシステムの整合性を検査する方法

fsck コマンドを使用して、CacheFS ファイルシステムの整合性を検査します。何も操作しなくても、fsck コマンドの CacheFS バージョンによって問題が自動的に解決されます。fsck コマンドはブート時またはファイルシステムのマウント時に自動的に実行されるため、CacheFS ファイルシステムに対して fsck コマンドを手作業で実行する必要はありません。整合性を手作業で検査する場合は、次の手順を使用できます。

詳細は、fsck_cachefs(1M) のマニュアルページを参照してください。

  1. クライアントシステムでスーパーユーザーになります。

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


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

    fsck コマンドに CacheFS ファイルシステムを検査させますが、修復は行いません。

    -o noclean

    CacheFS ファイルシステムに対する検査のみを実行させます。修復は行いません。

    /cache-directory

    キャッシュがあるディレクトリの名前を指定します。


例 19–7 CacheFS ファイルシステムの整合性を検査する

次の例は、/local/mycache キャッシュに書き込まれているファイルシステムを検査する方法を示しています。


# fsck -F cachefs /local/mycache
#

CacheFS ファイルシステムのパッキング (作業マップ)

次の作業マップでは、CacheFS ファイルシステムのパッキングに関連する手順について説明します。これらの手順はすべてオプションです。

作業 

説明 

参照先 

ファイルをキャッシュにパックします。 

キャッシュにロードされるファイルとディレクトリを識別し、それらをパックします。パッキングは、これらのファイルのコピーがキャッシュで利用できることを保証します。 

「キャッシュにファイルをパックする方法」

パッキングリストを作成します。 

キャッシュにパックするファイルを個々に指定しない場合は、パッキングリストを作成します。 

「パッキングリストを作成する方法」

パッキングリストを使ってファイルをキャッシュにパックします。 

キャッシュにパックするファイルが記載されているパッキングリストの名前を指定します。 

「パッキングリストを使ってファイルをキャッシュにパックする方法」

キャッシュからファイルまたはパッキングリストのパッキングを解除します。 

不要になったファイルをキャッシュから削除します。 

「キャッシュからファイルまたはパッキングリストのパッキングを解除する方法」「キャッシュからファイルまたはパッキングリストのパッキングを解除する方法」

パックされたファイルの情報を表示します。 

パックしたファイルに関する情報 (パッキング状況など) を表示します。 

「パックされたファイルの情報を表示する方法」

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

Procedureキャッシュにファイルをパックする方法

  1. ファイルをキャッシュにパックします。


    $ cachefspack -p filename
    
    -p

    ファイルまたは複数のファイルをパックすることを示します。このオプションはデフォルトです。

    filename

    キャッシュにパックするファイルまたはディレクトリの名前を指定します。ディレクトリを指定すると、そのサブディレクトリもすべてパックされます。詳細は、cachefspack(1M) のマニュアルページを参照してください。


例 19–8 例 — ファイルをキャッシュにパックする

次の例は、projects ファイルがキャッシュにパックされることを示しています。


$ cachefspack -p projects

次の例は、3 つのファイルがキャッシュにパックされることを示しています。


$ cachefspack -p projects updates master_plan

次の例は、ディレクトリがキャッシュにパックされることを示しています。


$ cachefspack -p /data/abc/bin

Procedureパックされたファイルの情報を表示する方法

  1. パックされたファイルの情報を表示します。


    $ cachefspack -i[v] cached-filename-or-directory
    
    -i

    パックされたファイルの情報を表示することを示します。

    -v

    詳細表示オプションです。

    cached-filename-or-directory

    情報を表示するファイル名またはディレクトリ名を指定します。


例 19–9 パックされたファイルの情報を表示する

次の例は、doc_file ファイルが正常にパックされていることを示しています。


$ cachefspack -i doc_file
cachefspack: file doc_file marked packed YES, packed YES

次の例では、/data/abc ディレクトリに bin サブディレクトリがあります。bin サブディレクトリには、 bigmedium、および small という 3 つのファイルがあります。big small ファイルはパックするように指定されていますが、パックされていません。medium ファイルは正常にパックされています。


$ cd /data/abc
$ cachefspack -i bin
.
.
.
cachefspack: file /bin/big marked packed YES, packed NO
cachefspack: file /bin/medium marked packed YES,
packed YES
cachefspack: file /bin/small marked packed YES,
packed NO
.
.
.

-iv オプションを指定した場合は、指定したファイルまたはディレクトリがキャッシュからフラッシュされたかどうかに関する追加情報が表示されます。次に例を示します。


$ cd /data/bin
FSCACHEPACK-4$ cachefspack -iv bin
.
.
.
cachefspack: file /bin/big marked packed YES, packed NO,
nocache YES
cachefspack: file /bin/medium marked packed YES,
packed YES, nocache NO
cachefspack: file /bin/small marked packed YES,
packed NO
nocache NO
.
.
.

上記例の最後の行は、ディレクトリの内容がキャッシュからフラッシュされていないことを示しています。


パッキングリストの使用

cachefspack コマンドの機能の 1 つに、パッキングリストを作成するという機能があります。

パッキングリストには、キャッシュにパックするファイルやディレクトリが入っています。ディレクトリがパッキングリストに入っている場合、そのサブディレクトリとファイルもすべてパックされます。

この機能によって、キャッシュにパックする各ファイルをそれぞれ指定するという手間が省けます。

Procedureパッキングリストを作成する方法

  1. vi を使ってパッキングリストファイルを作成する

    パッキングリストファイルの書式は、filesync コマンドで使用する書式と同じです。詳細は、filesync(1) のマニュアルページを参照してください。

    パッキングリストには、次の 2 つの機能があります。

    • パッキングリスト内のファイルを文字どおりのファイル名ではなく、正規表現として識別することができるため、ファイル名を個別に指定する必要がありません。

    • 所有するファイルだけがパックされるようにすることで、共有ディレクトリのファイルをパックできます。

    これらの機能の使い方については、cachefspack(1M) のマニュアルページを参照してください。


例 19–10 パッキングリストを作成する

次の例は、パッキングリストファイルの内容を示しています。


BASE /home/ignatz
LIST plans
LIST docs
IGNORE *.ps

Procedureパッキングリストを使ってファイルをキャッシュにパックする方法

  1. パッキングリストにファイルをパックする


    $ cachefspack -f packing-list
    
    -f

    パッキングリストを使用することを指定します。

    packing-list

    パッキングリスト名を指定します。


例 19–11 パッキングリストを使ってファイルをキャッシュにパックする

この例では、list.pkg ファイルを cachefspack コマンドのパッキングリストとして使用しています。


$ cachefspack -f list.pkg

キャッシュからファイルまたはパッキングリストのパッキングを解除する

キャッシュからファイルを削除、つまりそのパッキングを「解除」する場合もあります。ほかよりも優先度が高いファイルまたはディレクトリがいくつか存在する場合があるため、重要でないファイルのパッキングを解除する必要があります。たとえば、あるプロジェクトを終了して、そのプロジェクトに関連するファイルをアーカイブしたと仮定します。次は、新しいプロジェクト、つまり新しいファイルのセットで作業することになります。

Procedureキャッシュからファイルまたはパッキングリストのパッキングを解除する方法

  1. キャッシュからファイルまたはパッキングリストのパッキングを解除します。


    $ cachefspack -u filename | -U cache-directory
    
    -u

    ファイルまたは複数のファイルのパッキングを解除することを示します。このオプションを使用する場合は、ファイル名を指定しなければなりません。

    filename

    キャッシュからパッキングを解除するファイルまたはパッキングリストの名前を示します。

    -U

    キャッシュ中のすべてのファイルのパッキングを解除することを示します。

    詳細は、cachefspack(1M) のマニュアルページを参照してください。


例 19–12 キャッシュからファイルまたはパッキングリストのパッキングを解除する

次の例は、キャッシュから /data/abc/bin/big ファイルのパッキングが解除されることを示しています。


$ cachefspack -u /data/abc/bin/big

次の例は、キャッシュから 3 つのファイルのパッキングが解除されることを示しています。


$ cd /data/abc/bin/big
$ cachefspack -u big small medium

次の例は、パッキングリストのパッキングを解除する方法を示しています。パッキングリストは、ファイルのディレクトリへのパスを含むファイルです。


$ cachefspack -uf list.pkg

次の例は、キャッシュディレクトリ中のすべてのファイルのパッキングが解除されるように -U オプションを使用する方法を示しています。


$ cachefspack -U /local/mycache

ファイルシステムを 1 つもマウントしていないキャッシュのパッキングは解除できません。-U オプションで、マウント済みファイルシステムを持っていないキャッシュを指定した場合、次のような出力が表示されます。


$ cachefspack -U /local/mycache
cachefspack: Could not unpack cache /local/mycache, no mounted
filesystems in the cache.

cachefspack エラーの障害追跡

cachefspack コマンドを使用すると、次のようなエラーメッセージが表示されることがあります。


cachefspack: pathname - can't open directory: permission denied
エラーの発生原因

ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。

対処方法

適切なアクセス権を取得してください。


cachefspack: pathname - can't open directory: no such file or
directory
エラーの発生原因

ファイルまたはディレクトリの指定が間違っている可能性があります。

対処方法

入力ミスがないか確認してください。


cachefspack: pathname - can't open directory: stale NFS file handle
エラーの発生原因

アクセスしようとしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。

対処方法

サーバー上のファイルやディレクトリにまだアクセスできることを確認してください。


cachefspack: pathname - can't open directory: interrupted system
call
エラーの発生原因

コマンドの実行中に間違って Control + C を押した可能性があります。

対処方法

このコマンドを再度実行してください。


cachefspack: pathname - can't open directory: I/O error
エラーの発生原因

ハードウェアの障害の可能性があります。

対処方法

ハードウェアの接続を確認してください。


cachefspack: error opening dir
エラーの発生原因

ファイルまたはディレクトリの指定が間違っている可能性があります。ファイル書式中の BASE コマンドの後に指定したパスが、ディレクトリではなくファイルになっている可能性があります。指定するパスはディレクトリでなければなりません。

対処方法

入力ミスがないか確認してください。ファイル書式中の BASE コマンドの後に指定したパスを確認してください。ファイルではなくディレクトリが指定されていることを確認してください。


cachefspack: unable to get shared objects
エラーの発生原因

実行可能ファイルが壊れているか、その形式を認識できません。

対処方法

実行可能ファイルを交換してください。


cachefspack: filename - can't pack file: permission denied
エラーの発生原因

ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。

対処方法

適切なアクセス権を取得してください。


cachefspack: filename - can't pack file: no such file or directory
エラーの発生原因

ファイルまたはディレクトリの指定が間違っている可能性があります。

対処方法

入力ミスがないか確認してください。


cachefspack: filename- can't pack file: stale NFS file handle
エラーの発生原因

アクセスしようとしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。

対処方法

サーバー上のファイルやディレクトリにまだアクセスできることを確認してください。


cachefspack: filename- can't pack file: interrupted system call
エラーの発生原因

コマンドの実行中に間違って Control + C を押した可能性があります。

対処方法

このコマンドを再度実行してください。


cachefspack: filename- can't pack file: I/O error
エラーの発生原因

ハードウェアの障害の可能性があります。

対処方法

ハードウェアの接続を確認してください。


cachefspack: filename- can't pack file: no space left on device.
エラーの発生原因

キャッシュのディスク容量が不足しています。

対処方法

ディスク容量を増やしてキャッシュのサイズを大きくする必要があります。


cachefspack: filename - can't unpack file: permission denied
エラーの発生原因

ファイルまたはディレクトリにアクセスするための正しいアクセス権を持っていません。

対処方法

適切なアクセス権を取得してください。


cachefspack: filename - can't unpack file: no such file or directory
エラーの発生原因

ファイルまたはディレクトリの指定が間違っている可能性があります。

対処方法

入力ミスがないか確認してください。


cachefspack: filename- can't unpack file: stale NFS file handle
エラーの発生原因

アクセスしようとしたときに、ファイルまたはディレクトリがサーバーから移動または削除されていた可能性があります。

対処方法

サーバー上のファイルやディレクトリにまだアクセスできることを確認してください。


cachefspack: filename- can't unpack file: interrupted system call
エラーの発生原因

コマンドの実行中に間違って Control + C を押した可能性があります。

対処方法

このコマンドを再度実行してください。


cachefspack: filename- can't unpack file I/O error
エラーの発生原因

ハードウェアの障害の可能性があります。

対処方法

ハードウェアの接続を確認してください。


cachefspack: only one `d', `i', `p', or `u' option allowed
エラーの発生原因

コマンドに対して上記オプションのうち複数のオプションが指定されています。

対処方法

オプションは 1 つだけ選択してください。


cachefspack: can't find environment variable.
エラーの発生原因

構成ファイル中で $ で指定されている環境変数を設定していません。

対処方法

環境変数を適切な場所に定義してください。


cachefspack: skipping LIST command - no active base
エラーの発生原因

LIST コマンドが構成ファイル内にありますが、対応する BASE コマンドがありません。

対処方法

BASE コマンドを定義してください。

CacheFS の統計情報の収集 (作業マップ)

次の作業マップは、CacheFS の統計情報の収集に関連する手順を示しています。これらの手順はすべてオプションです。

作業 

説明 

参照先 

ロギングを設定します。 

cachefslog コマンドを使用して、CacheFS ファイルシステムのロギングを設定します。

「CacheFS ロギングを設定する方法」

ログファイルを検索します。 

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

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

ロギングを停止します。 

cachefslog コマンドを使用してロギングを停止します。

「CacheFS ロギングを停止する方法」

キャッシュサイズを表示します。 

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

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

キャッシュ統計情報を表示します。 

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

「CacheFS 統計情報を表示する方法」

CacheFS の統計情報の収集

CacheFS の統計情報を収集すると、次の作業を行うことができます。

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

次の表に、CacheFS 統計コマンドを示します。

コマンド 

説明 

マニュアルページ 

cachefslog

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

cachefslog(1M)

cachefswssize

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

cachefswssize(1M)

cachefsstat

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

cachefsstat(1M)


注 –

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


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

CacheFS 統計情報コマンドを使用する前に、次の操作を実行する必要があります。


注 –

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


ProcedureCacheFS ロギングを設定する方法

  1. ロギングを設定します。


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

    ロギングを設定します。

    log-file-path

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

    /mount-point

    統計情報を収集するマウントポイント (CacheFS ファイルシステム) を指定します。

  2. ログファイルを正しく設定したかどうかを確認します。


    $ cachefslog /mount-point
    

例 19–13 CacheFS ロギングを設定する

次の例は、/var/tmp/samlog ログファイルを設定して、/home/sam ディレクトリに関する統計情報を収集する方法を示しています。


$ cachefslog -f /var/tmp/samlog /home/sam
  /var/tmp/samlog: /home/sam

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

  1. CacheFS 統計情報のログが記録される場所を表示する


    $ cachefslog /mount-point
    

    /mount-point は、統計情報を表示する CacheFS ファイルシステムを示します。

    オプションを指定せずに cachefslog コマンドを使用して、特定のマウントポイントに対するログファイルの場所を調べることもできます。


例 19–14 CacheFS ログファイルを検索する

次の例は、ログファイルが設定されている場合の表示を示します。ログファイルは、/var/tmp/stufflog にあります。


$ cachefslog /home/stuff
	 /var/tmp/stufflog: /home/stuff

次の例は、指定したファイルシステムのログファイルが設定されていないことを示しています。


$ cachefslog /home/zap
	not logged: /home/zap 

CacheFS ロギングを停止する方法

ロギングを停止するには、cachefslog -h オプションを使用します。


$ cachefslog -h /mount-point

次の例は、/home/stuff に対するロギングを停止する方法を示しています。


$ cachefslog -h /home/stuff
not logged: /home/stuff

上記の例と異なるシステム応答が表示される場合は、ロギングが正常に停止されていません。正しいログファイル名とマウントポイントを指定したかどうかを確認してください。

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

キャッシュサイズを増やすべきかどうかを確認できます。または、特定のマウントポイントに関して前回 cachefslog コマンドを使用したあとの作業に基づいて、理想的なキャッシュサイズを決定することもできます。

  1. クライアントシステムでスーパーユーザーになります。

  2. 現在のキャッシュサイズとロギングされた最大キャッシュサイズを表示します。


    # cachefswssize log-file-path
    

    詳細は、cachefswssize(1M) のマニュアルページを参照してください。


例 19–15 作業セット (キャッシュ) のサイズを表示する

次の例で、「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 の統計情報の表示

次の表では、出力された CacheFS ファイルシステムの統計情報の用語について解説します。

表 19–2 CacheFS 統計情報の用語

用語 

説明 

キャッシュのヒット率

キャッシュのヒット率対ミスヒット率の比と、それに続く実際のヒット数とミスヒット数。キャッシュヒットは、ユーザーがファイル操作を実行するときに、そのファイルが実際にキャッシュ内にあると発生します。キャッシュのミスヒットは、ファイルがキャッシュにないときに発生します。サーバーにかかる負荷は、キャッシュのミスヒット数、整合性検査数、および変更数の合計です。

整合性検査

実行された整合性検査の回数、合格回数、不合格回数。 

変更数 (modifies)

変更操作の回数。書き込みや作成など。 

ProcedureCacheFS 統計情報を表示する方法

cachefsstat コマンドを使用して統計情報を表示します。この操作はいつでも実行できます。たとえば、ロギングを設定しなくても統計情報を表示できます。

  1. CacheFS 統計情報を表示する


    $ cachefsstat /mount-point
    

    /mount-point は、統計情報を表示する CacheFS ファイルシステムを示します。

    マウントポイントを指定しなければ、マウントされているすべての CacheFS ファイルシステムに関する統計情報が表示されます。


例 19–16 CacheFS の統計情報の表示

この例は、キャッシュされたファイルシステム /home/sam に関する統計情報の表示方法を示しています。


$ cachefsstat /home/sam
	    cache hit rate: 73% (1234 hits, 450 misses)
	consistency checks: 700 (650 pass, 50 fail)
	          modifies: 321
garbage collection:  0