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

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

ファイルをキャッシュにパックするには、cachefspack コマンドを使用します。


$ cachefspack -p filename

-p

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

filename

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

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

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


$ cachefspack -p projects

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


$ cachefspack -p projects updates master_plan 

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


$ cachefspack -p /data/abc/bin

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

パックされたファイル情報を表示するには、 cachefspack -i コマンドを使用します。


$ cachefspack -i[v] filename

-i

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

-v

詳細表示オプション。 

cached-filename-or-directory

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

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

次の例は、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
$ 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 つに、パッキングリストを作成するという機能があります。

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

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

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

パッキングリストを作成するには、vi などのエディタを使用して、ファイルを開きます。パッキングリストファイルの書式は、filesync コマンドで使用する書式と同じです。詳細は、filesync(1) のマニュアルページを参照してください。

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

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

例 — パッキングリストを作成する

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


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

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

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

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

キャッシュからファイルまたはパッキングリストのパッキングを解除するには、cachefspack コマンドの -u または -U オプションを使用します。


$ cachefspack -u filename | -U cache-directory

-u

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

filename

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

-U

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

cachefspack コマンドの詳細は、マニュアルページを参照

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

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


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

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


$ 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
 - ディレクトリをオープンできません。アクセス権がありません。
エラーの発生原因

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

問題を解決する方法

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


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 コマンドをスキップします - 動作中の base はありません
エラーの発生原因

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

問題を解決する方法

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