5    AdvFS ファイル・システムの最適化とチューニング

AdvFS ファイル・システムは,さまざまな方法で設定し,その性能をチューニングすることができます。 一部のチューニング機能は,AdvFS GUI (付録 Eを参照) から実行できます。 AdvFS のチューニング・パラメータについての詳細は,『システムの構成とチューニング』 を参照してください。

この章では,次のトピックについて説明します。

ドメインとファイルセットの効果的な割り当て方法についての詳細は,『システムの構成とチューニング』および第 1 章を参照してください。 Version 5 のディレクトリについては,2.3.3.1 項 を参照してください。 Version 5 ではディレクトリのインデックスが利用でき,ファイルにアクセスしやすくなっています。

5.1    性能の監視

システムを最適化する第一歩は,その動作を理解することです。 性能情報は,多くの方法で得ることができます。

5.2    フラグ・ファイルの無効化による性能改善

割り当てられたストレージ領域の 5% 以上が無駄になるファイルの,ディスク・スペースの割り当てを制御することができます。 ファイルまたはファイルの終端部分がファイルセットのフラグ・ファイルに保存されます (1.3.3 項を参照)。 フラグ処理,つまりフラグ・ファイルを作成する目的はファイルセットのストレージの無駄を最小化することです。 ファイルセットのフラグ処理を無効にすると,入出力効率は上がりますが,ストレージの消費量が増加します。 フラグ・ファイルを持つかどうかは,デフラグ操作 (5.9 節) には影響がありません。

永続的なアトミック書き込みデータ・ロギングを行なうには,ファイルのフラグ処理を無効にする必要があります。 詳細は,5.5.2 項 を参照してください。

省略時の設定では,ファイルセットにはフラグ処理が適用され,ファイルの断片がフラグ・ファイルに保存されます。 フラグ処理は次の 2 通りの方法で無効化できます。

showfsets コマンドを使用すると,ファイルセットのフラグ処理の状態を確認できます。 次に例を示します。

# showfsets domain_1 fileset_3
 
    Id           : 3a3a47cb.000b52a5.2.8006
    Files        :       15,  SLim=     0,  HLim=     0
    Blocks (512) :    13730,  SLim=     0,  HLim=     0
    Quota Status : user=off group=off      
    Object Safety: off      
    Fragging     : on
    DMAPI        : off

ファイルセットのフラグ処理を有効化または無効化しても,既存のファイルには影響しません。 既存のフラグメント(ファイル断片)は存在し続けます。 既存ファイルの終端のフラグメントを削除するには,次の手順に従います。

  1. chfsets コマンドを使用して,ファイルセットのフラグ状態を,そのファイルに設定したいフラグ状態と同じになるように変更します。

  2. フラグメント付きファイルを,別のファイルとしてコピーします。

  3. 元のファイルを削除し,コピーした新しいファイルに元のファイルの名前を付けます。

  4. ファイルセットのフラグ状態を元に戻したい場合は,chfsets コマンドを使用して戻します。 こうしておけば,そのファイルセットのファイルにデータを追加したときに,再びフラグメントが作成されるようになります。

たとえば,states ドメインの arizona ファイルセットのファイル taxes からフラグメントを削除するには,次のコマンドを実行します。

# chfsets -o nofrag states arizona
# cp taxes tmptaxes
# rm taxes
# mv tmptaxes taxes

ファイルセット内のファイルが再びフラグ・ファイルを使用できるようにするには,chfsets コマンドに -o frag オプションを指定して実行します。 フラグ・ファイルを使用していたファイルは,再びこれを使用できるようになります。

詳細は,Best Practice ドキュメントの『Improving AdvFS Performance by Disabling the Frag File』を参照してください。

5.3    トランザクション・ログ・ファイルの性能改善

各ドメインには,ドメイン内のすべてのファイルセットのアクティビティを追跡するトランザクション・ログ・ファイル (1.3.2 項) が含まれています。 これにより,このログ・ファイルへの大量の読み取り/書き込み動作が発生します。 処理が集中するディスクあるいはバス上にこのログ・ファイルが存在する場合,あるいはドメインに多数のファイルセットが存在する場合,システムの性能は低下します。 ログ・ファイルを置く場所を変えることで,そのアクティビティによってファイルを置いているデバイスの帯域幅が占有される事態を回避できます。

ドメイン内のボリュームの性能は,SysMan Menu の「モニタリング/チューニング - 入出力 (I/O) 統計の参照」ユーティリティ (付録 Aを参照),または iostat ユーティリティで監視できます。 AdvFS Utilities が利用できる場合,ログ・ファイルが置かれているボリュームの負荷が高いようであれば,次のいずれかの方法で対処します。

5.3.1    トランザクション・ログ・ファイルの移動

トランザクション・ログ・ファイルをより速い,処理の集中しないボリュームに移動すると,スループットが向上します。 LSM (Logical Storage manager) ストレージを使用している場合も,このファイルを移動することで効果があがります。 ミラー化されているボリュームにトランザクション・ログ・ファイルを置いて信頼性を高めることができます。 そのような構成にすれば,たとえばトランザクション・ログ・ファイルが格納されているディスクがクラッシュした場合でも,ミラー側のログを使用できます。

トランザクション・ログ・ファイルを別のボリュームへ移動する手順は以下のとおりです。

  1. showfdmn コマンドを使用してログ・ファイルの位置を確認します。 ボリューム番号の後に文字 L があるボリュームにログ・ファイルが存在します。

  2. /sbin/advfs/switchlog コマンドを使用して他のボリュームへログ・ファイルを移動します。

たとえば,ドメイン region1 のトランザクション・ログ・ファイルを移動する手順は,以下のとおりです。

# showfdmn region1 
     Id              Date Created     LogPgs Version Domain Name
31bf51ba.0001be10 Wed Feb  6 16:24 2002  512       4 region1
 
Vol  512-Blks    Free % Used Cmode Rblks Wblks Vol Name
 1L   1787904  885168    52%    on   128   128 /dev/disk/dsk0g
 2    1790096 1403872    22%    on   128   128 /dev/disk/dsk0h
     -------------------------
      3578000 2259040    37% 
 

# /sbin/advfs/switchlog region1 2
# showfdmn region1 
     Id              Date Created     LogPgs Version Domain Name
31bf51ba.0001be10 Wed Feb  6 16:24 2002  512       4 region1
 
Vol  512-Blks    Free % Used Cmode Rblks Wblks Vol Name
 1    1787904  885168    52%    on   128   128 /dev/disk/dsk0g
 2L   1790096 1395680    22%    on   128   128 /dev/disk/dsk0h
     -------------------------
      3578000 2250848    37% 

5.3.2    トランザクション・ログ・ファイルの分離

トランザクション・ログ・ファイルを独立させると,すべてのログ I/O を他のドメインの読み取りおよび書き込みと分離させることができます。 このログ・ボリューム上では他の動作が発生しないため,ログ・ファイルの I/O が遅くなることも,他のドメインの I/O が遅くなることもありません。

トランザクション・ログ・ファイルを専用のボリュームに独立させるには,次の手順を実行します。

  1. ドメインがアクティブになっていないことを確認します。 アクティブの場合,ファイルへの書き込みはすべて,分離させようとするボリューム上のストレージに割り当てられます。

  2. ログ・ファイルを独立させるドメインに,小さなパーティション (ボリューム) を追加します。 この場所にログ・ファイルを置きます。

    このデバイス上の他のパーティションの I/O 負荷は,ログ・ファイル・パーティションも含めディスク全体の性能に影響することに注意してください。 残りのパーティションが他のドメインに割り当てられている場合は,同じデバイス上に複数のトランザクション・ログ・ファイルが存在することになります。 この状態は半導体ディスクでは問題はありませんが,低速のデバイスではログ・ファイルを独立させた効果がなくなることがあります。

  3. switchlog コマンドを使用して,ログ・ファイルを新しいボリュームに移動します。

  4. showfdmn コマンドを使用して,ログ・ファイルのあるボリューム上の空きブロック数を調べます。

  5. showfdmnコマンドから得られた情報を参考に,dd コマンドを使用して正しいサイズのダミー・ファイルを作成します。

  6. ダミー・ファイルを,ログ・ファイルのあるボリュームに移動します。 このファイルはボリュームを完全に埋めるため,他のファイル用のスペースは残りません。 ユーザはこのファイルにはアクセスしないため,トランザクション・ログ・ファイルだけがこのボリューム上でアクティブになります。

sales ドメインのトランザクション・ログ・ファイルを独立させるには,次のようにコマンドを入力します。

# addvol /dev/disk/dsk9a sales 
# /sbin/advfs/switchlog sales 2 

# showfdmn sales 
     Id               Date Created     LogPgs Version Domain Name
312387a9.000b049f Thu Mar 14 14:24 2002  512       4 sales
 
Vol  512-Blks    Free % Used Cmode Rblks Wblks Vol Name
 1    2050860 1908016     7%    on   128   128 /dev/disk/dsk10c
 2L    131072  122752     6%    on   128   128 /dev/disk/dsk9a
     -------------------------
      2181932 2030768     7% 

ログ・ファイルが置かれているボリューム上のすべての空きブロックをダミー・ファイル /adv1/foo に割り当ててから,データをログ・ファイルと同じボリュームに移動します

# dd if=/dev/zero of=/adv1/foo count=122752 
122752+0 records in
122752+0 records out
# migrate -d 2 /adv1/foo

5.4    データ・キャッシュのチューニング

データが頻繁に再利用される環境では,キャッシュを使用すると性能が向上します。 AdvFS は,ファイル・メタデータとユーザ・データの管理に,ユニファイド・バッファ・キャッシュ (UBC) と呼ばれるダイナミック・メモリ・キャッシュを使用します。

キャッシュに UBC を使用することで,AdvFS ではメモリが利用可能な限り,ファイル・データをメモリ内に保持することができます。 他のシステム・リソースのために,ファイル・システムのキャッシュとして使われているメモリが必要になると,UCB は,ファイル・システムで使用しているメモリの一部を取り返し,メモリを必要としているリソースに割り当てます。

AdvFS はキャッシュに UBC を使用するため,キャッシュのチューニングには UBC のチューニング・パラメータを使用します。 チューニングできるパラメータは次のとおりです。

これらのパラメータを変更する際の指針については,『システムの構成とチューニング』を参照してください。

データ・キャッシュは省略時の設定で有効になっており,ファイル・システムの性能が向上しますが,特定の状況下では,データ・キャッシュをバイパスする方が,アプリケーション側でより高いスループットが得られることもあります (5.6 節を参照)。

5.5    データの一貫性の向上

データをファイルへ書き込む方法によって,マシンに障害が発生した場合にデータがどの程度保護されるかが決まります。 次の 2 つのことについて選択できます。 これらの選択肢は互いに独立しています。

5.5.1    I/O の制御

特に指定しなければ,書き込み要求はキャッシュされます。 すなわち,データはすぐにディスクに書き込まれるのではなくバッファ・キャッシュに書き込まれます。 ファイルへの I/O 書き込みを同期する方法を選択することで,キャッシュによる性能向上とクラッシュ時のデータ一貫性とのバランスをとることができます。

5.5.1.1    非同期 I/O

非同期 I/O は,省略時設定であり,一般に最高のスループットが得られます。 同じページに対する複数の書き込みをディスクに対する 1 回の物理的書き込みに結合します。 この方法では,ディスクのトラフィックが減るだけでなく,複数のスレッドおよびプロセスで共通のデータへ同時にアクセスする機会が増えます。 さらに,ディスクへの書き込みを遅らせるので,連続するページ同士を連結して単一の大きな物理的書き込みにできる可能性が高くなり,シーク時間と回転待ち時間による遅れが短くなります。

クラッシュが発生すると,ドメイン内のファイルセットが次にマウントされたときに,ディスクへのログ・トランザクションのうち,完了しているものが再度実行され,完了していないものは取り消されるため,ディスク上の元のメタデータが復元されます。 これらのログ・トランザクションは,省略時はメタデータのみを保存し,ファイルへ書き込まれたデータは保存しません。 すなわち,ディスク上のファイル・サイズと位置は一貫性が保たれますが,クラッシュが起きた時点が,ディスクへの書き込みの前であれば,最新の書き込みのユーザ・データが失われる可能性があります。 これは,この方法を使用することで得られるスループットの向上とトレードオフの関係にあります。

5.5.1.2    同期 I/O

同期 I/O は非同期 I/O と類似していますが,書き込み要求の処理から呼び出し元のアプリケーションに戻る前に,データがキャッシュとディスクの両方に書き込まれます。 すなわち,書き込みが正常に終了すると,データがディスクに正しく書き込まれたことが保証されます。

同期 I/O の欠点は,I/O が完了するまで書き込み処理から戻らないため,スループットが低くなることです。 また,データをディスクにフラッシュしなければならないタイミングを決定するのがファイル・システムではなくアプリケーションなので,同期書き込み要求の処理量が小さい場合,I/O が結合される可能性が低くなります。

5.5.1.3    同期 I/O のオン/オフのチューニング

省略時のキャッシング方式は非同期 I/O です。 同期 I/O のオン/オフをファイルごとに切り替えるには,chfile コマンドに -l オプションを使用するか,open() システム・コールに対して O_SYNC フラグまたは O_DSYNC フラグを使用します (『プログラミング・ガイド』および open(2) を参照)。 chfile コマンドの -l オプションと -L オプションは同時に使用できないので,chfile コマンドを使用してアトミック書き込みデータ・ロギングを制御することを計画しているならば,同期 I/O をアクティブにするためには,システム・コールを使用する必要があります。 アトミック書き込みデータ・ロギングのオン/オフのチューニングについては,5.5.2.5 項 を参照してください。

ファイルセット内のすべてのファイルに同期 I/O を強制するには,mount コマンドに -o sync オプションを指定します。

mount -o sync filename

また,あるファイルにアクセスするすべてのアプリケーションに同期 I/O を強制することができます。 この場合,chfile コマンドに -l on オプションを指定します。

chfile -l on filename

同期処理をオフにしてファイルを再び非同期 I/O 状態にするには,chfile コマンドに -l off オプションを指定して実行します。

chfile -l off filename

5.5.2    アトミック書き込みデータ・ロギング I/O の有効化

アトミック書き込みデータ・ロギングでは (通常ロギングされるメタデータに加えて) ユーザ・データをログ・ファイルに書き込み,システム障害のときにデータの一貫性が保たれるようにします。 この機能のオン/オフでは,メタデータとファイル・データの両方がディスクに書き込まれるか,両方が書き込まれないかを切り替えることになります。 アトミック書き込みデータ・ロギングが使用する I/O 方式は,I/O が非同期に設定されているか (5.5.1.1 項),同期に設定されているか (5.5.1.2 項) で異なります。

アトミック書き込みデータ・ロギングには,永続的なロギング (5.5.2.3 項) と一時的なロギング (5.5.2.4 項) の 2 種類があります。 永続的なデータ・ロギングでは,ファイルセットがマウント/アンマウントされても,ログは継続されます。 一時的なデータ・ロギングは,ファイルセットがマウントされているときだけ有効です。 ロギングのステータスは,オプションをつけない chfile コマンドで確認することができます。

この機能のデータ・ロギングでは,データとメタデータの両方をトランザクション・ログ・ファイルに書き込むので性能が低下します。 ロギングのトラフィックが増加し,各ユーザの書き込みでの I/O の処理が倍になります。 アトミック書き込みデータ・ロギングを計画しているファイルまたはファイルセットを,1 つまたはいくつかのドメインにグループ化することによって,性能重視の他のドメインの負荷を軽くすることができます。

5.5.2.1    非同期アトミック書き込みデータ・ロギング I/O

非同期アトミック書き込みデータ・ロギング I/O は,非同期 I/O と同じような方法ですが,それぞれの書き込み要求でバッファ・キャッシュに書き込まれたユーザ・データがログ・ファイルにも書き込まれるという点が異なります。 これは,8K バイトの倍数のサイズで行われます。 データをログ・ファイルにも書き込むため,クラッシュのときのデータの一貫性は保証されますが,非同期 I/O と比べるとスループットが低くなります。 非同期 I/O を使用し,アトミック書き込みデータ・ロギングを有効にすると,I/O は非同期のアトミック書き込みデータ・ロギングとなります。

クラッシュが発生すると,ファイルセットが再度マウントされたときにログ・ファイルからデータが復元されます。 非同期 I/O の場合と同じように,完了したログ・トランザクションはすべて再実行され,完了していないトランザクションは取り消されます。 ただし,非同期 I/O の場合と異なり,ユーザのデータはログに書き込まれているので,メタデータとファイルに書き込もうとしていたデータの両方を復元できます。 これにより,8K バイトの倍数のサイズの書き込みがアトミックであることが保証されます。 つまり,データは完全にディスクに書き込まれたか書き込まれていないかのいずれかです。

完了した書き込み要求のみが処理されるため,クラッシュ時にシステムが書き込もうとしていた位置にある,古くなった,傷ついている可能性のあるデータはアクセスされません。 ディスクへの書き込み順序が乱れて,クラッシュ時に一貫性が損なわれることはありません。

5.5.2.2    同期アトミック書き込みデータ・ロギング I/O

同期アトミック書き込みデータ・ロギング I/O は,非同期アトミック書き込みデータ・ロギング I/O と同じような方法ですが,書き込み要求が呼び出し側アプリケーションに戻る前に,ロギングされたデータがバッファ・キャッシュからディスクにフラッシュされるという点が異なります。 ログ・フラッシュ I/O が終了してからでないと,書き込み処理が戻ってこないので,非同期アトミック書き込みデータ・ロギング I/O と比べるとスループットが低くなる場合があります。 同期 I/O を使用し,アトミック書き込みデータ・ロギングを有効にすると,I/O は同期アトミック書き込みデータ・ロギング となります。

書き込み進行中にクラッシュが発生すると,ファイルセットが再度マウントされたときにログ・ファイルからデータが復元されます。 非同期アトミック書き込みデータ・ロギング I/O の場合と同じように,ユーザのデータはログに書き込まれているのでメタデータとファイルに書き込もうとしていたデータの両方を復元できます。 これにより,8K バイト倍数のサイズでデータが完全にディスクに書き込まれたか書き込まれていないかのいずれかであることが保証されます。

同期アトミック書き込みデータ・ロギングの利点は,書き込み呼び出しがアプリケーションに戻った後にクラッシュが発生した場合のデータの一貫性が保証されることです。 リブートでログ・ファイルが再生され,ユーザの書き込み要求全体が適切なユーザのデータ・ファイルに書き込まれます。 一方,非同期アトミック書き込みデータ・ロギングは,書き込み呼び出しがアプリケーションに戻った後の 8K バイト単位のデータの一貫性しか保証しません。

5.5.2.3    永続的なアトミック書き込みデータ・ロギング

永続的なアトミック書き込みデータ・ロギングでは,ディスク上にフラグが設定され,ファイルセットがマウント/アンマウントされても,そのファイルのロギングが継続されるようにします。 ロギングを非同期に行なうか (5.5.1.1 項),同期をとって行なうか (5.5.1.2 項) は,I/O をどのように設定したかによって決まります。

永続的なアトミック書き込みデータ・ロギング I/O のオン/オフを切り替えるには,fcntl() 関数を使用するか,chfile コマンドに -L オプションを指定します。

chfile -L on filename

chfile -L off filename

ファイルにフラグメント (断片) がある場合,永続的なアトミック書き込みデータ・ロギングは起動できません。 フラグメントのあるファイルに対してデータ・ロギングを起動するには,次のいずれかの方法を採ります。

-l-L オプションを chfile コマンドで同時に用いて,同期 I/O とアトミック書き込みデータ・ロギングを設定することはできません。 しかし,chfile コマンドに -L on オプションを用いて,永続的アトミック書き込みデータ・ロギングを起動し,次にそのファイルを open() システム・コールに O_SYNC または O_DSYNC フラグをつけて呼び出して,そのファイルを 同期 I/O としてオープンすることができます (『プログラミング・ガイド』を参照)。

永続的なアトミック書き込みデータ・ロギングを使用するファイルは,mmap システム・コールでメモリにマッピングすることはできません。 ファイル使用の衝突については 6.4.10 項 を参照してください。

5.5.2.4    一時的なアトミック書き込みデータ・ロギング

一時的なアトミック書き込みデータ・ロギングでは,ファイルセットに対して有効にするフラグをメモリ上に設定し,そのファイルセットがマウントされている間のみデータ・ロギングが行なわれるようにします。 ロギングを非同期に行なうか,同期をとって行なうかは,I/O をどのように設定したかによって決まります。 I/O モードの制御方法は,5.5.1 項 を参照してください。

一時的なアトミック書き込みデータ・ロギングを有効にするフラグをメモリ上に設定し,対応するファイルセットがマウントされている間のみデータ・ロギングを有効にするには,mount コマンドに -o adl,sync オプションを使用します。 フラグメントを持つファイルは,一時的なアトミック書き込みデータ・ロギングを使用できます。 ファイルが開かれている間,永続的なアトミック書き込みデータ・ロギングの方が,一時的なアトミック書き込みデータ・ロギングよりも優先されます。

ファイルを開いているアプリケーションは,fcntl() 関数を呼び出すことによって一時的なアトミック書き込みデータ・ロギングを無効にできます。 また,chfile コマンドに -L off オプションを使用することによって,永続的なアトミック書き込みデータ・ロギングを無効にできます。 これらの処理によるデータ・ロギングの無効化は,同じファイルを開いているすべてのアプリケーションに反映されます。

一時的なアトミック書き込みデータ・ロギングを使用しているファイルは,メモリにマッピングできます。 ファイルをメモリにマッピングすると,そのファイルを使用している全スレッドでマッピングが解除されるまで,一時的なアトミック書き込みデータ・ロギングは中断されます。

5.5.2.5    アトミック書き込みデータ・ロギングのオン/オフのチューニング

ロギングを非同期に行なうか (5.5.1.1 項),同期をとって行なうか (5.5.1.2 項) は,I/O をどのように設定したかによって決まります。

表 5-1にアトミック書き込みデータ・ロギングの有効化をチューニングする際のパラメータを示します。

表 5-1:  アトミック書き込みデータ・ロギングの有効化のチューニング

データ・ロギングのタイプ コマンド 備考
永続的 (ファイル) chfile コマンドに -L on オプションを指定,または fcntl() 関数を使用。 フラグメントを持つファイルについては実行できない。chfile コマンドを同期 I/O を制御するために使用する場合は,このコマンドを使用できない。 5.5.2.3 項を参照。
一時的 (ファイルセット) 非同期の場合は mount コマンドに -o adl オプションを指定,同期の場合は -o adl, sync オプションを指定。 フラグメントを持つファイルについて実行できる。 永続的アトミック書き込みデータ・ロギングが優先される。 5.5.2.4 項を参照。

表 5-2 にアトミック書き込みデータ・ロギングの無効化をチューニングする際のパラメータを示します。

表 5-2:  アトミック書き込みデータ・ロギングの無効化のチューニング

データ・ロギングのタイプ コマンド 備考
永続的 (ファイル) chfile コマンドに -L off オプションを指定,または fcntl() 関数を使用。 chfile コマンドを同期 I/O を制御するために使用する場合は,このコマンドは使用できない。 5.5.2.3 項を参照。
一時的 (ファイルセット) ファイルセットがアンマウントされると,自動的にオフになる。 または fcntl() 関数を使用。 オープンしたファイルはすべて fcntl() 関数を呼び出せる。 5.5.2.4 項を参照。

5.6    ダイレクト I/O によるデータ転送速度の改善

ダイレクト I/O モードでは,キャッシュをバイパスします。 データをキャッシュにコピー (AdvFS 標準の処理) することなく,ファイルに対するデータの読み取りおよび書き込みを同期的に実行します。 つまり,ファイルに対するダイレクト I/O を有効にすると,読み取りおよび書き込み要求では AdvFS キャッシュ機能がバイパスされ,直接メモリ・アクセスによって (raw I/O と同じように),ディスク・ストレージに対して実行されます。 これにより,データに 1 度しかアクセスしないようなアプリケーションの場合,I/O 処理速度を改善できます。 しかし,システム・クラッシュの際はデータの一貫性は保証されません。

ダイレクト I/O は,どのようなバイト・サイズの I/O 要求でも処理しますが,要求された転送位置がディスク・セクタ境界に合っていて,その転送サイズが基本的なセクタのサイズ (現在 512 バイト) の偶数倍である場合に,最も高い性能を発揮します。

ダイレクト I/O は,データベースによって独占的に使用されるファイルに特に適しています。 ただしキャッシングが行われないため,アプリケーションが同じデータに複数回アクセスする傾向がある場合は,逆に,ダイレクト I/O は性能に悪影響を及ぼします。 ダイレクト I/O を指定すると,すぐにそれが有効になり,すでにバッファ・キャッシュに存在するデータは自動的にディスクへフラッシュされます。

ファイルをダイレクト I/O を有効にしてオープンできるのは,アトミック書き込みデータ・ロギング用にオープン (5.5.2 項) していない場合,またはメモリにマッピング (6.4.10 項) されていない場合のみです。 ダイレクト I/O を行なうようにファイルをオープンするには,O_DIRECTIO フラグを指定して open()> 関数を呼び出します。 たとえば,file_x に対しては,次のように呼び出します。

open (file_x, O_DIRECTIO|O_RDWR, 0644)

それまでのモードに関係なく,新しいモードはダイレクト I/O になり,指定したファイルがクローズされるまでこのモードが有効になります。

fcntl() 関数を呼び出して,ファイルがキャッシュ・モードでオープンされているか,ダイレクト I/O モードでオープンされているかを確認することができます。 詳細は, fcntl(2)open(2),または『プログラミング・ガイド』を参照してください。

5.7    属性の変更によるシステム性能の改善

システムの性能は,さまざまな属性を変更して改善できます。 『システムの構成とチューニング』 に,それぞれの属性の意味と,それらを変更した場合の影響について詳しく説明しています。 詳細については sysconfig(8) を参照してください。 AdvFS の性能を改善するには,次の操作が役に立ちます。

5.8    vfast ユーティリティによるオペレーティング・システムのスループットの改善

vfast ユーティリティは,頻繁にオープン/クローズされるドメインのファイルに作用するバックグラウンド・プロセスです。 このユーティリティは,次のようなさまざまな最適化機能を実行します。

vfast ユーティリティを実行するには,root ユーザの特権が必要です。 vfast 処理は,activate および deactivate オプションでオン/オフを切り替えることができます。 suspend オプションは,vfast 処理をオフにしますが,内部統計データ収集は継続することができます。 status オプションを使用すると,現在の vfast の構成,動作上の統計,ドメインの処理オプションを表示することができます。

ほとんどの vfast 処理は,デバイスに他のシステム I/O が存在しないときに実行されるので,一般的に vfast を実行しても性能は低下しません。 ユーティリティが使用するシステム I/O のシェアを,-o percent_ios_when_busy= オプションで制限できます。 省略時の設定は,周知のストレージ・デバイスの I/O 帯域幅の 1% です。

umountrmvol,およびrmfset などのユーティリティは,実行時に vfast の動作を一時的に中断させます。 これらのユーティリティが終了すると,vfast はその以前の状態に戻ります。

vfast はファイルの断片化を解消し,ドメイン間のバランスを計るため,従来の AdvFS defragment および balance ユーティリティは,vfast を -o defragment=,-o balance=,または -o topIObalance= オプションを有効にして起動した場合使用できません。

vfast コマンドに -o defragment=enable オプションを指定すると,空き領域を動的に統合化し,ファイル断片化を減らし,ファイルが連続する空間を使用するようにします。 AdvFS ファイル・システムでは,ファイルのデータをなるべくディスク上の連続するブロックに配置しようとしますが,データを配置するのに十分な連続するブロックを利用できない場合は,それを連続しないブロックに分散します。 断片化は,1 つのファイルにアクセスするのに多くのディスク・アドレスを参照しなければならないため,読み書きの性能を低下させます。 vfast ユーティリティは,断片化されたファイルを連続するディスク・ブロックに移動することで,この性能の低下を最小限にします。 ファイルは,統合化の際に再配置されることがあります。

オープン/クローズされたファイルだけが,vfast の断片化ファイルのキャッシュに置かれます。 vfast でファイルを断片化解消するには,そのドメインの少なくとも 1 つのファイルセットを読み/書き用にマウントしておく必要があります。 ドメインのその他のファイルセットが書き込みのためにマウントされていない場合,そのファイルセットが以前に書き込みのためにマウントされ,vfast キャッシュの中で処理を待っているファイルがない限りは,そのファイルセット中の断片化ファイルは断片化解消されません。 vfast コマンドを -l extents オプションを指定して実行し,断片化解消を待つキューにあるファイルを表示します。 vfast キャッシュにファイルがない場合は,断片化解消または空き領域のバランシングは行なわれません。

ドメイン全体を断片化解消するには,そのドメインのすべてのファイルをオープンしクローズする必要があります。 ドメインの各ファイルセットで,次の操作を行ないます。

  1. ファイルセットをマウントし,そのディレクトリに移動します。

  2. 次のコマンドを実行します。

    # find ./ -name \* >/dev/null
    

  3. vfast キャッシュが一杯になる可能性があるので,一回ですべてのファイルの断片化が解消できるとは限りません。 ドメインの断片化を完全に解消するには,さらに何度かファイルをオープンしクローズする必要がある場合があります。 次のコマンドを実行します。

    # vfast -L extents domain_name
    

vfast でマルチボリューム・ドメインの断片化を解消する場合,ファイルの配置を制御できません。 ファイルがどこに置かれているかを確かめるには,showfile コマンドを実行します。 特定のファイルを別のボリュームに移動したい場合は,migrate コマンドを実行します (5.12 節を参照)。

-o defragment=disable オプションを指定することで,断片化の解消は,いつでも停止できます。 プロセスを途中で停止しても,ファイル・システムに影響はありません。 すでに断片化解消されたファイルはその再配置された位置のままになります。

ファイルのダイレクト I/O を有効にすると (5.6 節),vfast ユーティリティ は,-o direct_io= オプションが disableに設定されるまで,そのファイルの断片化解消を行ないます。

-o defragment= オプションを有効に設定し,-o balance= も有効にした場合,vfast ユーティリティは,マルチボリューム間でファイルを分散し,I/O 負荷を均等化します。 このユーティリティは,図 5-1に示すように,ドメインの各ボリュームのスペースの使用率が可能な限り均等になるまで,ファイルをボリューム間で移動します。 断片化解消のキューに入れられたファイルのみが,ドメイン間のバランスを図るのに使用されます。

図 5-1:  ドメイン間のバランシング

断片化解消が必要なファイルだけが,ボリューム間で空き領域を均等化し負荷分散を図るのに使用されます。 ドメイン内に断片化されたファイルがない場合は,vfast を実行してもバランシングは行なわれません。 また,断片化のチェックはクローズ中のファイルにのみに行なわれます。 そのファイルセットの最後のマウント以降アクセスしていないファイルはチェックの対象になりません。

-o topIObalance= オプションを有効に設定すると,vfast はまず I/O を監視し(-o ss_steady_state= オプションで設定した期間だけ),どのボリュームの I/O 負荷が最も高いかを調べます。 このユーティリティは次に,負荷のバランスを図るため高い負荷のボリュームからファイルを分散配置していきます。 しかし topIObalance オプションでは,ダイレクト I/O が有効になっているファイルは無視されます。 これは,これらのファイルへの I/O が vfast 統計収集の対象とならないためです。

ドメインがハードウェア RAID,LSM ストライプ化,AdvFS ファイル・ストライプ化のいずれかの方法でストライプ化されている場合,-o topIObalance= オプションは使用しないでください。 このユーティリティは,これらの構成では効率的に I/O 負荷の分散ができません。

システム・ノードがクラスタのメンバである場合,クラスタ・ファイル・システム (CFS) がファイルをキャッシュし,キャッシュがフラッシュされるまで処理が発生しないため,最初にファイルがいくつか処理されない場合があります。

5.8.1    vfast ユーティリティの実行

ドメインの vfast 処理を起動するには,vfast コマンドに activate オプションを指定して実行します。 処理を起動した後,さらに vfast コマンドを実行することでこのユーティリティの動作を切り替えることができます。

vfastを有効にせずにドメインの断片化の量を確認するには,-L extents オプションを使用します。 エクステント数の平均値や,断片化しているファイルあたりのエクステント数が高い場合,このユーティリティの実行が役立ちます。 ドメインが過度に断片化されていると思う場合は,vfast に -o defragment= オプションを指定して実行します。

ドメインのレイアウトは,showfdmn コマンドで知ることができます。 このコマンドの % Used フィールドを見れば,ファイルがボリューム間を均等に分散されているかがわかります。 均等に分散されていない場合は,そのドメインに対して -o balance= オプション を実行します。

vfast コマンドに -l hotfiles オプションを使用すると,ボリュームまたはドメインで最も頻繁にページングされるファイルを特定することができます。 -L hotfiles オプションを指定すると,ドメインごとのボリューム内のファイルの分散状況が表示されます。

5.8.2    vfast ユーティリティの例

この節では,vfast ユーティリティの各種オプションによって,そのさまさまな機能を制御する例を示します。

下記の例では,vfast の各種機能を起動しています。

# vfast activate user_dmn
# vfast -o defragment=enable user_dmn
# vfast -o balance=enable user_dmn

# vfast -o topIObalance=enable user_dmn
# vfast -o percent_ios_when_busy=20 user_dmn

次の例では status オプションを使用してドメイン user_dmn に行なわれた断片化解消の量を調べています。

# vfast status user_dmn
vfast is currently running
vfast is activated on user_dmn
vfast defragment:     enabled
vfast balance:        enabled
vfast top IO balance: enabled
Options:
  Direct IO File Processing: enabled
  Percent IOs Allocated to vfast When System Busy: 20%
  Default Hours Until Steady State: 24; Hours remaining: 0
  Total Files Defragmented:  3331
  Total Pages Moved for Defragment:  278440
  Total Extents Combined for Defragment:  21
  Total Pages Moved for Balance:  0
  Total Files Moved for Volume IO Balance:  0
  Total Pages Moved for Volume Free Space Consolidation:  50607

次の例では -l extents オプションを使用して,断片化解消と空き領域の均等化処理を待つキューに置かれた,ドメイン user_dmn のボリュームを表示しています。

# vfast -l extents user_dmn
user_dmn: Volume 1
extent
count    fileset/file
 2 user: /u1/obj/BINARY/lp.o
 2 user: /u1/w17/obj/kernel/test_21.o
 3 user: /u1/obj/bs_bitfile_sets.o
 3 user: /u1/w4/itpsa.o
 4 user: /u1/w4/cms_utils.o

次の例では -L extents オプションを使用して,ドメイン user_dmn のボリュームごとの断片化の様子の要約を表示しています。

# vfast -L extents user_dmn
user_dmn
    Extents:                    46003
    Files w/extents:            45694
    Avg exts per file w/exts:    1.01
    Free space fragments:       18858
                     <100K     <1M    <10M    >10M
      Free space:      21%     41%     31%      7%
      Fragments:     16119    2523     213       3

次の例では -l hotfiles オプションを使用して,ドメイン user_dmn 上にあるファイルとボリュームで,最も頻繁にページングが行なわれたものを検索しています。

# vfast -l hotfiles user_dmn |more 
Past Week
 
 IO Count Volume File
  5487993    1   *** a reserved file, tag = -2,-10, BMT
   197088    1   *** a reserved file, tag = -2, -7, SBM
   147757    1   *** a reserved file, tag = -2, -9, LOG
     2814    1   user: /user1/crl/BINARY/makedep
     1206    1   user: /user1/crl/applications/sequoia.jar
     1005    1   user: /user1/sandboxes/advfs.mod
      402    1   user: /user1/alpha/arch.mod

5.9    ドメインの断片化の解消

vfast ユーティリティ (5.8 節) を実行していない場合,defragment ユーティリティを実行してドメインのファイル断片化の量を軽減することができます (1.3.3 項)。 このユーティリティは,ファイルの連続性を高め,ファイル・エクステント数を減らすことにより,ドメインの断片化を減少させます。 ファイルが断片化すると,ファイルをアクセスするのに多数のディスク・アドレスをチェックしなければならなくなるため,断片化を解消することで読み書き性能が改善します。 さらに,ドメインの断片化解消によって,ディスク上の連続した空き領域も増えるので,それ以降に作成されるファイルも断片化が少なくなるという利点もあります。 フラグ・ファイルを有効にしたり無効にしたりすることで,ドメインの断片化を解消することもできます。 I/O 動作には影響しません。

vfast ユーティリティは,オペレーティング・システムに対応して最適化され,バックグラウンドで動作するため,ドメインの断片化解消には,このユーティリティを使用することをお勧めします。 defragment ユーティリティの動作効率は,これを実行する前にドメイン内の不要なファイルを削除することで向上します。 defragment ユーティリティは,性能が低下したと実感した場合で,ファイル・システムへのアクセスがそれほどない場合にだけ使用してください。

断片化の解消はいつでも停止できます。 プロセスを中断しても,ファイル・システムに影響はありません。 すでに断片化解消されたファイルはその再配置された位置のままになります。

マルチボリューム・ドメインの断片化を解消する場合,ファイルの配置を制御できません。 ファイルがどこに置かれているかを確かめるには,showfile コマンドを実行します。 特定のファイルを別のボリュームに移動したい場合は,migrate コマンドを実行します。 ファイルの移動については,5.12 節を参照してください。

ドメイン全体を断片化解消するには,そのドメインのすべてのファイルセットをマウントしておく必要があります。 ボリュームの断片化を解消するには,少なくとも総スペースのうちの 1% か,ボリュームにつき 5 MB (どちらか少ない方) のスペースが残っている必要があります。 SysMan Menuの「AdvFS ドメインの管理」(付録 A を参照) か,グラフィカル・ユーザ・インタフェース (付録 Eを参照) を使用するか,コマンド行で次のように defragment コマンドを実行します。

defragment domain_name

ドメインの断片化解消を行なうには root ユーザの特権が必要です。 defragment ユーティリティは,vfastaddvolrmvolbalance,または rmfset コマンドを同じドメインで実行しているときには実行できません。

デフラグメント処理がシステムに及ぼす負荷を特定するのは困難です。 ドメインの断片化解消に必要な時間は,次の要素に依存します。

defragment ユーティリティは,ボリュームごとにスレッドを生成します (最大 20 スレッド)。 したがって,多数の小さなボリュームで構成されたドメインの断片化解消は,1 つの大きなボリュームで構成されたドメインを対象とする場合よりもより速く処理されます。 ただし,複数のスレッドで断片化を解消すると,実行中の I/O のスループットが大幅に低下する可能性もあります。 Version 4 のオペレーティング・システム・ソフトウェアの動作と同様に,1 つのスレッドだけでデフラグメント処理を実行するには,defragment に -N 1 オプションを指定して実行します。

ユーティリティを起動しないで,ドメインの断片化状況を調べるには,defragment コマンドに -v -n オプションを指定して実行します。 エクステント数の平均や,断片化しているファイルあたりのエクステント数が高い場合,あるいは総合的な I/O 性能が低下している場合には,デフラグメント処理が役立つことがあります。 多くの場合,大規模な,かなり断片化されているファイルであっても,断片化による性能の著しい低下はありません。 ファイルの過剰な断片化による性能上の問題が発生していない場合には,defragment コマンドを実行する必要はありません。

かなり断片化されているファイルを見つけた場合,そのファイルの断片化だけを個別に解消することができます。 個々のファイルの断片化解消については,5.10 節 を参照してください。

ファイル・システムに対する操作を 1 〜 2 か月行なっていない場合,つまり,定期的なフル・バックアップやファイル・システム全体の点検を行っていない場合は,defragment を実行する前に,/sbin/advfs/verify コマンド (6.2.4 項) を実行することをお勧めします。 verify コマンドは,ファイル・システムの負荷が低いときに実行してください。

defragment を実行する前に balance ユーティリティを実行すると,デフラグメント処理が速くなる場合があります。

メール・サーバなど,大部分のファイルのサイズが AdvFS のページ・サイズである 8K バイト未満のシステムで defragment コマンドを実行するのは,ファイルセットのフラグ・ファイル /mount_point/.tags/1 の著しい断片化が示された場合だけにしてください。 フラグ・ファイルの無効化については,5.2 節を参照してください。

ハードウェア・リソースと AdvFS Utilities があれば,addvol コマンドを使用してボリュームを追加し,元のボリュームを rmvol コマンドで削除することができます。 古いボリュームを削除するとドメインは新しいボリュームに移動され,同時に内部のファイルの断片化も解消されます。

次の例では,accounts_domain ドメインの断片化の状態を調べ,続いて最大 15 分間にわたってそのデフラグメント処理を行います。

# defragment -v -n accounts_domain
defragment: Gathering data for 'accounts_domain'
Current domain data:
   Extents:                 263675
   Files w/ extents:        152693
   Avg exts per file w/exts:  1.73
   Aggregate I/O perf:         70%
   Free space fragments:     85574
                 <100K   <1M   <10M   >10M
    Free space:    34%   45%    19%     2%
    Fragments:   76197  8930    440      7
#  defragment -v -t 15 accounts_domain
defragment:  Defragmenting domain 'accounts_domain'
 
Pass 1; 
  Volume 2: area at block      144 (  130800 blocks): 0% full
  Volume 1: area at block   468064 (  539008 blocks): 49% full
  Domain data as of the start of this pass:
    Extents:                   7717
    Files w/extents:           6436
    Avg exts per file w/exts:  1.20
    Aggregate I/O perf:         78%
    Free space fragments:       904
                    <100K    <1M    <10M    >10M
     Free space:       4%     5%     12%     79%
     Fragments:       825     60      13       6
Pass 2;
  Volume 1: area at block   924288 (  547504 blocks): 69% full
  Volume 2: area at block      144 (  130800 blocks):  0% full
  Domain data as of the start of this pass:
    Extents:                   6507
    Files w/extents:           6436
    Avg exts per file w/exts:  1.01
    Aggregate I/O perf:         86%
    Free space fragments:      1752
                    <100K    <1M    <10M    >10M
     Free space:       8%     13%     11%     67%
     Fragments:      1574     157      15       6

Pass 3;
  Domain data as of the start of this pass:
    Extents:                   6485
    Files w/extents:           6436
    Avg exts per file w/exts:  1.01
    Aggregate I/O perf:         99%
    Free space fragments:       710
                    <100K    <1M    <10M    >10M
     Free space:       3%    11%     21%     65%
     Fragments:       546    126      32       6
 
Defragment: Defragmented domain 'accounts_domain'

各パスの前やデフラグメント処理の最後に表示される情報は,ドメインの改善度を示しています。 ExtentsAvg exts per file w/extents の値が減少している場合は,ファイル断片化状況が改善されていることを示しています。 また,Aggregate I/O perf の値が増加している場合は,ファイル・エクステントの割り当ての全体的な効率が改善されていることを示しています。

詳細については, defragment(8) と Best Practice ドキュメントの『Defragmentingan AdvFS Domain』を参照してください。

5.10    ファイルの断片化解消

ドメイン全体ではなく,ファイルを対象に断片化を解消できます。 vfast ユーティリティが動作している間に,ファイルを個別に断片化解消できます。

そのファイルを断片化解消すべきか,つまり,そのファイルに多くのエクステントがあるかを調べるには,showfile コマンドに -x オプションを指定して実行します。 エクステントが多くある場合,次のいずれかを行なって断片化を解消します。

5.11    マルチボリューム・ドメインのバランシング

vfast ユーティリティ (5.8 節) を実行していない場合,balance ユーティリティを使用して,マルチボリューム・ドメイン内のボリューム間で,使用スペースの割合を均等にすることができます。 これにより,性能を改善し,将来のファイル割り当てでスペースが均等に割り当てられるようになります。

このユーティリティは,ドメインの各ボリュームのスペースの使用率が可能な限り均等になるまで,ファイルをボリューム間で移動します。図 5-1 を参照。 このプロセスは,vfast ユーティリティで使用するプロセスと同じです。 通常,balance ユーティリティではファイルを分割しないので,非常に大きなファイルのあるドメインでは,小さなファイルで構成されるドメインほど均等にはバランスがとれない場合があります。

ファイルをボリューム間で再分散するには,ドメインのすべてのファイルセットをマウントしておく必要があります。 SysMan Menuの「AdvFS ドメインの管理」ユーティリティ (付録 A を参照) または AdvFS GUI (付録 Eを参照)を使用するか,あるいはコマンド行で次のように balance コマンドを使用します。

balance domain_name

バランス処理を中断した場合,すでに再配置されたファイルはすべてそのまま新しい位置に残ります。 残りのファイルについては,元の位置にそのまま残ります。

ドメインのバランシングを行なうには,root ユーザの特権が必要です。 balance ユーティリティは,vfastaddvolrmvoldefragment,または rmfset コマンドを同じドメインで実行している間は実行できません。

ファイルが均等に分散されているか調べるには,showfdmn コマンドでドメイン情報を表示します。 % Used フィールドを見るとファイル分散の状況がわかります。

addvol コマンドでボリュームを追加した後,あるいは rmvol コマンドでボリュームを削除 (複数のボリュームが残っている場合) した後に,balance ユーティリティを使用してファイルの分散を均等化させます。

次の例のマルチボリューム・ドメイン usr_domain のバランスはとれていません。 ボリューム 1 の使用済みスペースは 63% ですが,ボリューム 2 (小さいボリューム) の使用済みスペースは 0% (追加されたばかり) です。 バランシング処理後は,両方のボリュームのスペース使用率がほぼ同じになっています。

# showfdmn usr_domain
            Id       Date Created      LogPgs Version Domain Name
3437d34d.000ca710 Wed Apr 3 10:50:05 2002 512       4 usr_domain
 
 Vol  512-Blks   Free % Used  Cmode Rblks  Wblks  Vol Name 
  1L   1488716 549232    63%     on   128    128  /dev/disk/dsk0g
  2     262144 262000     0%     on   128    128  /dev/disk/dsk4a
     --------- -------  ------
       1750860 811232    54%

# balance usr_domain
 balance: Balancing domain 'usr_domain' 
 balance: Balanced domain 'usr_domain'
# showfdmn usr_domain
            Id       Date Created      LogPgs Version Domain Name
3437d34d.000ca710 Wed Apr 3 10:50:05 2002 512       4 usr_domain
 
 Vol  512-Blks   Free % Used  Cmode Rblks  Wblks  Vol Name 
  1L   1488716 689152    54%     on   128    128  /dev/disk/dsk0g
  2     262144 122064    53%     on   128    128  /dev/disk/dsk4a
     --------- -------  ------
       1750860 811216    54% 

詳細については, balance(8) を参照してください。

5.12    別のボリュームへのファイルの移動

オプションの AdvFS Utilities を利用できる場合,migrate ユーティリティを使用して,過度にアクセスされるファイルや大きなファイルを,ドメイン内で選択した別のボリュームに移すことができます。 高性能なデバイスを利用できる場合は,I/O が集中するファイルをより効率的なボリュームへ移動することもできます。

balance ユーティリティ,defragment ユーティリティ,および vfast ユーティリティに -o topIObalance= オプションを指定して,ファイルを移動することができますが,対象ファイルまたはページ,およびその移動先を選択できるのは,migrate ユーティリティだけです。 ファイル全体または特定のページを移動できます。 図 5-2 に ファイル A の移動の手順を示します。 このファイルを,ボリューム 1 からボリューム 2 に移動します。

図 5-2:  ファイルの移動

ファイル全体を特定のボリュームに移動するには,migrate コマンドに -d オプションを指定して実行します。

migrate -d destination_vol_index filename

ファイル移動の際に,可能ならばその断片化が解消されます。 migrate コマンドでは,指定したファイルの断片化を解消するように指定できます。 migrate ユーティリティでは,どのファイルを断片化解消するように選択しても,それについて評価しません。 ストライプ化したファイル・セグメントを別のセグメントが存在するディスクに移動することもできますが,ストライプ化の目的は果たせなくなくなります。

ファイルを移動するには,root ユーザの特権が必要です。 1 つのファイルに対して同時に複数の移動操作を行なうことはできません。 また,一度に 1 つのボリュームからのみ移動できます。

次の例では showfile コマンドに -x オプションを使用して,ファイル src のエクステント・マップ (1.3.3 項)と性能を監視しています。 2 つのボリュームからなるドメインに属するこのファイルは,別のボリュームに移動されます。 11 のファイル・エクステントから 1 つのエクステントになり,18% から 100% に性能効率が向上しています。 画面の最初の行はメタデータについてです。 メタデータは新しいボリュームに移動されません。 それは最初の場所に置かれたままです。 画面の extentMap 部分にはファイルの移動されたページが示されています。

# showfile -x src
    Id Vol PgSz Pages XtntType  Segs  SegSz  I/O  Perf  File
8.8002   1   16    11   simple    **     ** async  18%  src
             extentMap: 1
        pageOff    pageCnt     vol    volBlock    blockCnt
              0          1       1      187296          16
              1          1       1      187328          16
              2          1       1      187264          16
              3          1       1      187184          16
              4          1       1      187216          16
              5          1       1      187312          16
              6          1       1      187280          16
              7          1       1      187248          16
              8          1       1      187344          16
              9          1       1      187200          16
             10          1       1      187232          16
        extentCnt: 11

# migrate -d 2 src
# showfile -x src
    Id Vol PgSz Pages XtntType Segs SegSz  I/O  Perf  File
8.8002   1   16    11   simple   **    ** async 100%  src
   extentMap: 1
      pageOff    pageCnt     vol    volBlock    blockCnt
            0         11       2       45536         176
      extentCnt: 1

5.13    ファイルのストライプ化

ストライプ化では,ファイルが複数のボリュームに分散されます。 異なるディスク・ドライブへの I/O 要求はオーバラップさせることができるため,ストライプ化によって,シーケンシャルな読み取りおよび書き込みの性能が向上します。 LSM,ハードウェア RAID,およびストレージ・エリア・ネットワーク (SAN) などの仮想ストレージ・ソリューションでは,すべてのファイルをストライプ化し,通常はシステムのセットアップ時に構成されます。 AdvFS のストライプ化は単一のファイルに適用され,いつでも実行できます。

注意

AdvFS のストライプ化は,LSM,RAID,または SAN ボリュームを含まない,直接接続されているストレージにだけ使用してください。 AdvFS のストライプ化とシステムのストライプ化を組み合わせると,システムの性能が低下する可能性があります。

AdvFS の stripe ユーティリティは,ストライプ・セグメントをドメイン内の特定の複数のボリュームに分散させます。 このコマンドを実行するには,AdvFS Utilities が必要です。 ストライプの幅は 64K バイト固定です。 ただし,ファイルをストライプ化するボリュームの数を指定できます。

AdvFS stripe コマンドの構文を次に示します。

stripe -n volume_count filename

AdvFS のストライプ化ユーティリティは,/etc/fstab ファイルには使用できません。

次のいずれかの方法でドメインの AdvFS ストライプ化を削除できます。

詳細については, stripe(8)を参照してください。

5.14    新しいボリュームへのドメインとそのファイルセットの移動

新しいボリュームを追加した場合や,ファイルセットあるいはドメインがシステム・リソースを使い過ぎていると思われる場合は,ドメインを別のボリュームに移動することができます。 ドメインを移動するかどうかは,そのドメインが置かれているデバイスの I/O 性能を調べます。 iostat ユーティリティを,SysMan Menu の「モニタリング/チューニング - 入出力 (I/O) 統計の参照」ユーティリティ (付録 Aを参照) から実行するか,コマンド行から実行します ( iostat(1) を参照)。

ドメイン全体とそのファイルセットを新しいボリュームに移動するには,次の手順に従います。

  1. 新しいデバイス上で新しいドメインを作成します。 一時的に新しい名前が必要になります。

  2. 新しいドメインに,移動元のドメイン内と同じ名前のファイルセットを作成します。

  3. ファイルセットの一時的なマウント・ポイント・ディレクトリを作成します。

  4. 一時的なマウント・ポイント・ディレクトリに新しいファイルセットをマウントします。

  5. vdump コマンドを使用して,古いデバイスからファイルセットをコピーします。 さらに,vrestore コマンドを使用して,コピーしたファイルセットを新たにマウントしたファイルセットにリストアします。

  6. 古いファイルセットと新しいファイルセットをアンマウントします。

  7. 新しいドメインの名前を古い名前に変更します。 ドメインおよびファイルセットの名前は変更していないため,/etc/fstab ファイルを編集する必要はありません。 古いドメインを削除します。

  8. 古いファイルセットのマウント・ポイントに新しいファイルセットをマウントします。 これにより,ディレクトリ構造を変更せずにファイルセットを移動できます。 最後に一時的なマウント・ポイント・ディレクトリを削除します。

ドメイン内に複数のファイルセットが存在する場合には,2 〜 8 の手順をファイルセットごとに実行します。

新しいドメインは新しいドメイン・バージョン番号 (DVN) 4 で作成されます。 ドメイン・バージョン番号については,2.3.3.1 項 を参照してください。 古いバージョンのオペレーティング・システムを使用するためにドメイン・バージョン 3 を維持したい場合は, mkfdmn(8)を参照してください。 ドメイン・バージョン番号が変わっても,vdumpvrestore ユーティリティは影響を受けません。

次の例では,ファイルセット technical のドメイン accounts をボリューム dsk3c へ移動しています。 new_accounts は一時的なドメインで,最初に /tmp-mnt にマウントします。 このファイルセットは /technical にマウントされていると想定します。 また,/etc/fstab ファイルには,システムを,/technicalaccounts#technical にマウントするためのエントリが含まれていると想定します。

# mkfdmn /dev/disk/dsk3c new_accounts
# mkfset new_accounts technical
# mkdir /tmp_mnt
# mount new_accounts#technical /tmp_mnt
# vdump -dxf - /technical|vrestore -xf - -D /tmp_mnt
# umount /technical
# umount /tmp_mnt
# rmfdmn accounts
# rmdir /tmp_mnt
# mv /etc/fdmns/new_accounts/ /etc/fdmns/accounts/
# mount accounts#technical /technical

5.15    ドメイン・パニック情報の制御

AdvfsDomainPanicLevel 属性を使用して,ドメイン・パニックが発生した場合にクラッシュ・ダンプを作成するかどうかを選択します。 ドメイン・パニックの典型的な原因は,デバイスの I/O エラーによるものです。 AdvFS はメタデータを書き込めない場合,ドメインをパニック状態にします。 現在の実装では,このタイプの I/O エラーでは,システムがクラッシュしない限りクラッシュ・ダンプは作成されません。

クラッシュ・ダンプを適用するには,この属性の値を次のように設定します。

属性の変更については sysconfig(8),ドメイン・パニックからの回復については6.3.1 項をそれぞれ参照してください。