Comments
Description
Transcript
JPEG in Word > PDF
ベ ス ト プラ ク ティ ス ガイド Oracleデータベース用ニンブルストレージ (Oracle Linux & RHEL 6) ベストプラクティスガイド:ORACLE用ニンブルストレージ 1 改訂履歴 表1. 日付 リビジョン 説明 2012/1/9 1.0 最初のドラフト 2013/7/2 1.1 改訂 2014/3/12 1.2 iSCSI設定を改訂 この技術資料は情報提供のみを目的としており、誤植や技術的に不正確な記述が含まれること があります。内容は現状通りとし、明示的および暗黙的な保証は一切ありません。 ニンブルストレージ:All rights reserved.ニンブル社の明示的な書面による許可なく本資料を いかなる方法でも複製することは、固く禁じられています。 ベストプラクティスガイド:ORACLE用ニンブルストレージ 2 目次 はじめに ........................................................................................ 4 対象読者 ........................................................................................ 4 範囲 ............................................................................................ 4 ニンブルストレージの機能 ........................................................................ 5 ニンブルストレージを使用したOracle Linux上のOracleデータベース .................................. 6 パフォーマンス設定 .............................................................................. 6 ニンブル推奨設定 ................................................................................ 7 OLTP作業設定 ................................................................. 7 DSS負荷設定 ................................................................. 13 ベストプラクティスガイド:ORACLE用ニンブルストレージ 3 はじめに 本技術ホワイトペーパーの目的は、Oracle LinuxまたはRed Hat Linuxオペレーティングシステム上で稼働する ニンブルストレージ上のOracleデータベースのチューニングを順を追って説明することです。 対象読者 本ガイドは、ニンブルストレージ上の堅牢なデータベースの解析、設計、および維持を行うOracleデータベース ソリューション設計者、ストレージエンジニアおよびシステム管理者を対象としています。読者は、iSCSI SAN ネットワーク設計とニンブルストレージの基本的な操作に関する実際的な知識を持っていることを前提とします。 Oracle Linuxオペレーティングシステム、Oracle Clusterware、およびOracleデータベースの知識も必要です。 範囲 新しいOracleデータベースの設計段階では、DBA(データベース管理者)とストレージ管理者は協力して最適なス トレージニーズを考えることがよくあります。多くのストレージ構成オプションを考慮して、高いパフォーマン スと高可用性を実現しなければなりません。ディスクドライブ、ホストバスアダプター(HBA)、およびスイッチ の故障からデータを保護するために、さまざまなRAIDレベルや複数パスを使用することを考慮する必要がありま す。パフォーマンスを高めるために異なるRAIDレベルを併用すると、TCOも増加する傾向があります。たとえば、 OLTP負荷のレイテンシーを低く抑えながら特定のIOPSを維持するためには、DBAはRAID 10の15Kディスクドライ ブがいくつか必要になります。必要なIOPSの数が大きいほど、15Kドライブも多く必要になります。その理由は、 機械式ディスクドライブにはシーク時間と転送時間が必要なため、許容できるレイテンシーで必要なIOPSを処理 するためには、より多くのディスクドライブが必要になるからです。このため、時間の経過とともにTCOが大幅 に増加します。データベース容量は小規模だが必要なIOPSが高い場合には、SANの中に無駄なスペースが多くで きてしまうことは言うまでもありません。 このホワイトペーパーでは、ニンブルのテクノロジーと、Oracle環境のTCOを抑えながら必要なパフォーマンス を達成する方法について説明します。また、Oracleデータベースをニンブルストレージに実装するためのベスト プラクティスについても解説します。 ベストプラクティスガイド:ORACLE用ニンブルストレージ 4 ニンブルストレージの機能 Cache Accelerated Sequential Layout (CASL™) ニンブルストレージアレイは、効率を最大化するように基礎から設計された、業界最初の革新的なフ ラッシュストレージです。CASLは、フラッシュを読み込みキャッシュとして使用し、書き込みを最適化 するデータレイアウトと組み合わせることによってアプリケーションを高速化します。高いパフォーマ ンスと容量の削減、アレイに統合されたデータ保護、および容易なライフサイクル管理を提供します。 フラッシュベースの動的キャッシュ アクティブな“ホット”データのコピーやメタデータを読み込み用のフラッシュドライブにキャッシュ することによって、アプリケーションデータへのアクセスを高速化します。顧客は高い読み込みスルー プットと低いレイテンシーというメリットを得ます。 書き込みを最適化するデータレイアウト ホストによって書き込まれるデータは、まず連続したかたまりとしてまとめられ、その後チェックサム とRAIDパリティ情報とともに、ディスクプールにフルストライプとしてシーケンシャルに書き込まれま す。CASLのスウィーピング処理は解放されたディスクスペースを将来のシーケンシャル書込み用に連続 した領域にまとめます。顧客は高速なミリ秒以下の書込みと非常に効率的なディスク使用というメリッ トを得ます。 インラインの全体的な圧縮 効率的な可変ブロック圧縮アルゴリズムを使用して、全てのデータを保存前にインライン圧縮します。 レイテンシーを増加させることなく、保存できるデータの量を30から75パーセント増加させます。顧客 はパフォーマンスにまったく影響を与えることなく、はるかに多くのディスク容量を得ることができま す。 インスタントポイント・イン・タイムのスナップショット ポイント・イン・タイムのコピーの取得であり、それ以降データが変更されたときにデータを移動する 必要がありません(リダイレクトオンライト)。データ移動なしの高速なリストア。顧客は、本番デー タおよびバックアップデータ用の単一で簡潔なストレージソリューション、頻繁かつ瞬時のバックアッ プ、高速リストアおよび大幅な容量削減というメリットを得ます。 効率的な統合レプリケーション 既定のスケジュールに従って圧縮された変更データをレプリケートするだけで、データのコピーをセカ ンダリシステムに維持します。WANレプリケーションの帯域幅コストを削減し、手ごろで管理しやすい障 害回復ソリューションを展開します。 ゼロコピー・クローン ボリュームの、完全に機能するコピーすなわちクローンを瞬時に作成します。顧客は、クローンのボ リュームで高いスペース効率とパフォーマンスを得られ、テスト、開発、およびOracleデータベースの ステージングに最適です。 ベストプラクティスガイド:ORACLE用ニンブルストレージ 5 ニンブルストレージを使用したOracle Linux上のOracleデータベース Oracle RACデータベース ニンブルストレージCSシリーズ ブートボリューム Oracleおよびグリッドインフ (サーバごとに1つ) ラストラクチャソフトウェア (サーバごとに1つ) Oracle • • • ASMディスクグループ(ボリューム数) OCR /投票ディスクグループ(1) データディスクグループ(8) フラッシュリカバリー領域ディスクグループ(4) RACを含むOracleデータベースをOracle Linuxで実行するためのベストプラクティスを考える場合、考慮すべき 事項には、パフォーマンス、データ保護、および効率性などがあります。特に、テストと開発に関して重要です。 この文書では、Oracle ASMでのパフォーマンス設定およびボリューム設定を含むベストプラクティスを説明しま す。 パフォーマンス設定 OracleデータベースをLinux上で実行する場合、最高のパフォーマンスと稼働時間を得るために微調整が必要な オペレーティングシステムの設定が数多くあります。しかし、すべての設定がOracleデータベースのパフォーマ ンスを改善するわけではありません。データベースのパフォーマンスを最高にするためには、検討すべき多くの 要素があります。このような要素には、以下のようなものがありますがこれに限りません。 アプリケーションはどのような方法でデータベースのデータにアクセスしますか。 クエリは最適化されていますか。 論理データベース構造レイアウトはI/O負荷のために最適化されていますか(インデックス、表のパー ティション)。 サーバのCPUとメモリのスペックはどのようなものですか。 LinuxでどのようなIOスケジューラが使用されていますか。 キューの深さの設定はどうですか。 ベストプラクティスガイド:ORACLE用ニンブルストレージ 6 どのファイルシステムが使用されていますか。 選択したIOサイズは何ですか。 ストレージにいくつのボリューム/LUNが作成されていますか。 ストレージへのIOパスはいくつありますか。 ニンブル推奨設定 すべてのI/O負荷に対してすべての設定が最適なわけではありません。トランザクション型(OLTP)の負荷に向く 設定でも、分析型(DSS)の負荷には向かない場合があり、その逆もあります。このペーパーでは、OLTPおよびDSS の両方の作業について最適な設定を解説します。 OLTP作業設定 データベースシステムはOLTP負荷に応じる必要があり、最適なパフォーマンスのためには次の設定が準備されて いる必要があります。 ニンブルアレイ ニンブルOSは最低でも1.4.7.0が必要です。 Linuxオペレーティングシステム iSCSI これらのiSCSIタイムアウトの意味を理解すれば、管理者はタイムアウトを適切に設定できます。/etc/ iscsi/iscsi.confファイル内のこれらのiSCSIタイムアウトパラメーターは以下のように設定してくだ さい。 node.session.timeo.replacement_timeout = 120 node.conn[0].timeo.noop_out_interval = 5 node.conn[0].timeo.noop_out_timeout = 10 = = = NOP-Outインターバル/タイムアウト = = = node.conn[0].timeo.noop_out_timeout = [ value ] iSCSIレイヤーはNOP-Out要求を各ターゲットに送信します。NOP-Out要求がタイムアウトになると(デフォルト は10秒)、iSCSIレイヤーは実行中のコマンドがあれば失敗させ、可能であればそれらのコマンドを再度キュー に入れるようSCSIレイヤーに指示します。dmマルチパスが使用されている場合、SCSIレイヤーはこれらの実行 中のコマンドを失敗させ、マルチパスレイヤーに保留します。するとマルチパスレイヤーは、これらのコマン ドを他のパスで再試行します。dmマルチパスが使用されていない場合は、これらのコマンドは失敗する前に5回 (node.conn[0].timeo.noop_out_interval)再試行されます。 node.conn[0].timeo.noop_out_interval [ value ] 設定すると、iSCSIレイヤーはNOP-Out要求を各ターゲットに[インターバル値]秒ごとに送信します。 ベストプラクティスガイド:ORACLE用ニンブルストレージ 7 = = = SCSIエラーハンドラー = = = SCSIエラーハンドラーが実行中の場合、パスにある実行中のコマンドはソフトウェアのパスでNOP-Out要求がタ イムアウトになった場合に直ちには失敗しません。そうではなく、これらのコマンドはreplacement_timeout秒 後に失敗します。 node.session.timeo.replacement_timeout = [ value ] 重要:iSCSIレイヤーがタイムアウトしたパス/セッション上のコマンドを失敗させる前に、パス/セッションが 復旧するのを待機する時間を制御します。上記の推奨設定の120秒に設定すると、コントローラーのフェイル オーバーのために十分な時間があります。デフォルトは120秒です。 注意:120秒に設定すると、IOが再開する前に2分間キューに入れられます。 /etc/multipath.confの「1 queue_if_no_path」オプションにより、コマンドをマルチパスレイヤーにただちに 保留するようにiSCSIタイマーを設定します。この設定により、IOエラーがアプリケーションに伝播するのを防 ぎます。そのため、replacement_timeoutを60~120秒に設定できます。 注意:ニンブルストレージは、すべてのボリュームでdm(デバイスマッパー)マルチパスを使用することを 強く推奨します。 マルチパス構成 /etc/multipath.confファイルのマルチパスパラメーターは、フェイルオーバーを維持するために以下の ように設定します。ニンブルは、マップされたLUNにエイリアスを使用することを推奨します。 defaults { user_friendly_names yes find_multipaths yes } devices { device { vendor product path_grouping_policy path_selector features path_checker rr_min_io_rq rr_weight failback } } multipaths { multipath { wwid alias } "Nimble" "Server" group_by_serial "round-robin 0" "1 queue_if_no_path" tur 1000 priorities immediate 20694551e4841f4386c9ce900dcc2bd34 ocr ベストプラクティスガイド:ORACLE用ニンブルストレージ 8 } ディスクIOスケジューラ IOスケジューラは「noop」に設定する必要があります。 オンラインのすべてのLUNにIOスケジューラを設定するには以下のコマンドを実行します。注意: この コマンドを実行する前にまずマルチパスを設定する必要があります。LUNを追加したりサーバをリブート したりしても、このパラメーターは自動的には変更されません。新しいLUNを追加したりサーバをリブー トしたりした場合は、同じコマンドを再実行してください。 [root@mktg04 ~]# multipath -ll | grep sd | awk -F":" '{print $4}' | awk '{print $2}' | while read LUN; do echo noop > /sys/block/${LUN}/queue/scheduler ; done このパラメーターを自動的に設定するには、次のシンタックスを/etc/grub.confファイルのカーネル行 の下に追加します。 elevator=noop CPUスケーリングガバナー CPUスケーリングガバナーは「performance」に設定する必要があります。 CPUスケーリングガバナーを設定するには、以下のコマンドを実行します。 [root@mktg04 ~]# for a in $(ls -ld /sys/devices/system/cpu/cpu[0-9]* | awk '{print $NF}') ; do echo performance > $a/cpufreq/scaling_governor ; done 注意:上記の設定はリブート後には持続しません。したがって、サーバが再度オンラインになった 時にコマンドを実行する必要があります。リブート後にコマンドを手動で実行するのを避けるには、こ のコマンドを/etc/rc.localファイルに置きます。 iSCSIデータネットワーク ニンブルは、すべてのデータベースに10GbE iSCSIを使用することを推奨します。 2つの独立したサブネット 2 x 10GbE iSCSI NIC iSCSIネットワークにはジャンボフレーム(MTU 9000)を使用します。 eth1のMTU設定の例: DEVICE=eth1 ベストプラクティスガイド:ORACLE用ニンブルストレージ 9 HWADDR=00:25:B5:00:00:BE TYPE=Ethernet UUID=31bf296f-5d6a-4caf-8858-88887e883edc ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=172.18.127.134 NETMASK=255.255.255.0 MTU=9000 すでに実行中のインターフェースのMTUを変更するには: [root@bigdata1 ~]# ifconfig eth1 mtu 9000 /etc/sysctl.conf net.core.wmem_max net.core.rmem_max net.ipv4.tcp_rmem net.ipv4.tcp_wmem = = = = 16780000 16780000 10240 87380 16780000 10240 87380 16780000 /etc/sysctl.confファイルを編集した後でsysctl –pコマンドを実行します。 max_sectors_kb すべてのボリュームのmax_sectors_kbを1024に変更します(デフォルトは512)。 単一のボリュームでmax_sectors_kbを1024に変更するには: [root@bigdata1 ~]# echo 1024 > /sys/block/sd?/queue/max_sectors_kb すべてのボリュームを変更: multipath -ll | grep sd | awk -F":" '{print $4}' | awk '{print $2}' | while read LUN do echo 1024 > /sys/block/${LUN}/queue/max_sectors_kb done 注意:この変更をリブート後も持続するようにするには、このコマンドを/etc/rc.localファイル に追加します。 ベストプラクティスガイド:ORACLE用ニンブルストレージ 10 VM dirty writeback とdirty expire vm dirty_writebackとdirty expireを100に変更します(デフォルトはそれぞれ500と3000)。 vm dirty writebackとdirty expireを変更するには: [root@bigdata1 ~]# echo 100 > /proc/sys/vm/dirty_writeback_centisecs [root@bigdata1 ~]# echo 100 > /proc/sys/vm/dirty_expire_centisecs 注意:この変更をリブート後も持続するようにするには、このコマンドを/etc/rc.localファイル に追加します。 Oracle ASM 3つのASMディスクグループ(データベースデータ用に1つ、オンラインREDOログ用に1つ、アーカイブロ グ用に1つ)。 データベースデータディスクグループ用に、通常のキャッシュで8KBニンブルパフォーマンスポリシーを 使用するボリュームが最低8台。 オンラインREDOログディスクグループ用に、通常のキャッシュで4KBニンブルパフォーマンスポリシーを 使用するボリュームが最低4台。 アーカイブログディスクグループ用に、キャッシュなしで32KBニンブルパフォーマンスポリシーを使用 するボリュームが最低8台。 データベースの作成にはOracle 8KBブロックサイズを使用します。 ディスクグループの作成には、Oracle ASMでExternal Redundancyを使用します。 データベースでfilesystemio_options=setallを設定します(直接I/Oと非同期I/Oを有効化)。 データベースでdb_writer_processesを8に設定します。 データベースでlog_bufferを可能な限り低くします(~1.6MB)。 データベースに隠しパラメーター「_disk_sector_size_override=TRUE」を設定します。上記のパラメー ターを変更してからデータベースを再起動します。 ブロックサイズ4KBで各16GBのログファイルグループを4つ新規作成します。新しいログが作成されたら、 古いログを削除します。 新しいログファイルの作成例: ALTER ALTER ALTER ALTER DATABASE DATABASE DATABASE DATABASE ADD ADD ADD ADD LOGFILE LOGFILE LOGFILE LOGFILE GROUP GROUP GROUP GROUP 5 6 7 8 ( ( ( ( '+LOGDG') '+LOGDG') '+LOGDG') '+LOGDG') SIZE SIZE SIZE SIZE ベストプラクティスガイド:ORACLE用ニンブルストレージ 16384M 16384M 16384M 16384M BLOCKSIZE BLOCKSIZE BLOCKSIZE BLOCKSIZE 4K; 4K; 4K; 4K; 11 EXTファイルシステムのOracleデータベース LVMを使用します。 3つのボリュームグループ(データベースデータ用に1 VG、オンラインREDOログ用に1 VG、アーカイブロ グ用に1 VG)。 データベースデータVG用に、通常のキャッシュで8KBニンブルパフォーマンスポリシーを使用するボ リュームが最低8台。 オンラインREDOログVG用に、通常のキャッシュで4KBニンブルパフォーマンスポリシーを使用するボ リュームが最低4台。 アーカイブログVG用に、キャッシュなしで32KBニンブルパフォーマンスポリシーを使用するボリューム が最低8台。 LVM & EXT設定の例: ボリュームグループの作成 [root@mktg04 ~]# vgcreate vgextdata /dev/mapper/extdata[1-8] [root@mktg04 ~]# vgcreate vgextlog /dev/mapper/extlog[1-4] [root@mktg04 ~]# vgcreate vgextarch /dev/mapper/extarch[1-8] 論理ボリュームの作成 [root@mktg04 ~]# lvcreate -l <# of extents> -i 8 -I 4096 -n vol1 vgextdata [root@mktg04 ~]# lvcreate -l <# of extents> -i 4 -I 4096 -n vol1 vgextlog [root@mktg04 ~]# lvcreate -l <# of extents> -i 8 -I 4096 -n vol1 vgextarch EXTファイルシステムの作成 [root@mktg04 ~]# mkfs.ext4 /dev/vgextdata/vol1 -b 4096 -E stride=2,stripe-width=2 [root@mktg04 ~]# mkfs.ext4 /dev/vgextlog/vol1 -b 4096 [root@mktg04 ~]# mkfs.ext4 /dev/vgextarch/vol1 -b 4096 -E stride=8,stripe-width=8 /etc/fstabファイル内のマウントオプション /dev/vgextdata/vol1 ier=0 0 0 /dev/vgextlog/vol1 arrier=0 0 0 /dev/vgextarch/vol1 ier=0 0 0 /u01/app/extdata /u01/app/extlog /u01/app/extarch ext4 ext4 ext4 _netdev,noatime,nodiratime,discard,barr _netdev,noatime,nodiratime,discard,b _netdev,noatime,nodiratime,discard,barr データベースの作成にはOracle 8KBブロックサイズを使用します。 データベースでfilesystemio_options=setallを設定します(直接I/Oと非同期I/Oを有効化)。 ベストプラクティスガイド:ORACLE用ニンブルストレージ 12 データベースでdb_writer_processesを8に設定します。 データベースでlog_bufferを可能な限り低くします(~1.6MB)。 データベースに隠しパラメーター「_disk_sector_size_override=TRUE」を設定します。上記のパラメー ターを変更してからデータベースを再起動します。 ブロックサイズ4KBで各16GBのログファイルグループを4つ新規作成します。新しいログが作成されたら、 古いログを削除します。 新しいログファイルの作成例: ALTER ALTER ALTER ALTER DATABASE DATABASE DATABASE DATABASE ADD ADD ADD ADD LOGFILE LOGFILE LOGFILE LOGFILE GROUP GROUP GROUP GROUP 5 6 7 8 ( ( ( ( '/u01/app/extlog/log5’) SIZE 16384M BLOCKSIZE 4K; '/u01/app/extlog/log6’) SIZE 16384M BLOCKSIZE 4K; '/u01//app/extlog/log7’) SIZE 16384M BLOCKSIZE 4K; '/u01/app/extlog/log8’) SIZE 16384M BLOCKSIZE 4K; DSS負荷設定 データベースシステムはDSSのアクセスI/O負荷に対応する必要があり、最適なパフォーマンスのためには次の設 定が準備されている必要があります。 ニンブルアレイ ニンブルOSは最低でも1.4.7.0が必要です。 Linuxオペレーティングシステム iSCSI これらのiSCSIタイムアウトの意味を理解すれば、管理者はタイムアウトを適切に設定できます。/etc/ iscsi/iscsi.confファイル内のこれらのiSCSIタイムアウトパラメーターは以下のように設定してくだ さい。 node.session.timeo.replacement_timeout = 120 node.conn[0].timeo.noop_out_interval = 5 node.conn[0].timeo.noop_out_timeout = 10 = = = NOP-Outインターバル/タイムアウト = = = node.conn[0].timeo.noop_out_timeout = [ value ] iSCSIレイヤーはNOP-Out要求を各ターゲットに送信します。NOP-Out要求がタイムアウトになると(デフォル トは10秒)、iSCSIレイヤーは実行中のコマンドがあれば失敗させ、可能であればそれらのコマンドを再度 キューに入れるようSCSIレイヤーに指示します。dmマルチパスが使用されている場合、SCSIレイヤーはこれら の実行中のコマンドを失敗させ、マルチパスレイヤーに保留します。するとマルチパスレイヤーは、これらの ベストプラクティスガイド:ORACLE用ニンブルストレージ 13 コマンドを他のパスで再試行します。dmマルチパスが使用されていない場合は、これらのコマンドは失敗する 前に5回(node.conn[0].timeo.noop_out_interval)再試行されます。 node.conn[0].timeo.noop_out_interval [ value ] 設定すると、iSCSIレイヤーはNOP-Out要求を各ターゲットに[インターバル値]秒ごとに送信します。 = = = SCSIエラーハンドラー = = = SCSIエラーハンドラーが実行中の場合、パスにある実行中のコマンドはソフトウェアのパスでNOP-Out要求が タイムアウトになった場合に直ちには失敗しません。そうではなく、これらのコマンドはreplacement_timeou t秒後に失敗します。 node.session.timeo.replacement_timeout = [ value ] 重要:iSCSIレイヤーがタイムアウトしたパス/セッション上のコマンドを失敗させる前に、パス/セッション が復旧するのを待機する時間を制御します。上記の推奨設定の120秒に設定すると、コントローラーのフェイ ルオーバーのために十分な時間があります。デフォルトは120秒です。 注意:120秒に設定すると、IOが再開する前に2分間キューに入れられます。 /etc/multipath.confの「1 queue_if_no_path」オプションにより、コマンドをマルチパスレイヤーにただち に保留するようにiSCSIタイマーを設定します。この設定により、IOエラーがアプリケーションに伝播するの を防ぎます。そのため、replacement_timeoutを60~120秒に設定できます。 注意:ニンブルストレージは、すべてのボリュームでdmマルチパスを使用することを強く推奨します。 マルチパス構成 defaults { user_friendly_names yes find_multipaths yes } devices { device { vendor product path_grouping_policy path_selector features path_checker rr_min_io_rq rr_weight failback } } "Nimble" "Server" group_by_serial "round-robin 0" "1 queue_if_no_path" tur 1000 priorities immediate ベストプラクティスガイド:ORACLE用ニンブルストレージ 14 multipaths { multipath { wwid alias } } 20694551e4841f4386c9ce900dcc2bd34 ocr ディスクIOスケジューラ IOスケジューラは「noop」に設定する必要があります。 オンラインのすべてのLUNにIOスケジューラを設定するには以下のコマンドを実行します。注意: この コマンドを実行する前にまずマルチパスを設定する必要があります。LUNを追加したりサーバをリブート したりしても、このパラメーターは自動的には変更されません。新しいLUNを追加したりサーバをリブー トしたりした場合は、同じコマンドを再実行してください。 [root@mktg04 ~]# multipath -ll | grep sd | awk -F":" '{print $4}' | awk '{print $2}' | while read LUN; do echo noop > /sys/block/${LUN}/queue/scheduler ; done このパラメーターを自動的に設定するには、次のシンタックスを/etc/grub.confファイルのカーネル行 の下に追加します。 elevator=noop CPUスケーリングガバナー CPUスケーリングガバナーは「performance」に設定する必要があります。 CPUスケーリングガバナーを設定するには、以下のコマンドを実行します。 [root@mktg04 ~]# for a in $(ls -ld /sys/devices/system/cpu/cpu[0-9]* | awk '{print $NF}') ; do echo performance > $a/cpufreq/scaling_governor ; done 注意:上記の設定はリブート後には持続しません。したがって、サーバが再度オンラインになった 時にコマンドを実行する必要があります。リブート後にコマンドを実行するのを避けるには、このコマ ンドを/etc/rc.localファイルに置きます。 iSCSIデータネットワーク ニンブルは、すべてのデータベースに10GbE iSCSIを使用することを推奨します。 2つの独立したサブネット 2 x 10GbE iSCSI NIC ベストプラクティスガイド:ORACLE用ニンブルストレージ 15 iSCSIネットワークにはジャンボフレーム(MTU 9000)を使用します。 eth1のMTU設定の例: DEVICE=eth1 HWADDR=00:25:B5:00:00:BE TYPE=Ethernet UUID=31bf296f-5d6a-4caf-8858-88887e883edc ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=172.18.127.134 NETMASK=255.255.255.0 MTU=9000 すでに実行中のインターフェースのMTUを変更するには: [root@bigdata1 ~]# ifconfig eth1 mtu 9000 /etc/sysctl.conf net.core.wmem_max net.core.rmem_max net.ipv4.tcp_rmem net.ipv4.tcp_wmem = = = = 16780000 16780000 10240 87380 16780000 10240 87380 16780000 /etc/sysctl.confファイルを編集した後でsysctl –pコマンドを実行します。 max_sectors_kb すべてのボリュームのmax_sectors_kbを1024に変更します(デフォルトは512)。 単一のボリュームでmax_sectors_kbを1024に変更するには: [root@bigdata1 ~]# echo 1024 > /sys/block/sd?/queue/max_sectors_kb すべてのボリュームを変更: multipath -ll | grep sd | awk -F":" '{print $4}' | awk '{print $2}' | while read LUN do echo 1024 > /sys/block/${LUN}/queue/max_sectors_kb done 注意:この変更をリブート後も持続するようにするには、このコマンドを/etc/rc.localファイル に追加します。 ベストプラクティスガイド:ORACLE用ニンブルストレージ 16 VM dirty writebackとdirty expire vm dirty writebackとdirty expireを100に変更します(デフォルトはそれぞれ500と3000)。 vm dirty writebackとdirty expireを変更するには: [root@bigdata1 ~]# echo 100 > /proc/sys/vm/dirty_writeback_centisecs [root@bigdata1 ~]# echo 100 > /proc/sys/vm/dirty_expire_centisecs 注意:この変更をリブート後も持続するようにするには、このコマンドを/etc/rc.localファイル に追加します。 Oracle ASM 3つのASMディスクグループ(必要に応じて、データベースデータ用に1つ、オンラインREDOログ用に1つ、 アーカイブログ用に1つ)。 データベースデータディスクグループ用に、通常のキャッシュで32KBニンブルパフォーマンスポリシー を使用するボリュームが最低8台。 オンラインREDOログディスクグループ用に、通常のキャッシュで4KBニンブルパフォーマンスポリシーを 使用するボリュームが最低4台。 アーカイブログディスクグループ用に、キャッシュなしで32KBニンブルパフォーマンスポリシーを使用 するボリュームが最低8台。 データベースの作成にはOracle 32KBブロックサイズを使用します。 ディスクグループの作成には、Oracle ASMでExternal Redundancyを使用します。 データベースでfilesystemio_options=setallを設定します(直接I/Oと非同期I/Oを有効化)。 データベースでdb_writer_processesを8に設定します。 データベースでlog_bufferを可能な限り低くします(~1.6MB)。 データベースに隠しパラメーター「_disk_sector_size_override=TRUE」を設定します。上記のパラメー ターを変更してからデータベースを再起動します。 ブロックサイズ4KBで各16GBのログファイルグループを4つ新規作成します。新しいログが作成されたら、 古いログを削除します。 新しいログファイルの作成例: ALTER ALTER ALTER ALTER DATABASE DATABASE DATABASE DATABASE ADD ADD ADD ADD LOGFILE LOGFILE LOGFILE LOGFILE GROUP GROUP GROUP GROUP 5 6 7 8 ( ( ( ( '+LOGDG') '+LOGDG') '+LOGDG') '+LOGDG') SIZE SIZE SIZE SIZE ベストプラクティスガイド:ORACLE用ニンブルストレージ 16384M 16384M 16384M 16384M BLOCKSIZE BLOCKSIZE BLOCKSIZE BLOCKSIZE 4K; 4K; 4K; 4K; 17 EXTファイルシステムのOracleデータベース LVMを使用します。 3つのボリュームグループ(必要に応じてデータベースデータ用に1 VG、オンラインログ用に1 VG、アー カイブログ用に1 VG)。 データベースデータVG用に、通常のキャッシュで32KBニンブルパフォーマンスポリシーを使用するボ リュームが最低8台。 オンラインREDOログVG用に、通常のキャッシュで4KBニンブルパフォーマンスポリシーを使用するボ リュームが最低4台。 アーカイブログVG用に、キャッシュなしで32KBニンブルパフォーマンスポリシーを使用するボリューム が最低8台。 LVM & EXT設定の例: ボリュームグループの作成 [root@mktg04 ~]# vgcreate vgextdata /dev/mapper/extdata[1-8] [root@mktg04 ~]# vgcreate vgextlog /dev/mapper/extlog[1-4] [root@mktg04 ~]# vgcreate vgextarch /dev/mapper/extarch[1-8] 論理ボリュームの作成 [root@mktg04 ~]# lvcreate -l <# of extents> -i 8 -I 4096 -n vol1 vgextdata [root@mktg04 ~]# lvcreate -l <# of extents> -i 4 -I 4096 -n vol1 vgextlog [root@mktg04 ~]# lvcreate -l <# of extents> -i 8 -I 4096 -n vol1 vgextarch EXTファイルシステムの作成 [root@mktg04 ~]# mkfs.ext4 /dev/vgextdata/vol1 -b 4096 -E stride=8,stripe-width=8 [root@mktg04 ~]# mkfs.ext4 /dev/vgextlog/vol1 -b 4096 [root@mktg04 ~]# mkfs.ext4 /dev/vgextarch/vol1 -b 4096 -E stride=8,stripe-width=8 /etc/fstabファイル内のマウントオプション /dev/vgextdata/vol1 ier=0 0 0 /dev/vgextlog/vol1 arrier=0 0 0 /dev/vgextarch/vol1 ier=0 0 0 /u01/app/extdata /u01/app/extlog /u01/app/extarch ext4 ext4 ext4 _netdev,noatime,nodiratime,discard,barr _netdev,noatime,nodiratime,discard,b _netdev,noatime,nodiratime,discard,barr データベースの作成にはOracle 32KBブロックサイズを使用します。 データベースでfilesystemio_options=setallを設定します(直接I/Oと非同期I/Oを有効化)。 ベストプラクティスガイド:ORACLE用ニンブルストレージ 18 データベースでdb_writer_processesを8に設定します。 データベースでlog_bufferを可能な限り低くします(~1.6MB)。 データベースに隠しパラメーター「_disk_sector_size_override=TRUE」を設定します。上記のパラメー ターを変更してからデータベースを再起動します。 ブロックサイズ4KBで各16GBのログファイルグループを4つ新規作成します。新しいログが作成されたら、 古いログを削除します。 新しいログファイルの作成例: ALTER ALTER ALTER ALTER DATABASE DATABASE DATABASE DATABASE ADD ADD ADD ADD LOGFILE LOGFILE LOGFILE LOGFILE GROUP GROUP GROUP GROUP 5 6 7 8 ( ( ( ( '/u01/app/extlog/log5') '/u01/app/extlog/log6') '/u01/app/extlog/log7') '/u01/app/extlog/log8') SIZE SIZE SIZE SIZE 16384M 16384M 16384M 16384M BLOCKSIZE BLOCKSIZE BLOCKSIZE BLOCKSIZE 4K; 4K; 4K; 4K; Nimble Stoage, Incr. 211 River Oaks Parkway, San Jose, CA Tel:+1-877-364-6253) | 95134 www.nimblestorage.com | [email protected] © 2014 Nimble Storage, Inc.ニンブルストレージ、InfoSight、SmartStack、NimbleConnect、およびCASLはNimble Storage, Inc.の米国に おける商標または登録商標です。他の商標はすべて、それぞれの所有者に帰属します。BPG-ORACLE-0314 nmblbpg008(140624) ベストプラクティスガイド:ORACLE用ニンブルストレージ 19