...

JPEG in Word > PDF

by user

on
Category: Documents
10

views

Report

Comments

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
Fly UP