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

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 コマンドを定義してください。