9    ディスク・ストレージ性能の管理

ディスク・ストレージを管理する方法には,さまざまな方法があります。 性能と可用性のニーズに応じて,静的ディスク・パーティション,LSM (Logical Storage Manager),ハードウェア RAID,またはこれらの方法の組み合わせが使用できます。

ディスク・ストレージの構成は,システムの性能に大きく影響します。 これは,ディスクの入出力はファイル・システムの動作で使用され,また,ページングやスワッピングのために仮想メモリ・サブシステムでも使用されるためです。

この章で説明する構成やチューニング・ガイドラインに従ってチューニングすると,ディスク入出力の性能が改善できます。 内容は次のとおりです。

すべてのディスク・ストレージの構成に対してすべてのガイドラインがあてはまるとは限りません。 ガイドラインを適用する前に,1.8 節 で説明している作業負荷のリソース・モデルと,ガイドラインの利点と欠点を理解しておいてください。

9.1    ディスク入出力負荷の分散に関するガイドライン

ディスク入出力の負荷を複数のデバイスに分散させると,単一のディスク,コントローラ,バスなどがボトルネックになるという事態を避けることができます。 また,入出力の同時動作も可能になります。

たとえば,16 GB のディスク・ストレージを使用するとき,4 GB のディスク 4 台 よりも 1 GB のディスク 16 台の方が性能が良くなります。 これは,使用するドライブ (ディスク) が多いと同時に実行できる動作も多くなるためです。 ランダムな入出力動作では,4 台ではなく 16 台のディスクを同時にシークさせることができます。 大量のシーケンシャル・データ転送では,4 つのデータ・ストリームではなく 16 個のデータ・ストリームを同時に動作させることができます。

ディスク入出力の負荷を分散させる際には,次のガイドラインに従ってください。

ディスク入出力の分散状況をモニタリングする方法については,9.2 節 を参照してください。

9.2    ディスク入出力の分散状況のモニタリング

表 9-1 では,ディスク入出力が分散されているかどうかを調べるために使用できるコマンドについて説明しています。

表 9-1:  ディスク入出力の分散状況のモニタリング・ツール

ツール 説明 参照先

showfdmn

AdvFS ファイル・ドメインに関する情報を表示し,AdvFS ボリューム間でファイルが均等に分散されているかどうかを調べる。

11.2.2.3 項

advfsstat

AdvFS のファイル・ドメインおよびファイル・セットの使用状況に関する情報を表示して,ファイル・システム入出力が均等に分散されているかどうかを判断するために使用できる,AdvFS のファイル・ドメインおよびファイル・セットの統計情報を提供する。

11.2.2.1 項

swapon

スワップ領域の構成と使用状況に関する情報を表示する。 スワップ・パーティションごとに,割り当てられたスワップ領域の総容量,使用されているスワップ領域の容量,空きスワップ領域の容量が表示される。

12.3.3 項

volstat

LSM オブジェクトについて,性能統計情報を表示し,入出力の作業負荷の特性を調べて理解するために使用できる,LSM ボリュームおよびディスクの使用状況に関する情報を提供する。 この情報には読み取り/書き込み比率,平均転送サイズ,ディスク入出力が均等に分散されているか,などの情報が含まれる。

9.3 節または 『Logical Storage Manager

iostat

ディスク入出力の統計情報を表示し,どのディスクが最もよく使用されているかについての情報を提供する。

9.2.1 項

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 コマンドは,次のような場合に役に立ちます。

9.3    LSM を使用したストレージの管理

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 には,次のような,ライセンスを必要としない基本的なディスク管理機能があります。

以下の LSM 機能は,ライセンスを必要とします。

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 サブシステムは,すべて以下の機能を備えています。

9.4.2    ハードウェア RAID 製品

ハードウェア RAID サブシステムには何種類かのタイプがあり,性能や可用性のレベルに応じてさまざまなコストで実現できるようになっています。 HP では次のようなハードウェア RAID システムをサポートしています。

ハードウェア 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 節 を参照してください。

次に,ストライプ・サイズについてのガイドラインを示します。

たとえば,ストライプ・サイズを8 KB にすると,小規模なデータ転送はメンバ・ディスクに均等に分散されますが,64 KB のデータ転送は少なくとも 8 回のデータ転送に分割されます。

また,正しいストライプ・サイズを選択する際には,次のガイドラインが役に立ちます。

9.4.3.4    ストライプ・セットをミラーリングする

ストライプ・ディスクでは,ディスクの入出力負荷が分散されるため,入出力性能が向上します。 ただし,ストライピングを行うと,ディスクの 1 台に障害が発生しただけで,ストライプ・セット全体が使用できなくなるため,可用性が低下します。 ストライプ・セットの可用性を高めるには,ストライプ・セットをミラーリングします。

9.4.3.5    ライトバック・キャッシュを使用する

RAID サブシステムでは,標準機能またはオプション機能として,不揮発性 (バッテリ・バックアップ付き) のライトバック・キャッシュをサポートしています。 これにより,ディスクの入出力性能を改善でき,データの完全性も確保できます。 ライトバック・キャッシュにより,頻繁に書き込みを行うシステムや,RAID5 ストレージ・セットの性能が改善されます。 書き込みをほとんど行わないアプリケーションでは,ライトバック・キャッシュの効果はあまりありません。

ライトバック・キャッシュを使用すると,ディスクに書き込まれるデータは一時的にキャッシュに保存されてから,定期的にディスクに書き込まれる (フラッシュされる) ため効率を最大限に高めることができます。 複数のホストからの連続したデータ・ブロックの書き込みが単一のユニットに統合されるため,入出力の待ち時間が短縮されます。

ライトバック・キャッシュを使用すると,書き込みがただちに行われるように見えるため,特にインターネット・サーバの性能が向上します。 障害発生後の回復時に,RAID コントローラは,ライトバック・キャッシュ内でまだ書き込まれていないデータを検出し,そのデータをディスクに書き込み,その後で通常のコントローラ動作を開始します。

ライトバック・キャッシュは,データの紛失や破損を防ぐために無停電電源装置 (UPS) でバックアップする必要があります。

HSZ40,HSZ50,HSZ70,HSZ80 のいずれかの RAID コントローラでライトバック・キャッシュを使用している場合は,次のガイドラインで性能が改善されることがあります。

ライトバック・キャッシュの使用についての詳細は,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 および 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 サブシステム属性をいくつか変更することで,問題を解決できる可能性があります。