ディスク・ストレージを管理する方法には,さまざまな方法があります。 性能と可用性のニーズに応じて,静的ディスク・パーティション,LSM (Logical Storage Manager),ハードウェア RAID,またはこれらの方法の組み合わせが使用できます。
ディスク・ストレージの構成は,システムの性能に大きく影響します。 これは,ディスクの入出力はファイル・システムの動作で使用され,また,ページングやスワッピングのために仮想メモリ・サブシステムでも使用されるためです。
この章で説明する構成やチューニング・ガイドラインに従ってチューニングすると,ディスク入出力の性能が改善できます。 内容は次のとおりです。
入出力負荷の分散による,全体的なディスク入出力性能の改善 (9.1 節)
ディスク入出力の分散のモニタリング (9.2 節)
LSM 性能の管理 (9.3 節)
ハードウェア RAID サブシステムの性能の管理 (9.4 節)
CAM (Common Access Method) の性能の管理 (9.5 節)
すべてのディスク・ストレージの構成に対してすべてのガイドラインがあてはまるとは限りません。
ガイドラインを適用する前に,1.8 節
で説明している作業負荷のリソース・モデルと,ガイドラインの利点と欠点を理解しておいてください。
9.1 ディスク入出力負荷の分散に関するガイドライン
ディスク入出力の負荷を複数のデバイスに分散させると,単一のディスク,コントローラ,バスなどがボトルネックになるという事態を避けることができます。 また,入出力の同時動作も可能になります。
たとえば,16 GB のディスク・ストレージを使用するとき,4 GB のディスク 4 台 よりも 1 GB のディスク 16 台の方が性能が良くなります。 これは,使用するドライブ (ディスク) が多いと同時に実行できる動作も多くなるためです。 ランダムな入出力動作では,4 台ではなく 16 台のディスクを同時にシークさせることができます。 大量のシーケンシャル・データ転送では,4 つのデータ・ストリームではなく 16 個のデータ・ストリームを同時に動作させることができます。
ディスク入出力の負荷を分散させる際には,次のガイドラインに従ってください。
データまたはディスクをストライピングする
RAID0 (データまたはディスクのストライピング) を使用すると,データを効率的にディスク間に分散させることができます。 ストライピングの利点についての詳細は,11.2.1.5 項 を参照してください。 ストライピングしたディスク・アレイのディスク数が増えると,可用性が低下することに注意してください。
データをストライピングするには,LSM (9.3 節 参照) を使用します。 ディスクをストライピングするには,ハードウェア RAID サブシステム (9.4 節 参照) を使用します。
データまたはディスクのストライピングに対する代替方法として,AdvFS (Advanced File System) を使用して,ファイル・ドメイン内の複数のディスクにわたって個別のファイルをストライピングするという方法があります。 ただし,ディスクとその中のファイルを同時にストライピングしないでください。 詳細は,11.2 節 を参照してください。
RAID5 を使用する
RAID5 では,アレイ内の複数のディスクにディスク・データとパリティ・データを分散させて,データの可用性を高め,読み取りの性能を向上させます。 ただし,RAID5 を使用すると,障害のない状態で書き込みの性能が低下し,障害のある状態で読み取りと書き込みの性能が低下します。 RAID5 は主に読み取りを多用する構成で使用します。 ミラーリングに対するコスト効率の良い代替方法として,RAID5 を使用して,アクセス頻度の低いデータの可用性を高めることもできます。
RAID5 構成を実現するには,LSM (9.3 節 参照) またはハードウェア RAID サブシステム (9.4 節 参照) を使用します。
頻繁にアクセスされるファイル・システムを複数のディスク (できれば異なるバスおよびコントローラ) に分散させる
頻繁にアクセスされるファイル・システムを複数のディスク (できれば異なるバスおよびコントローラ) に分散させます。
実行可能ファイルや一時的ファイルを含むディレクトリ,すなわち
/var
,/usr
,/tmp
などは頻繁にアクセスされます。
できれば,/usr
と
/tmp
は異なるディスクに置いてください。
AdvFS の
balance
コマンドを使用すると,AdvFS ファイル・ドメイン内のディスク間で,使用される領域のバランスをとることができます。
詳細は,11.2.1.4 項
を参照してください。
スワップ入出力を複数のデバイスへ分散させる
ページングおよびスワッピングの効率を良くし,アダプタ,バス,ディスクのいずれもボトルネックにならないようにするには,スワップ領域を複数のディスクに分散させます。 同じディスクに複数のスワップ・パーティションを置かないでください。
また,LSM を用いてスワップ領域をミラーリングすることもできます。 詳細は,9.3 節 を参照してください。
スワップ・デバイスを構成して性能を高める方法の詳細については,12.2 節 を参照してください。
ディスク入出力の分散状況をモニタリングする方法については,9.2 節
を参照してください。
9.2 ディスク入出力の分散状況のモニタリング
表 9-1
では,ディスク入出力が分散されているかどうかを調べるために使用できるコマンドについて説明しています。
表 9-1: ディスク入出力の分散状況のモニタリング・ツール
ツール | 説明 | 参照先 |
|
AdvFS ファイル・ドメインに関する情報を表示し,AdvFS ボリューム間でファイルが均等に分散されているかどうかを調べる。 |
|
|
AdvFS のファイル・ドメインおよびファイル・セットの使用状況に関する情報を表示して,ファイル・システム入出力が均等に分散されているかどうかを判断するために使用できる,AdvFS のファイル・ドメインおよびファイル・セットの統計情報を提供する。 |
|
|
スワップ領域の構成と使用状況に関する情報を表示する。 スワップ・パーティションごとに,割り当てられたスワップ領域の総容量,使用されているスワップ領域の容量,空きスワップ領域の容量が表示される。 |
|
|
LSM オブジェクトについて,性能統計情報を表示し,入出力の作業負荷の特性を調べて理解するために使用できる,LSM ボリュームおよびディスクの使用状況に関する情報を提供する。 この情報には読み取り/書き込み比率,平均転送サイズ,ディスク入出力が均等に分散されているか,などの情報が含まれる。 |
9.3 節または 『Logical Storage Manager』 |
|
ディスク入出力の統計情報を表示し,どのディスクが最もよく使用されているかについての情報を提供する。 |
9.2.1 iostat コマンドによるディスク使用状況の表示
最良の性能を得るには,ディスク間でディスク入出力を均等に分散させなければなりません。
iostat
コマンドを使用すると,どのディスクが最も頻繁に使用されているかを調べることができます。
このコマンドは,端末および CPU の統計情報の他に,ディスク入出力に関する統計情報も表示します。
iostat
コマンドの例を次に示します。
出力は 1 秒間隔で表示されます。
# /usr/ucb/iostat 1 tty floppy0 dsk0 dsk1 cdrom0 cpu tin tout bps tps bps tps bps tps bps tps us ni sy id 1 73 0 0 23 2 37 3 0 0 5 0 17 79 0 58 0 0 47 5 204 25 0 0 8 0 14 77 0 58 0 0 8 1 62 1 0 0 27 0 27 46
iostat
コマンドの出力では,次のような情報が表示されます。
iostat
コマンド出力の最初の行は,ブート時からの平均です。
その後には,一定の時間間隔で最新の情報が表示されます。
各ディスクの欄 (dskn
) には,1 秒あたりの転送 KB 数 (bps
) と,1 秒あたりの転送回数 (tps
) が表示されます。
システムの欄 (cpu
) には,ユーザ状態において省略時の優先順位または高い優先順位 (preferred) で CPU が動作した時間 (us
),ユーザ・モードにおいて低い優先順位 (less favored) でプロセスが実行された時間 (ni
),システム・モードの時間 (sy
),アイドル・モードの時間 (id
) の割合が表示されます。
この情報により,ディスク入出力がどの程度 CPU 時間に影響しているかがわかります。
ユーザ・モードには,CPU がライブラリ・ルーチンを実行した時間も含まれます。
システム・モードには,CPU がシステム・コールを処理した時間も含まれます。
iostat
コマンドは,次のような場合に役に立ちます。
使用頻度の最も高いディスクと最も低いディスクを見つける場合。
この情報は,ファイル・システムとスワップ領域をどのように分散させるかを判断する際に役に立ちます。
swapon -s
コマンドを使用すると,どのディスクがスワップ領域として使用されているかが分かります。
システムがディスク多用型であるかどうかを調べる場合。
iostat
コマンドの出力で,ディスクのアクティビティが多く,システムのアイドル時間の割合が高いことが示されている場合は,そのシステムはディスク多用型である可能性があります。
ディスク入出力の負荷バランスの調整,ディスクの断片化の解消,ハードウェアのアップグレードなどを行わなければならない可能性があります。
アプリケーションが効率的に作成されているかどうかを調べる場合。
ディスクの転送回数 (「tps
」フィールド) が多いが,データの読み取りと書き込みの量 (「bps
」フィールド) が少ない場合は,アプリケーションがディスク入出力をどのように行っているか調べてください。
アプリケーションが大量の入出力操作を行って少量のデータだけを処理している可能性があります。
このような動作が必要でなければ,アプリケーションを作り直してください。
LSM (Logical Storage Manager) を使用すると,柔軟なストレージ管理,ディスク入出力性能の改善,データの高可用性を,少しのオーバヘッドで実現できます。 どのようなタイプのシステムでも LSM による効果がありますが,大量のディスクを備えた構成や,定期的に記憶域を追加していく構成には特に適しています。
LSM を使用すると,複数のディスクからなる記憶域のプールを設定できます。 これらのディスク・グループから,仮想ディスク (LSM ボリューム) を作成し,それをディスク・パーティションと同じように使用することができます。 UFS または AdvFS ファイル・システムをボリューム上に作成したり,ボリュームを raw デバイスとして使用したり,RAID ストレージ・セット上にボリュームを作成することができます。
LSM ボリュームと物理ディスクの間には直接的な関係がないので,複数のディスクをまたいでファイル・システムや raw 入出力を作成することができます。 ディスクをディスク・グループに追加/削除したり,入出力の負荷のバランスを調整したり,他のストレージ管理作業を実行することは簡単にできます。
さらに,RAID 技術を使用すると,LSM の性能と可用性が向上します。
LSM はソフトウェア RAID
と呼ばれることがよくあります。
LSM 構成は,ハードウェア RAID サブシステムよりコスト効率が良く,より単純です。
LSM RAID 機能を使用するためには別途ライセンスが必要なので注意してください。
9.3.1 LSM の機能
LSM には,次のような,ライセンスを必要としない基本的なディスク管理機能があります。
ディスク連結機能により,複数のディスクから 1 つの大きなボリュームを作成できます。
負荷バランス調整機能により,データを透過的に複数のディスクに分散できます。
構成データベースの負荷バランス調整機能により,人手を介さずに,最適な数の LSM 構成データベースを適切な位置に自動的に配置できます。
volstat
コマンドを使用すると,LSM の詳細な性能情報を表示できます。
以下の LSM 機能は,ライセンスを必要とします。
RAID0 (ストライピング) は,アレイ内のディスクにデータを分散させます。 ストライピングは,大量のデータを高速に転送したい場合に効果があります。 また,複数ユーザのアプリケーションからの入出力負荷を複数のディスクに均等に分散させることができます。 LSM ストライピングでは,CPU に負担を少しかけるだけで,入出力の性能が大きく改善されます。
RAID1 (ミラーリング) は,データのコピーを複数のディスクに保存し,ディスクが 1 台故障しただけでデータが使用不可能にはならないようにします。
RAID5 (パリティ RAID) は,パリティを持つことでデータの可用性を高め,データとパリティをアレイ内のディスクに分散させます。
ルート・ファイル・システムとスワップ領域をミラーリングすることで,可用性を改善できます。
ホット・スペア・サポートを使用すると,ミラーリングまたは RAID5 のオブジェクトで入出力の障害が発生した場合に自動的に対処することができます。 これは,影響を受けるオブジェクトをスペア・ディスクまたは他の空き領域に再配置することで行います。
ダーティ・リージョン・ロギング (DRL) は,システムに障害が発生した後のミラー・ボリュームの回復時間を短縮します。
グラフィカル・ユーザ・インタフェース (GUI) を使用すると,ディスク管理が簡単に実行でき,詳細な性能情報を得ることができます。
LSMの性能を最良の状態にするには,『Logical Storage Manager』 で説明している構成とチューニングのガイドラインに従がってください。
9.4 ハードウェア RAID サブシステムの性能の管理
ハードウェア RAID サブシステムは,高性能で高可用性の RAID 機能を実現し,CPU のディスク入出力オーバヘッドを軽減し,1 本 (場合によっては複数本) の入出力バスに多数のディスクを接続可能にします。 ハードウェア RAID サブシステムには,性能や可用性の機能が異なる種々のタイプがありますが,いずれのタイプにも RAID コントローラ,筐体に組み込まれたディスク,ケーブル配線,ディスク管理ソフトウェアが含まれます。
RAID ストレージ・ソリューションには,低価格のバックプレーン RAID アレイ・コントローラから,クラスタ機能を備え,広範囲にわたる性能と可用性機能 (ライトバック・キャッシュや構成要素の完全な冗長性など) を持つ RAID アレイ・コントローラまであります。
ハードウェア RAID サブシステムでは,RCU (RAID Configuration Utility) や SWCC (StorageWorks Command Console) ユーティリティなどのディスク管理ソフトウェアを使用して,RAID デバイスを管理します。 メニュー方式のインタフェースを使用して,RAID のレベルを選択できます。
ハードウェア RAID を使用して複数のディスクを 1 台のストレージ・セットとして連結し,システムがそれを 1 台のユニットとして認識するようにします。 ストレージ・セットは,ディスクの単純なセット,ストライプ・セット,ミラー・セット,RAID セットのいずれかで構成できます。 ストレージ・セット上に LSM ボリューム,AdvFS ファイル・ドメイン,または UFS ファイル・システムを作成したり,ストレージ・セットを raw デバイスとして使用することができます。
以降の項では,次の RAID ハードウェアのトピックについて説明します。
構成情報についての詳細は,ハードウェア RAID 製品のマニュアルを参照してください。
9.4.1 ハードウェア RAID 機能
ハードウェア RAID ストレージ・ソリューションには,低価格のバックプレーン RAID アレイ・コントローラから,クラスタ機能を備え,広範囲にわたる性能と可用性機能を持つ RAID アレイ・コントローラまであります。 ハードウェア RAID サブシステムは,すべて以下の機能を備えています。
CPU のディスク入出力オーバヘッドを軽減する RAID コントローラ
ディスク・ストレージ容量の増強
ハードウェア RAID サブシステムを使用すると,大量のディスクを 1 本 (場合によっては複数本) の入出力バスに接続できます。 一般的なストレージ構成では,入出力バス・スロットにインストールされたホスト・バス・アダプタにバスを接続して,ディスク・ストレージ・シェルフをシステムに接続します。 ただし,SCSI バスに接続できるディスクの数は限られており,システムの入出力バス・スロットの数も限られています。
これに対して,ハードウェア RAID サブシステムには複数の内部 SCSI バスがあり,1 本の入出力バス・スロットを用いてシステムに接続できます。
読み取りキャッシュ
読み取りキャッシュは,ホストが要求すると予想されるデータを保持しておくことで,入出力の読み取り性能を改善します。 システムが読み取りキャッシュ内にすでにあるデータを要求した場合 (キャッシュ・ヒット),データはただちに渡され,ディスクからは読み取られません。 データが変更されると,ディスクと読み取りキャッシュの両方に書き込まれます (ライトスルー・キャッシュ)。
ライトバック・キャッシュ
ハードウェア RAID サブシステムはライトバック・キャッシュを (標準またはオプションの機能として) サポートしています。 これにより,入出力の書き込み性能が向上し,同時にデータの完全性も維持されます。 ライトバック・キャッシュは多数の小規模な書き込みの待ち時間を短縮し,書き込みがただちに行われるように見せることで,インターネット・サーバの性能を改善します。 書き込みをほとんど行わないアプリケーションでは,ライトバック・キャッシュのメリットはありません。
ライトバック・キャッシュを使用すると,ディスクに書き込まれるデータは一時的にキャッシュに保存され,統合されてから定期的にディスクに書き込まれる (フラッシュされる) ため最高の効率を実現できます。 複数のホストからの連続したデータ・ブロックの書き込みが単一のユニットに統合されるため,入出力の待ち時間が短縮されます。
ライトバック・キャッシュは,データの損失や破損を防ぐために無停電電源装置 (UPS) でバックアップしなければなりません。
RAID サポート
ハードウェア RAID サブシステムは,RAID0 (ディスクのストライピング),RAID1 (ディスクのミラーリング),RAID5 をサポートしています。 高性能の RAID アレイ・サブシステムでは,RAID3 と動的パリティ RAID もサポートしています。 RAID レベルについての詳細は,1.3.1 項 を参照してください。
非 RAID ディスク・アレイ機能または「単なるディスクの集まり」(JBOD: just a bunch of disks)
構成要素のホット・スワッピングとホット・スペアリング
ホット・スワップ機能を使用すると,システムを稼働させたまま,故障した構成要素を交換できます。 ホット・スペア機能を使用すると,障害が発生した場合に,あらかじめインストールしておいた構成要素に自動的に切り替えることができます。
管理とモニタリングを簡単にするグラフィカル・ユーザ・インタフェース (GUI)
ハードウェア RAID サブシステムには何種類かのタイプがあり,性能や可用性のレベルに応じてさまざまなコストで実現できるようになっています。 HP では次のようなハードウェア RAID システムをサポートしています。
バックプレーン RAID アレイ・ストレージ・サブシステム
RAID Array 230/Plus ストレージ・コントローラを利用しているような,エントリ・レベルのサブシステムは,低コストのハードウェア RAID ソリューションであり,小〜中規模の部門およびワークグループ用に設計されています。
バックプレーン RAID アレイ・ストレージ・コントローラは,PCI バス・スロットにインストールされており,ホスト・バス・アダプタと RAID コントローラの両方の働きをします。
バックプレーン RAID アレイ・サブシステムには,RAID 機能 (0,1,0+1,5),オプションのライトバック・キャッシュ,およびホット・スワップ機能があります。
高性能の RAID アレイ・サブシステム
このサブシステムには RAID Array 450 サブシステムなどがあり,広範囲の性能と可用性機能を備えており,クライアント/サーバ,データ・センター,中〜大規模の部門用に設計されています。
HSZ80 コントローラのような高性能の RAID アレイ・コントローラは,ultrawide のディファレンシャル SCSI バスと,入出力バス・スロットにインストールされた高性能のホスト・バス・アダプタによってシステムに接続されます。
高性能の RAID アレイ・サブシステムは,RAID 機能 (0,1,0+1,3,5,動的パリティ RAID),デュアル冗長コントローラのサポート,スケーラビリティ,ストレージ・セットのパーティショニング,標準 UPS ライトバック・キャッシュ,ホット・スワップ可能な構成要素を備えています。
ESA (Enterprise Storage Arrays)/MSA (Modular storage array)
RAID Array 12000 などの設定済みの高性能ハードウェア RAID サブシステムであり,最高の性能,可用性,RAID サブシステムのディスク容量を備えています。 これらは,高度なトランザクション指向アプリケーションや高帯域幅の意思決定サポート・アプリケーションで使用されます。
ESA は,動的パリティ RAID を含め主要な RAID レベルすべて,ホット・スワップが可能な完全冗長構成要素,標準 UPS ライトバック・キャッシュ,集中型ストレージ管理をサポートしています。
ハードウェア RAID サブシステム機能についての詳細は,『Logical Storage Manager Version 5.1B QuickSpecs』を参照してください。
9.4.3 ハードウェア RAID 構成のガイドライン
表 9-2
に,ハードウェア RAID サブシステムの構成ガイドラインを示し,性能上の利点と欠点をリストします。
表 9-2: ハードウェア RAID サブシステムの構成のガイドライン
ガイドライン | 性能上の利点 | 欠点 |
ストレージ・セット内のディスクを複数のバスに均等に分散させる (9.4.3.1 項)。 | 性能が向上しボトルネックを防げる。 | なし |
各ストレージ・セットで,同じデータ容量のディスクを使用する (9.4.3.2 項)。 | ストレージ管理が簡単になる。 | なし |
適切なストライプ・サイズを使用する (9.4.3.3 項)。 | 性能が向上する。 | なし |
ストライプ・セットをミラーリングする (9.4.3.4 項)。 | 可用性が向上し,ディスクの入出力負荷が分散される。 | 構成の複雑さが増し,書き込み性能が低下するおそれがある。 |
ライトバック・キャッシュを使用する (9.4.3.5 項)。 | 特に RAID5 ストレージ・セットの書き込み性能が向上する。 | ハードウェアのコスト |
デュアル冗長 RAID コントローラを使用する (9.4.3.6 項)。 | 性能と可用性が向上し,入出力バスのボトルネックを防止できる。 | ハードウェアのコスト |
スペア・ディスクをインストールする (9.4.3.7 項)。 | 可用性が向上する。 | ディスクのコスト |
障害が発生したディスクをすぐに交換する (9.4.3.7 項)。 | 性能が向上する。 | なし |
以降の項では,これらのガイドラインについて説明します。
構成についての詳細は,RAID サブシステムのマニュアルを参照してください。
9.4.3.1 ストレージ・セットのディスクをバス間に分散させる
ストレージ・セットのディスクを複数のバスに均等に分散させると,性能が向上し,ボトルネックを防ぐことができます。
また,ミラーリングした各セットの最初のメンバは,必ず別々のバスに置くようにしてください。
9.4.3.2 同じデータ容量のディスクを使用する
同じ容量のディスクをストレージ・セット内で使用します。
これにより,ストレージ管理が簡単になり,無駄なディスク・スペースが削減できます。
9.4.3.3 正しいハードウェア RAID ストライプ・サイズを選択する
最高の性能が得られるようにストライプ (チャンク) サイズを選択するには,まず,アプリケーションがディスク入出力をどのように実行するかを把握しなければなりません。 システムのリソース・モデルを把握する方法についての詳細は,1.8 節 を参照してください。
次に,ストライプ・サイズについてのガイドラインを示します。
ストライプ・サイズが,平均的な入出力サイズに比べて大きい場合,ストライプ・セット内の各ディスクは個別のデータ転送に応えることができます。 その後,入出力動作を並列に実行できるため,シーケンシャル書き込みの性能とスループットが向上します。 これにより,大量の入出力動作を実行する環境 (トランザクション処理,オフィス・オートメーション,ファイル・サービス環境など),および複数のランダムな読み書きを実行する環境での性能を改善することができます。
ストライプ・サイズが,平均的な入出力サイズに比べて小さい場合,1 つの入出力動作を複数のディスクで同時に処理できるため,帯域幅が拡大されシーケンシャル・ファイルの処理が改善されます。 これは,画像処理やデータ収集の環境に有効です。 ただし,ストライプ・サイズを小さくしすぎて,大規模なシーケンシャル・データ転送の性能が低下しないように注意してください。
たとえば,ストライプ・サイズを8 KB にすると,小規模なデータ転送はメンバ・ディスクに均等に分散されますが,64 KB のデータ転送は少なくとも 8 回のデータ転送に分割されます。
また,正しいストライプ・サイズを選択する際には,次のガイドラインが役に立ちます。
raw ディスクの入出力操作
アプリケーションが,ファイル・システムではなく raw デバイスへの入出力を行っている場合は,1 回のデータ転送がメンバ・ディスク間に均等に分散されるようなストライプ・サイズを使用してください。 たとえば,典型的な入出力サイズが 1 MB で,アレイ内に 4 つのディスクがある場合,ストライプ・サイズを 256 KB にします。 これにより,データは 4 台のメンバ・ディスクに均等に分散され,それぞれのディスクが 256 KB のデータ転送を 1 回ずつ,並行して行うことになります。
小規模ファイル・システムの入出力操作
小規模ファイル・システムの入出力操作では,典型的な入出力サイズの倍数 (たとえば,入出力サイズの 4,5 倍) のストライプ・サイズを使用します。 これにより,入出力が複数のディスクに分割されないようになります。
ブロックの特定の範囲に対する入出力
ブロックの特定範囲がボトルネックにならないようなストライプ・サイズを選択します。 たとえば,アプリケーションが特定の 8 KB ブロックを頻繁に使用する場合,8 KB より少し大きいまたは小さいストライプ・サイズを使用するか,または 8 KB の倍数のサイズを使用して,データが強制的に他のディスクに入るようにします。
ストライプ・ディスクでは,ディスクの入出力負荷が分散されるため,入出力性能が向上します。
ただし,ストライピングを行うと,ディスクの 1 台に障害が発生しただけで,ストライプ・セット全体が使用できなくなるため,可用性が低下します。
ストライプ・セットの可用性を高めるには,ストライプ・セットをミラーリングします。
9.4.3.5 ライトバック・キャッシュを使用する
RAID サブシステムでは,標準機能またはオプション機能として,不揮発性 (バッテリ・バックアップ付き) のライトバック・キャッシュをサポートしています。 これにより,ディスクの入出力性能を改善でき,データの完全性も確保できます。 ライトバック・キャッシュにより,頻繁に書き込みを行うシステムや,RAID5 ストレージ・セットの性能が改善されます。 書き込みをほとんど行わないアプリケーションでは,ライトバック・キャッシュの効果はあまりありません。
ライトバック・キャッシュを使用すると,ディスクに書き込まれるデータは一時的にキャッシュに保存されてから,定期的にディスクに書き込まれる (フラッシュされる) ため効率を最大限に高めることができます。 複数のホストからの連続したデータ・ブロックの書き込みが単一のユニットに統合されるため,入出力の待ち時間が短縮されます。
ライトバック・キャッシュを使用すると,書き込みがただちに行われるように見えるため,特にインターネット・サーバの性能が向上します。 障害発生後の回復時に,RAID コントローラは,ライトバック・キャッシュ内でまだ書き込まれていないデータを検出し,そのデータをディスクに書き込み,その後で通常のコントローラ動作を開始します。
ライトバック・キャッシュは,データの紛失や破損を防ぐために無停電電源装置 (UPS) でバックアップする必要があります。
HSZ40,HSZ50,HSZ70,HSZ80 のいずれかの RAID コントローラでライトバック・キャッシュを使用している場合は,次のガイドラインで性能が改善されることがあります。
CACHE_POLICY
に B を設定する
CACHE_FLUSH_TIMER
を最小の 45 (秒) にする
各ユニットに対してライトバック・キャッシュ (WRITEBACK_CACHE
) を有効にし,MAXIMUM_CACHED_TRANSFER_SIZE
の値を最小の 256 にする
ライトバック・キャッシュの使用についての詳細は,RAID サブシステムのマニュアルを参照してください。
9.4.3.6 デュアル冗長コントローラを使用する
RAID システムでデュアル冗長コントローラがサポートされていれば,デュアル冗長コントローラ構成を使用して,2 つのコントローラにディスクを分散させてバランスをとることができます。
これにより性能が改善され,可用性も高くなり,入出力バスのボトルネックも防止できます。
9.4.3.7 破損したディスクをスペア・ディスクと交換する
あらかじめ,スペア・ディスクを別のコントローラ・ポートとストレージ・シェルフにインストールします。
これによりデータの可用性が維持され,ディスクに障害が発生してもすぐに回復できます。
9.5 CAM 性能の管理
CAM (Common Access Method) は,オペレーティング・システムとハードウェアの間のインタフェースです。 CAM は,入出力の実行に使用するバッファのプールを管理しています。 各バッファの物理メモリ・サイズは,約 1 KB です。 これらのプールをモニタリングして,必要に応じてチューニングしてください。
次のような
io
サブシステム属性を変更すると,CAM 性能が向上する可能性があります。
cam_ccb_pool_size
--
ブート時点での,バッファ・プール空きリストの初期サイズ。
省略時の値は 200 です。
cam_ccb_low_water
--
プールの空きリストにおいて,カーネルからバッファの追加割り当てが発生するバッファ数。
CAM はこれだけの数のバッファを予約することで,暴走したプロセスをカーネルがシャットダウンするためのメモリを確保します。
省略時の値は 100 です。
cam_ccb_increment
--
バッファ・プールの空きリストに追加される,または削除されるバッファ数。
バッファは,要求をただちに処理するために必要に応じて割り当てられますが,解放は,スパイクから保護するために慎重に行われます。
省略時の値は 50 です。
システムの入出力パターンが,入出力動作が断続的に多発する傾向にある場合 (入出力スパイク) は,cam_ccb_pool_size
および
cam_ccb_increment
属性の値を大きくすると,性能が改善されることがあります。
dbx
を用いて,raw ディスク入出力に使用されるバッファ構造体プールの統計情報を保持している
ccmn_bp_head
データ構造体を調べると,CAM の性能に関する問題を診断できることがあります。
表示される情報は,バッファ構造体プールの現在のサイズ (num_bp
) と,バッファ待ちの回数 (bp_wait_cnt
) です。
例:
# /usr/ucb/dbx -k /vmunix /dev/mem (dbx) print ccmn_bp_head struct { num_bp = 50 bp_list = 0xffffffff81f1be00 bp_wait_cnt = 0 } (dbx)
bp_wait_cnt
フィールドの値が 0 でない場合は,CAM のバッファ・プール領域を使いきってしまった状態が発生しています。
この状態が続く場合,ここで説明した CAM サブシステム属性をいくつか変更することで,問題を解決できる可能性があります。