Oracle Exadataハードディスク・スクラブ機能



山本 武史

オラクル事業部
基盤技術担当

山本 武史

はじめに

はじめまして。NTTデータ先端技術の山本です。
私がOracle製品に出会ったのは2002年のFIFA日韓ワールドカップが開催されたときで、Oracle Databaseのバージョンで言うと8.1.7の頃です。当時はOracle製品のサポート担当として、日々プレッシャーと戦いながら問合せ対応を行っていました。その後、Oracle製品から少し離れた時期もありましたが、コラムのタイトルにありますように”オラクル好き”ということもあり、再びオラクルの世界に戻りました。今は、主にOracle Exadata Database Machine(以下、Exadata)をはじめとしたOracle製品のプリセールスから導入までを支援するエンジニアとして活動しています。

私は、本コラムの中でExadataのメンテナンス機能を何回かに分けてご紹介していきたいと思います。
Exadataのメンテナンス機能とは、Exadataがハードウェアやソフトウェアの最適化のために定期的にメンテナンスを実行してくれる機能のことを指しています。私がExadataの運用に関わったのはX4-2の頃ですが、現場にいると、まさに”事件は現場で起きている!!”といった印象でさまざまなトラブルに遭遇しました。Exadataはアプライアンス製品であり、ハードウェアとソフトウェアの両方からアラート通知を受けるため、受け取ったエラーの内容から障害の切り分けを行うには、ある程度の経験が必要だと思います。

今回はこれまでの経験から得た知識やノウハウをご紹介することで、少しでも皆さまのお役に立てれば幸いです。

概要

まず、第1回目は、Exadataのハードディスク・スクラブ機能(以下、スクラブ)についてご紹介したいと思います。
スクラブはストレージサーバーのディスク障害の検知と修復を行うExadataの機能で、ストレージサーバー単位で実施します。
Read/Writeしていないディスク領域も含めて検査してくれることもあり、ディスク全体の信頼性向上が図れます。

スクラブの概要は以下のとおりです。

  • 最小ソフトウェア要件 :
    • Oracle Database 11.2.0.4または12.1.0.2以上を実行するOracle Exadata Storage Server Software 11.2.3.3以上
  • ハードディスクがアイドル状態の時に、定期的かつ自動的にハードディスクを検査および修復します。
  • ハードディスクで不良セクターが検出されると、Exadataは自動的にOracleASMにリクエストを送信し、別のミラー・コピーからデータを読み取ることによって不良セクターを修復します。
  • スクラブ実行頻度は、daily(毎日) / weekly(毎週) / biweekly(隔週) / none(実行しない)の4種類です。

設定方法

スクラブの設定確認および変更手順の一例をご紹介します。(※1)

スクラブはデフォルトで2週間ごとに自動実行されるように設定されていますが、過去には性能遅延のトラブル時に同じ時間帯に実行されているスクラブの影響を疑うこともありましたので、いつスクラブが実行されているかを事前に確認しておくことが必要です。例えば、“スクラブカレンダー”を作成して、あらかじめスクラブが実行される日時を把握しておくとよいかもしれません。
なお、スクラブは実行日時の変更やスクラブ有効/無効をオンラインで実施可能ですので、OSやASM/DBインスタンスの再起動を心配する必要はありません。

1. ストレージサーバーの設定値を確認する

CellCLI>list cell attributes hardDiskScrubStartTime,hardDiskScrubInterval
1970-01-01T10:00:00+09:00      biweekly

2. 実行日時を 2017/4/11 18:00 の設定にする

CellCLI>ALTER CELL hardDiskScrubStartTime=\'2017-04-11T18:00:00+09:00\'
successfully altered

3. 実行間隔をdailyにする

CellCLI>ALTER CELL hardDiskScrubInterval=daily
successfully altered
CellCLI>list cell attributes hardDiskScrubStartTime,hardDiskScrubInterval
2017-04-11T18:00:00+09:00      daily 

4. スクラブの設定を無効化する

CellCLI>ALTER CELL hardDiskScrubInterval=none
successfully altered

CellCLI>list cell attributes hardDiskScrubStartTime,hardDiskScrubInterval
2017-04-11T18:00:00+09:00   none

5. スクラブを再開する

CellCLI>ALTER CELL hardDiskScrubStartTime=now
successfully altered

※1 Oracle Exadata Storage Server Softwareのバージョンによって管理コマンドが異なる可能性もありますので、詳細は、 マニュアル「Oracle Exadata Storage Server Softwareユーザーズ・ガイド」をご参照ください。

動作確認方法

スクラブがきちんと実行されたかの確認は、cellのアラートログ(/opt/oracle/cell/log/diag/asm/cell/<ホスト名>/trace/alert.log)で確認可能です。アラートログには、下図のようにBeginとFinishedの時間が記録されています。

スクラブ開始/終了メッセージ例/HCモデル8TB)

[開始Msg]

Mon Apr 17 18:00:09 2017 Begin scrubbing CellDisk:CD_01_xxxx

[終了Msg]

Tue Apr 18 07:00:10 2017 Finished scrubbing CellDisk:CD_01_xxxx, scrubbed blocks (1MB):3780032, found bad blocks:0

スクラブでハードディスクに不良セクター(bad block)が見つかった場合は、resilvering(再同期化)が行われ、ミラー化されている正常データから不良セクターを修復するようにASMインスタンスに自動的にリクエストを送信します。(※2)

過去実績では、自動修復でbad blockの修復が行われるケースが多かったですが、逆に同じblockに対して自動修復を何回か試みても修復されないケースもありました。このように、bad blockが繰り返し検出された場合には、ストレージサーバー・ソフトウェア側の判断により、実被害が出る前に該当ディスクをドロップ(=ディスクの交換)することがあります。(※3)このドロップ時にASMインスタンスの初期化パラメーター”asm_power_limit”の値が"1"以上ですと、通常のディスク・ドロップ時と同様にASMリバランスが走りますので、この点は運用上意識しておいたほうがよいですね。

bad block検出時のcell alert.log抜粋

Sun Jun 14 17:31:45 2015 
Read Error on Cell Disk CD_04_cell#027 (/dev/sde) at device offset 3960233525248 bytes with size 1048576 bytes (errno: Input/output error [5])
Read Error:Generic I/O error[201], on Grid Disk DATA_CD_04_cell#027 at grid disk offset 3960183193600 bytes with size 1048576 bytes from disk scrub 
Sun Jun 14 17:31:45 2015 
Published: 1 events ASM RESILVER diskgroup of opcode 9 for diskgroup DATA to: 
ClientHostName = xxxxxx, ClientPID = 25658 
Sun Jun 14 17:31:55 2015 
Finished scrubbing CellDisk:CD_08_cell#027, scrubbed blocks (1MB):3780032, found bad blocks:0 
Sun Jun 14 17:32:27 2015 
Finished scrubbing CellDisk:CD_04_cell#027, scrubbed blocks (1MB):3780032, found bad blocks:1★ 

※2 resilveringはASMインスタンスが必須となりますので、”asm_power_limit”の値は"1"以上に設定しておく必要がありますのでご注意ください。”asm_power_limit”の値が”0”ですと、resilveringがずっと待機状態になります。

※3 Oracle Exadata Storage Server Software 12.1.2.3.0からは、Adaptive Scrubbing Scheduleにより、ハードディスクに不良セクターが検出された場合、そのディスクに対して1週間以内に修正ジョブをスケジュールする新機能が追加されています。
詳細は以下のマニュアルをご確認ください。

スクラブ概算時間

スクラブ実行時間の目安を示します。以下はマニュアル「Oracle® Exadata Storage Server Softwareユーザーズ・ガイド」に記載されている時間ですが、実績値でも大体同じ時間で完了しています。

ディスク・タイプハードディスク容量修正の概算時間
高パフォーマンス(HPモデル)600GB1時間
高パフォーマンス(HPモデル)1.2TB2時間
大容量(HCモデル)2TB4時間40分
大容量(HCモデル)3TB6時間30分
大容量(HCモデル)4TB8時間
大容量(HCモデル)8TB13時間

※ Extreme Flash(EF)モデルではスクラブは動作しません。

最後に

スクラブは定期的かつ自動的にハードディスクを検査および修復してくれる機能であり、ディスクの信頼性向上のために使用することを推奨します。しかし、現場での経験上、スクラブを実行することで性能への懸念が必ず出てきますので、実装前に十分な検討や検証が必要であると考えます。以下では、実際の事例を交えながら、スクラブの性能への影響について、少し触れたいと思います。

私が担当した案件において、ある時、業務処理が通常より遅くなる事象が発生しました。事象発生時のAWRを確認したところ、該当SQLの”UserI/O Wait”が平常時よりも大きな値になっていることから、Exadataストレージサーバーの一時的な負荷増加により、遅延が発生したと判断しました。そして、負荷増加の原因としては、同じ時間帯に実行している処理がスクラブ以外にないことから、スクラブを疑いました。

スクラブは内部的にはI/Oリソース管理(IORM)を使用し、業務処理がスクラブの影響を受けないような仕様となっています。
ですが、スクラブ実行中に業務処理を動かす場合の性能影響はゼロではないため、性能要件がシビアなシステムでは、以下のような対策を実施することも有効であると考えます。上記の案件では、②の対策を行った結果、性能問題が発生しなくなりました。

  • ① 極力重要な業務処理が動いていない時間帯にスクラブを実行する
  • ② 一度にスクラブを実行するストレージサーバーの台数を減らすことにより、処理遅延の軽減を図る。(←ストレージサーバー毎に実行日時をずらす)

最後に、スクラブを実行することでのメリット・デメリットを纏めましたので、参考にしていただければと思います。
例えば、ASMが3冗長で、かつ性能要件がシビアなシステムではスクラブを行わないケースもありましたが、データロストは避けたところではありますので、安定運用のためには基本的にはスクラブは必要であると考えます。

 メリットデメリット
スクラブ実行あり
  • ディスクの信頼性の向上
    Read/Writeしていない領域も含めて定期的にスクラブすることでHDD障害を未然に防ぐことが可能
  • 業務処理(特にWrite)への性能影響はゼロではない
    ※ 運用開始前にスクラブを実行した状態での性能試験を実施することをお勧めします
スクラブ実行なし
  • パフォーマンスに対する影響(懸念)はなくなる
  • ASM冗長レベルが2冗長の場合、2重障害を検知できずデータロストする可能性がある
  • Read/Writeしていない領域の障害検知と自動修復ができなくなる

本コラムの内容やオラクル製品に関するご質問等については、画面右下にある「お問い合わせ」よりお問い合わせください。

番外編~私の散歩道~

今回、コラムのタイトルにちなんで、私のお気に入りの散歩道の一つである、横浜ドリームランドの跡地をご紹介したいと思います。
みなさん、横浜ドリームランドはご存知でしょうか?1964年に開園して、2002年に閉演した横浜市戸塚区の遊園地です。
地元では有名な「ヘイヘイおじさん」という名物キャラを生み出した遊園地でもあります。

当時の横浜ドリームランド(1983年撮影)

現在の横浜ドリームランドの跡地(2017年撮影)

横浜ドリームランドは遊園地だけでなく、ドライブインシアター(映画館)やボウリング場、冬にはスケートリンクもあり、子供から大人まで楽しめるまさに夢のような遊び場でした。大船駅から横浜ドリームランドまでを結ぶモノレールは、当時は画期的な乗り物でしたが、残念ながら技術的な問題ですぐに運休となってしまったため、結局1回も乗れませんでした・・。
遊園地が閉演した後は何ができるのだろう?と興味津々でしたが、今では公園や高校野球などで使用される野球場となっています。また、当時の横浜ドリームランドのランドマークであった五重塔のモチーフにしたホテル(旧ホテルエンパイア)は、建物をそのまま利用していて、今は横浜薬科大学の図書館が入っています。右の写真は、その図書館棟の最上階(21階展望ラウンジ)から撮影した写真です。
※ 元旦に一般開放されています。
天気の良い日には子供と跡地にできた公園に行って、自分が子供の頃に遊園地で遊んだことを少し思い出しながら、公園の近くの神社にいる鹿に「鹿せんべい」をあげるのが最近のマイブームです。



Oracle Exadataハードディスク・スクラブ機能