AdvFS ファイル・システムは,さまざまな方法で設定し,その性能をチューニングすることができます。 一部のチューニング機能は,AdvFS GUI (付録 Eを参照) から実行できます。 AdvFS のチューニング・パラメータについての詳細は,『システムの構成とチューニング』 を参照してください。
この章では,次のトピックについて説明します。
システム性能の監視方法 (5.1 節)
フラグ・ファイルの無効化による性能改善 (5.2 節)
トランザクション・ログ・ファイルの性能を向上させる方法 (5.3 節)
データ・キャッシュのチューニング (5.4 節)
システム障害の際のデータの一貫性を改善する方法 (5.5 節)
データ転送速度を向上させる手段の 1 つとしてのダイレクト I/O (5.6 節)
システム性能を向上させる変更可能なシステム属性 (5.7 節)
システム・スループットを向上させる
vfast
ユーティリティ (5.8 節)
ドメインの断片化解消 (5.9 節)
ファイル単位での断片化解消 (5.10 節)
データ配置の均等化 (5.11 節)
ファイルを別のボリュームに移すことにより性能を向上させる方法 (5.12 節)
AdvFS ファイルのストライプ化 (5.13 節)
ファイルセットを移動してシステム・リソースへの負荷を軽減する方法 (5.14 節)
ドメイン・パニックのレベルを制御する方法 (5.15 節)
ドメインとファイルセットの効果的な割り当て方法についての詳細は,『システムの構成とチューニング』および第 1 章を参照してください。
Version 5 のディレクトリについては,2.3.3.1 項
を参照してください。
Version 5 ではディレクトリのインデックスが利用でき,ファイルにアクセスしやすくなっています。
5.1 性能の監視
システムを最適化する第一歩は,その動作を理解することです。 性能情報は,多くの方法で得ることができます。
iostat
ユーティリティは,端末,ディスク,および CPU の I/O 統計情報を報告します。
1 秒あたりの送信回数 (tps) と 1 秒あたりの送信 K バイト数 (bps) を表示します。
iostat
の出力は I/O のボトルネックの所在を特定する材料になります。
すなわち,スループットが高い状態を持続しているデバイスが存在する場合,そのデバイスは他のデバイスよりも使用頻度が高く,ボトルネックになっています。
ボトルネックが見つかれば,ファイルの移動や,より高速なボリュームの導入,ファイルのストライプ化など,スループットを向上させるための処置を講じることができます。
I/O 統計情報は,SysMan Menu の「モニタリング/チューニング - 入出力 (I/O) 統計の参照」ユーティリティ (付録 A
参照) でも表示できます。
コマンド行での表示方法については,
iostat
(1)
advfsstat
ユーティリティは,長期にわたるファイルセットとドメインの使用状況に関する詳しい情報を表示します。
また,バッファ・キャッシュの使用状況,ボリュームの読み書き,BMT (Bitfile Metadata Table) レコード,その他のパラメータを調べ,通常でないアクティビティがないか調べることもできます。
詳細については,
advfsstat
(8)
Collect for Tru64 UNIX は,メモリ,ディスク,テープ,ネットワーク,ファイル・システムといったサブシステムの情報を収集して表示します。
Collect は,サポートされている Tru64 UNIX の全リリースで動作します。 詳細については,次の web サイトを参照してください。
http://h30097.www3.hp.com/collect/
割り当てられたストレージ領域の 5% 以上が無駄になるファイルの,ディスク・スペースの割り当てを制御することができます。 ファイルまたはファイルの終端部分がファイルセットのフラグ・ファイルに保存されます (1.3.3 項を参照)。 フラグ処理,つまりフラグ・ファイルを作成する目的はファイルセットのストレージの無駄を最小化することです。 ファイルセットのフラグ処理を無効にすると,入出力効率は上がりますが,ストレージの消費量が増加します。 フラグ・ファイルを持つかどうかは,デフラグ操作 (5.9 節) には影響がありません。
永続的なアトミック書き込みデータ・ロギングを行なうには,ファイルのフラグ処理を無効にする必要があります。 詳細は,5.5.2 項 を参照してください。
省略時の設定では,ファイルセットにはフラグ処理が適用され,ファイルの断片がフラグ・ファイルに保存されます。 フラグ処理は次の 2 通りの方法で無効化できます。
ファイルセットの作成時に次の形式のコマンドを使用する。
mkfset -o nofrag
domain_name fileset_name
既存のファイルセットに対して,次のコマンドを使用する。
chfsets -o nofrag
domain_name fileset_name
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
ファイルセットのフラグ処理を有効化または無効化しても,既存のファイルには影響しません。 既存のフラグメント(ファイル断片)は存在し続けます。 既存ファイルの終端のフラグメントを削除するには,次の手順に従います。
chfsets
コマンドを使用して,ファイルセットのフラグ状態を,そのファイルに設定したいフラグ状態と同じになるように変更します。
フラグメント付きファイルを,別のファイルとしてコピーします。
元のファイルを削除し,コピーした新しいファイルに元のファイルの名前を付けます。
ファイルセットのフラグ状態を元に戻したい場合は,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 が利用できる場合,ログ・ファイルが置かれているボリュームの負荷が高いようであれば,次のいずれかの方法で対処します。
ドメインをいくつかの小さなドメインに分割します。 各ドメインにそれぞれのトランザクション・ログ・ファイルが用意されるため,各ログ・ファイルが扱うファイルセットの数が少なくなります。
トランザクション・ログ・ファイルを,より速く,あまり処理の集中していないボリュームへ移動します。
トランザクション・ログ・ファイルを,専用のボリュームに独立させます。
トランザクション・ログ・ファイルをより速い,処理の集中しないボリュームに移動すると,スループットが向上します。 LSM (Logical Storage manager) ストレージを使用している場合も,このファイルを移動することで効果があがります。 ミラー化されているボリュームにトランザクション・ログ・ファイルを置いて信頼性を高めることができます。 そのような構成にすれば,たとえばトランザクション・ログ・ファイルが格納されているディスクがクラッシュした場合でも,ミラー側のログを使用できます。
トランザクション・ログ・ファイルを別のボリュームへ移動する手順は以下のとおりです。
showfdmn
コマンドを使用してログ・ファイルの位置を確認します。
ボリューム番号の後に文字
L
があるボリュームにログ・ファイルが存在します。
/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%
トランザクション・ログ・ファイルを独立させると,すべてのログ I/O を他のドメインの読み取りおよび書き込みと分離させることができます。 このログ・ボリューム上では他の動作が発生しないため,ログ・ファイルの I/O が遅くなることも,他のドメインの I/O が遅くなることもありません。
トランザクション・ログ・ファイルを専用のボリュームに独立させるには,次の手順を実行します。
ドメインがアクティブになっていないことを確認します。 アクティブの場合,ファイルへの書き込みはすべて,分離させようとするボリューム上のストレージに割り当てられます。
ログ・ファイルを独立させるドメインに,小さなパーティション (ボリューム) を追加します。 この場所にログ・ファイルを置きます。
このデバイス上の他のパーティションの I/O 負荷は,ログ・ファイル・パーティションも含めディスク全体の性能に影響することに注意してください。 残りのパーティションが他のドメインに割り当てられている場合は,同じデバイス上に複数のトランザクション・ログ・ファイルが存在することになります。 この状態は半導体ディスクでは問題はありませんが,低速のデバイスではログ・ファイルを独立させた効果がなくなることがあります。
switchlog
コマンドを使用して,ログ・ファイルを新しいボリュームに移動します。
showfdmn
コマンドを使用して,ログ・ファイルのあるボリューム上の空きブロック数を調べます。
showfdmn
コマンドから得られた情報を参考に,dd
コマンドを使用して正しいサイズのダミー・ファイルを作成します。
ダミー・ファイルを,ログ・ファイルのあるボリュームに移動します。 このファイルはボリュームを完全に埋めるため,他のファイル用のスペースは残りません。 ユーザはこのファイルにはアクセスしないため,トランザクション・ログ・ファイルだけがこのボリューム上でアクティブになります。
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
データが頻繁に再利用される環境では,キャッシュを使用すると性能が向上します。
AdvFS は,ファイル・メタデータとユーザ・データの管理に, キャッシュに UBC を使用することで,AdvFS ではメモリが利用可能な限り,ファイル・データをメモリ内に保持することができます。
他のシステム・リソースのために,ファイル・システムのキャッシュとして使われているメモリが必要になると,UCB は,ファイル・システムで使用しているメモリの一部を取り返し,メモリを必要としているリソースに割り当てます。
AdvFS はキャッシュに UBC を使用するため,キャッシュのチューニングには UBC のチューニング・パラメータを使用します。
チューニングできるパラメータは次のとおりです。
UBC として一度に使用できるメモリ量の,物理メモリ全体に占める割合。
UBC からディスクへの書き込みが開始される前に超過すべき,ダーティ・ページ数の全ページ数に対する割合
1 つのファイルのキャッシュとして使用できる UBC メモリの最大サイズ
これらのパラメータを変更する際の指針については,『システムの構成とチューニング』を参照してください。
データ・キャッシュは省略時の設定で有効になっており,ファイル・システムの性能が向上しますが,特定の状況下では,データ・キャッシュをバイパスする方が,アプリケーション側でより高いスループットが得られることもあります (5.6 節を参照)。
データをファイルへ書き込む方法によって,マシンに障害が発生した場合にデータがどの程度保護されるかが決まります。
次の 2 つのことについて選択できます。
これらの選択肢は互いに独立しています。
I/O を同期させるかどうか
メタデータの書き込みに加えて,ファイルのデータもトランザクション・ログ・ファイルに書き込むかどうか (アトミック書き込みデータ・ロギングのオン/オフ)
特に指定しなければ,書き込み要求はキャッシュされます。
すなわち,データはすぐにディスクに書き込まれるのではなく クラッシュが発生すると,ドメイン内のファイルセットが次にマウントされたときに,ディスクへのログ・トランザクションのうち,完了しているものが再度実行され,完了していないものは取り消されるため,ディスク上の元のメタデータが復元されます。
これらのログ・トランザクションは,省略時はメタデータのみを保存し,ファイルへ書き込まれたデータは保存しません。
すなわち,ディスク上のファイル・サイズと位置は一貫性が保たれますが,クラッシュが起きた時点が,ディスクへの書き込みの前であれば,最新の書き込みのユーザ・データが失われる可能性があります。
これは,この方法を使用することで得られるスループットの向上とトレードオフの関係にあります。
同期 I/O
は非同期 I/O と類似していますが,書き込み要求の処理から呼び出し元のアプリケーションに戻る前に,データがキャッシュとディスクの両方に書き込まれます。
すなわち,書き込みが正常に終了すると,データがディスクに正しく書き込まれたことが保証されます。
同期 I/O の欠点は,I/O が完了するまで書き込み処理から戻らないため,スループットが低くなることです。
また,データをディスクにフラッシュしなければならないタイミングを決定するのがファイル・システムではなくアプリケーションなので,同期書き込み要求の処理量が小さい場合,I/O が結合される可能性が低くなります。
省略時のキャッシング方式は非同期 I/O です。
同期 I/O のオン/オフをファイルごとに切り替えるには, ファイルセット内のすべてのファイルに同期 I/O を強制するには, また,あるファイルにアクセスするすべてのアプリケーションに同期 I/O を強制することができます。
この場合, 同期処理をオフにしてファイルを再び非同期 I/O 状態にするには, アトミック書き込みデータ・ロギングでは (通常ロギングされるメタデータに加えて) ユーザ・データをログ・ファイルに書き込み,システム障害のときにデータの一貫性が保たれるようにします。
この機能のオン/オフでは,メタデータとファイル・データの両方がディスクに書き込まれるか,両方が書き込まれないかを切り替えることになります。
アトミック書き込みデータ・ロギングが使用する I/O 方式は,I/O が非同期に設定されているか (5.5.1.1 項),同期に設定されているか (5.5.1.2 項) で異なります。
アトミック書き込みデータ・ロギングには,永続的なロギング (5.5.2.3 項) と一時的なロギング (5.5.2.4 項) の 2 種類があります。
永続的なデータ・ロギングでは,ファイルセットがマウント/アンマウントされても,ログは継続されます。
一時的なデータ・ロギングは,ファイルセットがマウントされているときだけ有効です。
ロギングのステータスは,オプションをつけない
この機能のデータ・ロギングでは,データとメタデータの両方をトランザクション・ログ・ファイルに書き込むので性能が低下します。
ロギングのトラフィックが増加し,各ユーザの書き込みでの I/O の処理が倍になります。
アトミック書き込みデータ・ロギングを計画しているファイルまたはファイルセットを,1 つまたはいくつかのドメインにグループ化することによって,性能重視の他のドメインの負荷を軽くすることができます。
非同期アトミック書き込みデータ・ロギング I/O は,非同期 I/O と同じような方法ですが,それぞれの書き込み要求でバッファ・キャッシュに書き込まれたユーザ・データがログ・ファイルにも書き込まれるという点が異なります。
これは,8K バイトの倍数のサイズで行われます。
データをログ・ファイルにも書き込むため,クラッシュのときのデータの一貫性は保証されますが,非同期 I/O と比べるとスループットが低くなります。
非同期 I/O を使用し,アトミック書き込みデータ・ロギングを有効にすると,I/O は非同期のアトミック書き込みデータ・ロギングとなります。
クラッシュが発生すると,ファイルセットが再度マウントされたときにログ・ファイルからデータが復元されます。
非同期 I/O の場合と同じように,完了したログ・トランザクションはすべて再実行され,完了していないトランザクションは取り消されます。
ただし,非同期 I/O の場合と異なり,ユーザのデータはログに書き込まれているので,メタデータとファイルに書き込もうとしていたデータの両方を復元できます。
これにより,8K バイトの倍数のサイズの書き込みがアトミックであることが保証されます。
つまり,データは完全にディスクに書き込まれたか書き込まれていないかのいずれかです。
完了した書き込み要求のみが処理されるため,クラッシュ時にシステムが書き込もうとしていた位置にある,古くなった,傷ついている可能性のあるデータはアクセスされません。
ディスクへの書き込み順序が乱れて,クラッシュ時に一貫性が損なわれることはありません。
同期アトミック書き込みデータ・ロギング I/O は,非同期アトミック書き込みデータ・ロギング I/O と同じような方法ですが,書き込み要求が呼び出し側アプリケーションに戻る前に,ロギングされたデータがバッファ・キャッシュからディスクにフラッシュされるという点が異なります。
ログ・フラッシュ I/O が終了してからでないと,書き込み処理が戻ってこないので,非同期アトミック書き込みデータ・ロギング I/O と比べるとスループットが低くなる場合があります。
同期 I/O を使用し,アトミック書き込みデータ・ロギングを有効にすると,I/O は同期アトミック書き込みデータ・ロギング となります。
書き込み進行中にクラッシュが発生すると,ファイルセットが再度マウントされたときにログ・ファイルからデータが復元されます。
非同期アトミック書き込みデータ・ロギング I/O の場合と同じように,ユーザのデータはログに書き込まれているのでメタデータとファイルに書き込もうとしていたデータの両方を復元できます。
これにより,8K バイト倍数のサイズでデータが完全にディスクに書き込まれたか書き込まれていないかのいずれかであることが保証されます。
同期アトミック書き込みデータ・ロギングの利点は,書き込み呼び出しがアプリケーションに戻った後にクラッシュが発生した場合のデータの一貫性が保証されることです。
リブートでログ・ファイルが再生され,ユーザの書き込み要求全体が適切なユーザのデータ・ファイルに書き込まれます。
一方,非同期アトミック書き込みデータ・ロギングは,書き込み呼び出しがアプリケーションに戻った後の 8K バイト単位のデータの一貫性しか保証しません。
永続的なアトミック書き込みデータ・ロギングでは,ディスク上にフラグが設定され,ファイルセットがマウント/アンマウントされても,そのファイルのロギングが継続されるようにします。
ロギングを非同期に行なうか (5.5.1.1 項),同期をとって行なうか (5.5.1.2 項) は,I/O をどのように設定したかによって決まります。
永続的なアトミック書き込みデータ・ロギング I/O のオン/オフを切り替えるには, ファイルにフラグメント (断片) がある場合,永続的なアトミック書き込みデータ・ロギングは起動できません。
フラグメントのあるファイルに対してデータ・ロギングを起動するには,次のいずれかの方法を採ります。
一時的なアトミック書き込みデータ・ロギングを起動する。
このデータ・ロギングは,フラグメントのあるファイルにも使用できます。5.5.2.4 項を参照してください。
フラグ・ファイルを
永続的なアトミック書き込みデータ・ロギングを使用するファイルは, 一時的なアトミック書き込みデータ・ロギングでは,ファイルセットに対して有効にするフラグをメモリ上に設定し,そのファイルセットがマウントされている間のみデータ・ロギングが行なわれるようにします。
ロギングを非同期に行なうか,同期をとって行なうかは,I/O をどのように設定したかによって決まります。
I/O モードの制御方法は,5.5.1 項
を参照してください。
一時的なアトミック書き込みデータ・ロギングを有効にするフラグをメモリ上に設定し,対応するファイルセットがマウントされている間のみデータ・ロギングを有効にするには, ファイルを開いているアプリケーションは, 一時的なアトミック書き込みデータ・ロギングを使用しているファイルは,メモリにマッピングできます。
ファイルをメモリにマッピングすると,そのファイルを使用している全スレッドでマッピングが解除されるまで,一時的なアトミック書き込みデータ・ロギングは中断されます。
ロギングを非同期に行なうか (5.5.1.1 項),同期をとって行なうか (5.5.1.2 項) は,I/O をどのように設定したかによって決まります。
表 5-1にアトミック書き込みデータ・ロギングの有効化をチューニングする際のパラメータを示します。
表 5-2
にアトミック書き込みデータ・ロギングの無効化をチューニングする際のパラメータを示します。
ダイレクト I/O は,どのようなバイト・サイズの I/O 要求でも処理しますが,要求された転送位置がディスク・セクタ境界に合っていて,その転送サイズが基本的なセクタのサイズ (現在 512 バイト) の偶数倍である場合に,最も高い性能を発揮します。
ダイレクト I/O は,データベースによって独占的に使用されるファイルに特に適しています。
ただしキャッシングが行われないため,アプリケーションが同じデータに複数回アクセスする傾向がある場合は,逆に,ダイレクト I/O は性能に悪影響を及ぼします。
ダイレクト I/O を指定すると,すぐにそれが有効になり,すでにバッファ・キャッシュに存在するデータは自動的にディスクへフラッシュされます。
ファイルをダイレクト I/O を有効にしてオープンできるのは,アトミック書き込みデータ・ロギング用にオープン (5.5.2 項) していない場合,またはメモリにマッピング (6.4.10 項) されていない場合のみです。
ダイレクト I/O を行なうようにファイルをオープンするには, それまでのモードに関係なく,新しいモードはダイレクト I/O になり,指定したファイルがクローズされるまでこのモードが有効になります。
システムの性能は,さまざまな属性を変更して改善できます。
『システムの構成とチューニング』 に,それぞれの属性の意味と,それらを変更した場合の影響について詳しく説明しています。
詳細については
ダーティ・データ・キャッシングしきい値の引き上げ
smooth sync が無効な場合には, I/O 転送サイズの変更
デバイスに最適な転送サイズで I/O を行なうために,AdvFS は,ディスク上の物理的に連続するメモリのキャッシュ・ページを結合します。
最適な転送サイズはデバイス・ドライバによって決まり,ストレージの構成によって異なりますが,通常は 128 または 256 ブロックです。
LSM を使用している場合は,ストライプ幅を変更することができ,さらに大きな転送サイズが設定される場合もあります。
優先転送サイズの調整には, メモリにマッピングされた変更ページのフラッシュ
アクセス構造体用に確保するメモリの拡大
AdvFS は,ページング可能メモリの一定の割合までアクセス構造体にメモリを割り当てます。
この割合は,
ファイル断片化の解消
ボリュームの空き領域の分散化
I/O 負荷の均等化
ほとんどの
オープン/クローズされたファイルだけが, ドメイン全体を断片化解消するには,そのドメインのすべてのファイルをオープンしクローズする必要があります。
ドメインの各ファイルセットで,次の操作を行ないます。
ファイルセットをマウントし,そのディレクトリに移動します。
次のコマンドを実行します。
-o defragment=disable
オプションを指定することで,断片化の解消は,いつでも停止できます。
プロセスを途中で停止しても,ファイル・システムに影響はありません。
すでに断片化解消されたファイルはその再配置された位置のままになります。
ファイルのダイレクト I/O を有効にすると (5.6 節), -o defragment=
オプションを有効に設定し,-o balance=
も有効にした場合,
断片化解消が必要なファイルだけが,ボリューム間で空き領域を均等化し負荷分散を図るのに使用されます。
ドメイン内に断片化されたファイルがない場合は, -o topIObalance=
オプションを有効に設定すると, ドメインがハードウェア RAID,LSM ストライプ化,AdvFS ファイル・ストライプ化のいずれかの方法でストライプ化されている場合,-o topIObalance=
オプションは使用しないでください。
このユーティリティは,これらの構成では効率的に I/O 負荷の分散ができません。
システム・ノードがクラスタのメンバである場合,クラスタ・ファイル・システム (CFS) がファイルをキャッシュし,キャッシュがフラッシュされるまで処理が発生しないため,最初にファイルがいくつか処理されない場合があります。
ドメインの
ドメインのレイアウトは, この節では, 下記の例では,
次の例では
次の例では
-l extents
オプションを使用して,断片化解消と空き領域の均等化処理を待つキューに置かれた,ドメイン
次の例では
-L extents
オプションを使用して,ドメイン
次の例では
-l hotfiles
オプションを使用して,ドメイン
断片化の解消はいつでも停止できます。
プロセスを中断しても,ファイル・システムに影響はありません。
すでに断片化解消されたファイルはその再配置された位置のままになります。
マルチボリューム・ドメインの断片化を解消する場合,ファイルの配置を制御できません。
ファイルがどこに置かれているかを確かめるには, ドメイン全体を断片化解消するには,そのドメインのすべてのファイルセットをマウントしておく必要があります。
ボリュームの断片化を解消するには,少なくとも総スペースのうちの 1% か,ボリュームにつき 5 MB (どちらか少ない方) のスペースが残っている必要があります。
SysMan Menuの「AdvFS ドメインの管理」(付録 A
を参照) か,グラフィカル・ユーザ・インタフェース (付録 Eを参照) を使用するか,コマンド行で次のように
ドメインの断片化解消を行なうには root ユーザの特権が必要です。
デフラグメント処理がシステムに及ぼす負荷を特定するのは困難です。
ドメインの断片化解消に必要な時間は,次の要素に依存します。
ボリュームのサイズ
利用できる空き領域の量
システムの稼働状態
ドメインの構成
ユーティリティを起動しないで,ドメインの断片化状況を調べるには, かなり断片化されているファイルを見つけた場合,そのファイルの断片化だけを個別に解消することができます。
個々のファイルの断片化解消については,5.10 節
を参照してください。
ファイル・システムに対する操作を 1 〜 2 か月行なっていない場合,つまり,定期的なフル・バックアップやファイル・システム全体の点検を行っていない場合は, メール・サーバなど,大部分のファイルのサイズが AdvFS のページ・サイズである 8K バイト未満のシステムで
ハードウェア・リソースと AdvFS Utilities があれば, 次の例では,
各パスの前やデフラグメント処理の最後に表示される情報は,ドメインの改善度を示しています。
詳細については,
ドメイン全体ではなく,ファイルを対象に断片化を解消できます。
そのファイルを断片化解消すべきか,つまり,そのファイルに多くのエクステントがあるかを調べるには, 次の手順でファイルをバックアップし復元します。
そのファイルを削除するか,名前を変更します。
このユーティリティは,ドメインの各ボリュームのスペースの使用率が可能な限り均等になるまで,ファイルをボリューム間で移動します。図 5-1
を参照。
このプロセスは, ファイルをボリューム間で再分散するには,ドメインのすべてのファイルセットをマウントしておく必要があります。
SysMan Menuの「AdvFS ドメインの管理」ユーティリティ (付録 A
を参照) または AdvFS GUI (付録 Eを参照)を使用するか,あるいはコマンド行で次のように
バランス処理を中断した場合,すでに再配置されたファイルはすべてそのまま新しい位置に残ります。
残りのファイルについては,元の位置にそのまま残ります。
ドメインのバランシングを行なうには,root ユーザの特権が必要です。
ファイルが均等に分散されているか調べるには, 次の例のマルチボリューム・ドメイン
詳細については,
オプションの AdvFS Utilities を利用できる場合,
ファイル全体を特定のボリュームに移動するには,
ファイル移動の際に,可能ならばその断片化が解消されます。
ファイルを移動するには,root ユーザの特権が必要です。
1 つのファイルに対して同時に複数の移動操作を行なうことはできません。
また,一度に 1 つのボリュームからのみ移動できます。
次の例では
AdvFS のストライプ化は,LSM,RAID,または SAN ボリュームを含まない,直接接続されているストレージにだけ使用してください。
AdvFS のストライプ化とシステムのストライプ化を組み合わせると,システムの性能が低下する可能性があります。
AdvFS の
AdvFS
AdvFS のストライプ化ユーティリティは, 次のいずれかの方法でドメインの AdvFS ストライプ化を削除できます。
ファイルのストライプ化の解除
ストライプ化されていない新しいファイルにストライプ化したファイルをコピーし,元のファイルを削除します。
ストライプ化ボリュームの削除
AdvFS ストライプ化セグメントを含むボリュームを削除する場合, 残りのすべてのボリュームにストライプ化セグメントが含まれている場合,システムはボリュームにセグメントを移動する前に確認のためのプロンプトを表示します。
どのボリュームもストライプ化されているときにストライプ化の機能を十分に発揮させるためには,新しいファイルを既存のボリューム間でストライプ化し,そのストライプ化したファイルにオリジナルのファイルをコピーします。
詳細については,
新しいボリュームを追加した場合や,ファイルセットあるいはドメインがシステム・リソースを使い過ぎていると思われる場合は,ドメインを別のボリュームに移動することができます。
ドメインを移動するかどうかは,そのドメインが置かれているデバイスの I/O 性能を調べます。
ドメイン全体とそのファイルセットを新しいボリュームに移動するには,次の手順に従います。
新しいデバイス上で新しいドメインを作成します。
一時的に新しい名前が必要になります。
新しいドメインに,移動元のドメイン内と同じ名前のファイルセットを作成します。
ファイルセットの一時的なマウント・ポイント・ディレクトリを作成します。
一時的なマウント・ポイント・ディレクトリに新しいファイルセットをマウントします。
古いファイルセットと新しいファイルセットをアンマウントします。
新しいドメインの名前を古い名前に変更します。
ドメインおよびファイルセットの名前は変更していないため, 古いファイルセットのマウント・ポイントに新しいファイルセットをマウントします。
これにより,ディレクトリ構造を変更せずにファイルセットを移動できます。
最後に一時的なマウント・ポイント・ディレクトリを削除します。
ドメイン内に複数のファイルセットが存在する場合には,2 〜 8 の手順をファイルセットごとに実行します。
新しいドメインは新しいドメイン・バージョン番号 (DVN) 4 で作成されます。
ドメイン・バージョン番号については,2.3.3.1 項
を参照してください。
古いバージョンのオペレーティング・システムを使用するためにドメイン・バージョン 3
を維持したい場合は,
次の例では,ファイルセット
クラッシュ・ダンプを適用するには,この属性の値を次のように設定します。
0 - ドメインのクラッシュ・ダンプを作成しません。
1 - マウント済みのファイルセットを含むドメインのクラッシュ・ダンプのみを作成します (省略時の値)。
2 - すべてのドメインのクラッシュ・ダンプを作成します。
3 - ドメイン・パニックが発生したらシステム・パニックを発生させます。
この場合システムはクラッシュします。
属性の変更については
5.5 データの一貫性の向上
5.5.1.1 非同期 I/O
5.5.1.2 同期 I/O
5.5.1.3 同期 I/O のオン/オフのチューニング
chfile
コマンドに
-l
オプションを使用するか,open()
システム・コールに対して
O_SYNC
フラグまたは
O_DSYNC
フラグを使用します (『プログラミング・ガイド』および
open
(2)chfile
コマンドの
-l
オプションと
-L
オプションは同時に使用できないので,chfile
コマンドを使用してアトミック書き込みデータ・ロギングを制御することを計画しているならば,同期 I/O をアクティブにするためには,システム・コールを使用する必要があります。
アトミック書き込みデータ・ロギングのオン/オフのチューニングについては,5.5.2.5 項
を参照してください。
mount
コマンドに
-o sync
オプションを指定します。
mount -o sync
filename
chfile
コマンドに
-l on
オプションを指定します。
chfile -l on
filename
chfile
コマンドに
-l off
オプションを指定して実行します。
chfile -l off
filename
5.5.2 アトミック書き込みデータ・ロギング I/O の有効化
chfile
コマンドで確認することができます。
5.5.2.1 非同期アトミック書き込みデータ・ロギング I/O
5.5.2.2 同期アトミック書き込みデータ・ロギング I/O
5.5.2.3 永続的なアトミック書き込みデータ・ロギング
fcntl()
関数を使用するか,chfile
コマンドに
-L
オプションを指定します。
chfile -L on
filename
chfile -L off
filename
mkfset
コマンドや
chfsets
コマンドでファイルセットを作成または変更するときに,nofrag
オプションを指定する。
chfsets
コマンドに
-o nofrag
オプションを指定して無効にしても,既にフラグメントのあるファイルのフラグメントはそのままです。
ファイルのフラグメントをなくすには,5.2 節
を参照してください。
-l
と
-L
オプションを
chfile
コマンドで同時に用いて,同期 I/O とアトミック書き込みデータ・ロギングを設定することはできません。
しかし,chfile
コマンドに
-L on
オプションを用いて,永続的アトミック書き込みデータ・ロギングを起動し,次にそのファイルを
open()
システム・コールに
O_SYNC
または
O_DSYNC
フラグをつけて呼び出して,そのファイルを 同期 I/O としてオープンすることができます (『プログラミング・ガイド』を参照)。
mmap
システム・コールでメモリにマッピングすることはできません。
ファイル使用の衝突については
6.4.10 項
を参照してください。
5.5.2.4 一時的なアトミック書き込みデータ・ロギング
mount
コマンドに
-o adl,sync
オプションを使用します。
フラグメントを持つファイルは,一時的なアトミック書き込みデータ・ロギングを使用できます。
ファイルが開かれている間,永続的なアトミック書き込みデータ・ロギングの方が,一時的なアトミック書き込みデータ・ロギングよりも優先されます。
fcntl()
関数を呼び出すことによって一時的なアトミック書き込みデータ・ロギングを無効にできます。
また,chfile
コマンドに
-L off
オプションを使用することによって,永続的なアトミック書き込みデータ・ロギングを無効にできます。
これらの処理によるデータ・ロギングの無効化は,同じファイルを開いているすべてのアプリケーションに反映されます。
5.5.2.5 アトミック書き込みデータ・ロギングのオン/オフのチューニング
表 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: アトミック書き込みデータ・ロギングの無効化のチューニング
データ・ロギングのタイプ
コマンド
備考
永続的 (ファイル)
chfile
コマンドに
-L off
オプションを指定,または
fcntl()
関数を使用。
chfile
コマンドを同期 I/O を制御するために使用する場合は,このコマンドは使用できない。
5.5.2.3 項を参照。
一時的 (ファイルセット)
ファイルセットがアンマウントされると,自動的にオフになる。
または
fcntl()
関数を使用。オープンしたファイルはすべて
fcntl()
関数を呼び出せる。
5.5.2.4 項を参照。O_DIRECTIO
フラグを指定して
open()
>
関数を呼び出します。
たとえば,file_x
に対しては,次のように呼び出します。
open (file_x, O_DIRECTIO|O_RDWR, 0644)
fcntl()
関数を呼び出して,ファイルがキャッシュ・モードでオープンされているか,ダイレクト I/O モードでオープンされているかを確認することができます。
詳細は,
fcntl
(2)open
(2)5.7 属性の変更によるシステム性能の改善
sysconfig
(8)
chvol
コマンドに
-t
オプションを使用することによってドメインのボリュームごとに変更できるほか,AdvfsReadyQLim
属性によって AdvFS のすべての新規ボリュームを対象に変更できます
(
chvol
(8)chvol
コマンドによるこの変数の変更が最も効果的です。
smooth sync が有効な場合 (省略時の動作) には,ダーティ・データをディスクにフラッシュする頻度は
smoothsync_age
属性で調整する方が適切です。
smoothsync_age
属性による連続 I/O の促進
smoothsync_age
属性は,バッファ・キャッシュ内の変更ページが,ディスクに書き込まれるまでの時間の長さを秒単位で指定します。
この属性を使用すれば,ページへの連続した変更が終わるまでページをメモリ上に保持して I/O 回数が減るように,ページをディスクに書き込むタイミングを調整できます。
chvol
コマンドと
-r
オプション (read) または
-w
(write) オプションを使用します
(
chvol
(8)AdvfsSyncMmapPages
属性は,メモリにマッピングされた変更ページを,sync
システム・コールでディスクにフラッシュするかどうかを指定します。
AdvfsAccessMaxPercent
属性によって制御されます。
この値を増やせば,数多くのファイルをオープンして再使用する環境では,AdvFS の性能向上につながる可能性がありますが,仮想メモリ・サブシステムおよびユニファイド・バッファ・キャッシュ (UBC) で使用できるメモリの量は減ります。
この属性の値を減らすとページング可能なメモリは増えますが,多数のファイルをオープンして再使用する環境では,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% です。
umount
,rmvol
,および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
キャッシュにファイルがない場合は,断片化解消または空き領域のバランシングは行なわれません。
# find ./ -name \* >/dev/null
vfast
キャッシュが一杯になる可能性があるので,一回ですべてのファイルの断片化が解消できるとは限りません。
ドメインの断片化を完全に解消するには,さらに何度かファイルをオープンしクローズする必要がある場合があります。
次のコマンドを実行します。
# vfast -L extents domain_name
vfast
でマルチボリューム・ドメインの断片化を解消する場合,ファイルの配置を制御できません。
ファイルがどこに置かれているかを確かめるには,showfile
コマンドを実行します。
特定のファイルを別のボリュームに移動したい場合は,migrate
コマンドを実行します (5.12 節を参照)。
vfast
ユーティリティ は,-o direct_io=
オプションが
disable
に設定されるまで,そのファイルの断片化解消を行ないます。
vfast
ユーティリティは,マルチボリューム間でファイルを分散し,I/O 負荷を均等化します。
このユーティリティは,図 5-1に示すように,ドメインの各ボリュームのスペースの使用率が可能な限り均等になるまで,ファイルをボリューム間で移動します。
断片化解消のキューに入れられたファイルのみが,ドメイン間のバランスを図るのに使用されます。
vfast
を実行してもバランシングは行なわれません。
また,断片化のチェックはクローズ中のファイルにのみに行なわれます。
そのファイルセットの最後のマウント以降アクセスしていないファイルはチェックの対象になりません。
vfast
はまず I/O を監視し(-o ss_steady_state=
オプションで設定した期間だけ),どのボリュームの I/O 負荷が最も高いかを調べます。
このユーティリティは次に,負荷のバランスを図るため高い負荷のボリュームからファイルを分散配置していきます。
しかし
topIObalance
オプションでは,ダイレクト I/O が有効になっているファイルは無視されます。
これは,これらのファイルへの I/O が
vfast
統計収集の対象とならないためです。
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
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
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
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
vfast
ユーティリティ (5.8 節) を実行していない場合,defragment
ユーティリティを実行してドメインのファイル断片化の量を軽減することができます (1.3.3 項)。
このユーティリティは,ファイルの連続性を高め,ファイル・エクステント数を減らすことにより,ドメインの断片化を減少させます。
ファイルが断片化すると,ファイルをアクセスするのに多数のディスク・アドレスをチェックしなければならなくなるため,断片化を解消することで読み書き性能が改善します。
さらに,ドメインの断片化解消によって,ディスク上の連続した空き領域も増えるので,それ以降に作成されるファイルも断片化が少なくなるという利点もあります。
フラグ・ファイルを有効にしたり無効にしたりすることで,ドメインの断片化を解消することもできます。
I/O 動作には影響しません。
vfast
ユーティリティは,オペレーティング・システムに対応して最適化され,バックグラウンドで動作するため,ドメインの断片化解消には,このユーティリティを使用することをお勧めします。
defragment
ユーティリティの動作効率は,これを実行する前にドメイン内の不要なファイルを削除することで向上します。
defragment
ユーティリティは,性能が低下したと実感した場合で,ファイル・システムへのアクセスがそれほどない場合にだけ使用してください。
showfile
コマンドを実行します。
特定のファイルを別のボリュームに移動したい場合は,migrate
コマンドを実行します。
ファイルの移動については,5.12 節を参照してください。
defragment
コマンドを実行します。
defragment
domain_name
defragment
ユーティリティは,vfast
,addvol
,rmvol
,balance
,または
rmfset
コマンドを同じドメインで実行しているときには実行できません。
defragment
ユーティリティは,ボリュームごとにスレッドを生成します (最大 20 スレッド)。
したがって,多数の小さなボリュームで構成されたドメインの断片化解消は,1 つの大きなボリュームで構成されたドメインを対象とする場合よりもより速く処理されます。
ただし,複数のスレッドで断片化を解消すると,実行中の I/O のスループットが大幅に低下する可能性もあります。
Version 4 のオペレーティング・システム・ソフトウェアの動作と同様に,1 つのスレッドだけでデフラグメント処理を実行するには,defragment
に
-N 1
オプションを指定して実行します。
defragment
コマンドに
-v
-n
オプションを指定して実行します。
エクステント数の平均や,断片化しているファイルあたりのエクステント数が高い場合,あるいは総合的な I/O 性能が低下している場合には,デフラグメント処理が役立つことがあります。
多くの場合,大規模な,かなり断片化されているファイルであっても,断片化による性能の著しい低下はありません。
ファイルの過剰な断片化による性能上の問題が発生していない場合には,defragment
コマンドを実行する必要はありません。
defragment
を実行する前に,/sbin/advfs/verify
コマンド (6.2.4 項) を実行することをお勧めします。
verify
コマンドは,ファイル・システムの負荷が低いときに実行してください。
defragment
を実行する前に
balance
ユーティリティを実行すると,デフラグメント処理が速くなる場合があります。
defragment
コマンドを実行するのは,ファイルセットのフラグ・ファイル
/mount_point/.tags/1
の著しい断片化が示された場合だけにしてください。
フラグ・ファイルの無効化については,5.2 節を参照してください。
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'
Extents
や
Avg exts per file w/extents
の値が減少している場合は,ファイル断片化状況が改善されていることを示しています。
また,Aggregate I/O perf
の値が増加している場合は,ファイル・エクステントの割り当ての全体的な効率が改善されていることを示しています。
defragment
(8)5.10 ファイルの断片化解消
vfast
ユーティリティが動作している間に,ファイルを個別に断片化解消できます。
showfile
コマンドに
-x
オプションを指定して実行します。
エクステントが多くある場合,次のいずれかを行なって断片化を解消します。
migrate
ユーティリティを使用して,対象のファイルを同じボリューム (または別のボリューム) 上で,十分な長さの連続する空き領域が存在する部分に移動します。
vdump
コマンドを使用してファイルをバックアップします。
vrestore
コマンドでデータを復元します。
vfast
ユーティリティ (5.8 節) を実行していない場合,balance
ユーティリティを使用して,マルチボリューム・ドメイン内のボリューム間で,使用スペースの割合を均等にすることができます。
これにより,性能を改善し,将来のファイル割り当てでスペースが均等に割り当てられるようになります。
vfast
ユーティリティで使用するプロセスと同じです。
通常,balance
ユーティリティではファイルを分割しないので,非常に大きなファイルのあるドメインでは,小さなファイルで構成されるドメインほど均等にはバランスがとれない場合があります。
balance
コマンドを使用します。
balance
domain_name
balance
ユーティリティは,vfast
,addvol
,rmvol
,defragment
,または
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 別のボリュームへのファイルの移動
balance
ユーティリティ,defragment
ユーティリティ,および
vfast
ユーティリティに
-o topIObalance=
オプションを指定して,ファイルを移動することができますが,対象ファイルまたはページ,およびその移動先を選択できるのは,migrate
ユーティリティだけです。
ファイル全体または特定のページを移動できます。
図 5-2
に ファイル A の移動の手順を示します。
このファイルを,ボリューム 1 からボリューム 2 に移動します。
migrate
コマンドに
-d
オプションを指定して実行します。
migrate -d
destination_vol_index filename
migrate
コマンドでは,指定したファイルの断片化を解消するように指定できます。
migrate
ユーティリティでは,どのファイルを断片化解消するように選択しても,それについて評価しません。
ストライプ化したファイル・セグメントを別のセグメントが存在するディスクに移動することもできますが,ストライプ化の目的は果たせなくなくなります。
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
注意
stripe
ユーティリティは,stripe
コマンドの構文を次に示します。
stripe -n volume_count filename
/etc/fstab
ファイルには使用できません。
rmvol
ユーティリティは,同じファイルのストライプ化セグメントを含んでいない他のボリュームへセグメントを移動します。
stripe
(8)5.14 新しいボリュームへのドメインとそのファイルセットの移動
iostat
ユーティリティを,SysMan Menu の「モニタリング/チューニング - 入出力 (I/O) 統計の参照」ユーティリティ (付録 Aを参照) から実行するか,コマンド行から実行します
(
iostat
(1)
vdump
コマンドを使用して,古いデバイスからファイルセットをコピーします。
さらに,vrestore
コマンドを使用して,コピーしたファイルセットを新たにマウントしたファイルセットにリストアします。
/etc/fstab
ファイルを編集する必要はありません。
古いドメインを削除します。
mkfdmn
(8)vdump
と
vrestore
ユーティリティは影響を受けません。
technical
のドメイン
accounts
をボリューム
dsk3c
へ移動しています。
new_accounts
は一時的なドメインで,最初に
/tmp-mnt
にマウントします。
このファイルセットは
/technical
にマウントされていると想定します。
また,/etc/fstab
ファイルには,システムを,/technical
の
accounts#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
AdvfsDomainPanicLevel
属性を使用して,ドメイン・パニックが発生した場合にクラッシュ・ダンプを作成するかどうかを選択します。
ドメイン・パニックの典型的な原因は,デバイスの I/O エラーによるものです。
AdvFS はメタデータを書き込めない場合,ドメインをパニック状態にします。
現在の実装では,このタイプの I/O エラーでは,システムがクラッシュしない限りクラッシュ・ダンプは作成されません。
sysconfig
(8)