Solaris の場合
Solaris OSに固有の構成に関するトピック
Solaris NFSのマウントオプション
次の表に、単一インスタンスのSolaris NFSのマウントオプションを示します。
ファイルタイプ | マウントオプション |
---|---|
ADRホーム |
|
制御ファイル データファイル REDO ログ |
|
|
|
の使用 llock
ストレージシステムでロックを取得および解放する際のレイテンシを排除することで、お客様の環境のパフォーマンスが劇的に向上することが実証されています。多数のサーバが同じファイルシステムをマウントするように構成され、Oracleがこれらのデータベースをマウントするよう構成されている環境では、このオプションの使用に注意してください。これは非常に珍しい構成ですが、少数のお客様によって使用されています。インスタンスが誤って2回目に開始された場合、Oracleは外部サーバ上のロックファイルを検出できないため、データが破損する可能性があります。NFSロックは、NFSバージョン3のように保護を提供するものではなく、推奨されるだけです。
なぜなら、 llock
および forcedirectio
パラメータは相互に排他的です。次のことが重要です。 filesystemio_options=setall
は、 init.ora
ファイルを作成して directio
を使用します。このパラメータを指定しないと、ホストOSのバッファキャッシュが使用され、パフォーマンスが低下する可能性があります。
次の表に、Solaris NFSのマウントオプションを示します。
ファイルタイプ | マウントオプション |
---|---|
ADRホーム |
|
制御ファイル データ・ファイル REDO ログ |
|
CRS /投票 |
|
専用 |
|
共有 |
|
シングルインスタンスとRACマウントオプションの主な違いは、 noac
および forcedirectio
をマウントオプションに移動します。このオプションを使用するとホストOSのキャッシングが無効になるため、データの状態について、RACクラスタ内のすべてのインスタンスが一貫した情報を認識できるようになります。ただし、 init.ora
パラメータ filesystemio_options=setall
ホストのキャッシングを無効にした場合と同じ効果がありますが、引き続きを使用する必要があります。 noac
および forcedirectio
。
理由 actimeo=0
共有の場合は必須です ORACLE_HOME
を導入すると、Oracleパスワードファイルやspfileなどのファイルの整合性が維持されます。RACクラスタ内の各インスタンスに専用の ORACLE_HOME
、このパラメータは必須ではありません。
Solaris UFSのマウントオプション
NetAppでは、ロギングマウントオプションを使用して、SolarisホストがクラッシュしたりFC接続が中断したりした場合にデータの整合性が維持されるようにすることを強く推奨しています。ロギングマウントオプションを使用すると、Snapshotバックアップのユーザビリティも維持されます。
Solaris ZFS
最適なパフォーマンスを実現するには、Solaris ZFSをインストールして慎重に設定する必要があります。
mvector
Solaris 11では、大規模なI/O処理の処理方法が変更され、SANストレージアレイのパフォーマンスに重大な問題が発生する可能性がありました。この問題は、NetApp追跡バグレポート630173「Solaris 11 ZFSパフォーマンスの回帰」で文書化されています。
これはONTAPのバグではありません。これはSolarisの障害であり、Solarisの障害7199305および7082975で追跡されます。
使用しているSolaris 11のバージョンが影響を受けるかどうかを確認するには、Oracleサポートを参照してください。また、より小さい値に変更して回避策をテストすることもできます zfs_mvector_max_size
。
これを行うには、ルートとして次のコマンドを実行します。
[root@host1 ~]# echo "zfs_mvector_max_size/W 0t131072" |mdb -kw
この変更によって予期しない問題が発生した場合は、次のコマンドをrootとして実行することで簡単に元に戻すことができます。
[root@host1 ~]# echo "zfs_mvector_max_size/W 0t1048576" |mdb -kw
カーネル
信頼性の高いZFSパフォーマンスを実現するには、LUNのアライメントの問題に対してSolarisカーネルにパッチを適用する必要があります。この修正は、Solaris 10のパッチ147440-19とSolaris 11のSRU 10.5で導入されました。ZFSではSolaris 10以降のみを使用してください。
LUN構成
LUNを設定するには、次の手順を実行します。
-
タイプがのLUNを作成します。
solaris
。 -
で指定された適切なHost Utility Kit(HUK)をインストールします。 "ネットアップの Interoperability Matrix Tool ( IMT )"。
-
HUKに記載されている手順に正確に従ってください。基本的な手順は以下のとおりですが、 "最新のドキュメント" を参照してください手順。
-
を実行します
host_config
を更新するユーティリティsd.conf/sdd.conf
ファイル。これにより、SCSIドライブがONTAP LUNを正しく検出できるようになります。 -
の指示に従ってください。
host_config
Multipath Input/Output(MPIO;マルチパス入出力)を有効にするユーティリティ。 -
リブートします。この手順は、システム全体で変更が認識されるようにするために必要です。
-
-
LUNをパーティショニングし、適切にアライメントされていることを確認します。アライメントを直接テストして確認する方法については、「付録B:WAFLアライメントの検証」を参照してください。
zpools
zpoolは、の手順を実行したあとに作成する必要があります。 "LUNの設定" が実行されます。手順を正しく実行しないと、I/Oのアライメントが原因でパフォーマンスが大幅に低下する可能性があります。ONTAPのパフォーマンスを最適化するには、I/Oがドライブの4Kの境界にアライメントされている必要があります。zpoolに作成されるファイルシステムは、というパラメータで制御される実効ブロックサイズを使用します。 ashift
(コマンドを実行すると表示できます) zdb -C
。
の値 ashift
デフォルトは9です。これは2^9、つまり512バイトを意味します。最適なパフォーマンスを実現するには、 ashift
値は12(2^12=4K)である必要があります。この値はzpoolの作成時に設定され、変更することはできません。つまり、 ashift
12以外の場合は、新しく作成したzpoolにデータをコピーして移行する必要があります。
zpoolを作成したら、の値を確認します。 ashift
次に進む前に、値が12以外の場合は、LUNが正しく検出されていません。zpoolを削除し、関連するHost Utilitiesのドキュメントに記載された手順をすべて正しく実行したことを確認してから、zpoolを再作成します。
zpoolとSolaris LDOM
Solaris LDOMには、I/Oアライメントが正しいことを確認するための追加の要件があります。LUNは4Kデバイスとして適切に検出されますが、LDOM上の仮想vdskデバイスはI/Oドメインの設定を継承しません。このLUNに基づくvdskは、デフォルトで512バイトブロックに戻ります。
追加の構成ファイルが必要です。まず、追加の設定オプションを有効にするために、個 々 のLDOMにOracleのバグ15824910のパッチを適用する必要があります。このパッチは、現在使用されているすべてのバージョンのSolarisに移植されています。LDOMにパッチを適用すると、適切にアライメントされた新しいLUNを設定できるようになります。手順は次のとおりです。
-
新しいzpoolで使用するLUNを特定します。この例では、c2d1デバイスです。
[root@LDOM1 ~]# echo | format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c2d0 <Unknown-Unknown-0001-100.00GB> /virtual-devices@100/channel-devices@200/disk@0 1. c2d1 <SUN-ZFS Storage 7330-1.0 cyl 1623 alt 2 hd 254 sec 254> /virtual-devices@100/channel-devices@200/disk@1
-
ZFSプールに使用するデバイスのVDCインスタンスを取得します。
[root@LDOM1 ~]# cat /etc/path_to_inst # # Caution! This file contains critical kernel state # "/fcoe" 0 "fcoe" "/iscsi" 0 "iscsi" "/pseudo" 0 "pseudo" "/scsi_vhci" 0 "scsi_vhci" "/options" 0 "options" "/virtual-devices@100" 0 "vnex" "/virtual-devices@100/channel-devices@200" 0 "cnex" "/virtual-devices@100/channel-devices@200/disk@0" 0 "vdc" "/virtual-devices@100/channel-devices@200/pciv-communication@0" 0 "vpci" "/virtual-devices@100/channel-devices@200/network@0" 0 "vnet" "/virtual-devices@100/channel-devices@200/network@1" 1 "vnet" "/virtual-devices@100/channel-devices@200/network@2" 2 "vnet" "/virtual-devices@100/channel-devices@200/network@3" 3 "vnet" "/virtual-devices@100/channel-devices@200/disk@1" 1 "vdc" << We want this one
-
編集
/platform/sun4v/kernel/drv/vdc.conf
:block-size-list="1:4096";
つまり、デバイスインスタンス1には4096のブロックサイズが割り当てられます。
追加の例として、vdskインスタンス1~6を4Kブロックサイズに設定する必要があり、
/etc/path_to_inst
読み取り値は次のとおりです。"/virtual-devices@100/channel-devices@200/disk@1" 1 "vdc" "/virtual-devices@100/channel-devices@200/disk@2" 2 "vdc" "/virtual-devices@100/channel-devices@200/disk@3" 3 "vdc" "/virtual-devices@100/channel-devices@200/disk@4" 4 "vdc" "/virtual-devices@100/channel-devices@200/disk@5" 5 "vdc" "/virtual-devices@100/channel-devices@200/disk@6" 6 "vdc"
-
決勝戦
vdc.conf
ファイルには以下が含まれている必要がありますblock-size-list="1:8192","2:8192","3:8192","4:8192","5:8192","6:8192";
注意 vdc.confを設定してvdskを作成したら、LDOMをリブートする必要があります。この手順は避けられません。ブロックサイズの変更はリブート後にのみ有効になります。zpoolの設定に進み、前述のようにashiftが12に正しく設定されていることを確認します。
ZFSインテントログ(ZIL)
通常'ZFSインテントログ(ZIL)を別のデバイスに配置する理由はありませんログはメインプールとスペースを共有できます。ZILを別 々 に使用する主な用途は、最新のストレージアレイには書き込みキャッシュ機能がない物理ドライブを使用する場合です。
ロバイアス
を設定します logbias
OracleデータをホストするZFSファイルシステムのパラメータ。
zfs set logbias=throughput <filesystem>
このパラメータを使用すると、全体的な書き込みレベルが低下します。デフォルトでは、書き込まれたデータはまずZILにコミットされ、次にメインのストレージプールにコミットされます。このアプローチは、SSDベースのZILデバイスとメインストレージプール用の回転式メディアを含む、プレーンドライブ構成を使用する構成に適しています。これは、利用可能な最も低レイテンシのメディア上の単一のI/Oトランザクションでコミットを実行できるためです。
独自のキャッシュ機能を備えた最新のストレージアレイを使用する場合は、通常、このアプローチは必要ありません。まれに、レイテンシの影響を受けやすい大量のランダム書き込みで構成されるワークロードのように、単一のトランザクションで書き込みをログにコミットした方が望ましい場合があります。ログに記録されたデータは最終的にメインのストレージプールに書き込まれ、書き込みアクティビティが2倍になるため、ライトアンプリフィケーションという結果になります。
ダイレクトI/O
Oracle製品を含む多くのアプリケーションでは、ダイレクトI/Oを有効にすることでホストのバッファキャッシュをバイパスできます。ZFSファイルシステムでは、この方法は想定どおりに機能しません。ホストのバッファキャッシュはバイパスされますが、ZFS自体はデータのキャッシュを継続します。I/Oがストレージシステムに到達しているかどうか、またはI/OがOS内にローカルにキャッシュされているかどうかを予測することが困難であるため、FIOやSIOなどのツールを使用してパフォーマンステストを実行すると、誤った結果になる可能性があります。また、このような総合的なテストを使用してZFSと他のファイルシステムのパフォーマンスを比較することも非常に困難になります。実際のユーザワークロードでは、ファイルシステムのパフォーマンスにほとんど違いはありません。
複数のzpool
ZFSベースのデータのSnapshotベースのバックアップ、リストア、クローニング、アーカイブは、zpoolレベルで実行する必要があり、通常は複数のzpoolが必要です。zpoolはLVMディスクグループに似ており、同じルールを使用して設定する必要があります。たとえば、データベースのレイアウトには、データファイルが配置されているのが最適です。 zpool1
およびにあるアーカイブログ、制御ファイル、REDOログ zpool2
。このアプローチでは、データベースがホットバックアップモードに設定された標準のホットバックアップに続いて、 zpool1
。次に、データベースがホットバックアップモードから削除され、ログアーカイブが強制的に実行され、 zpool2
が作成されます。リストア処理では、zfsファイルシステムをアンマウントし、zpoolを完全にオフラインにしてから、SnapRestoreのリストア処理を実行する必要があります。その後、zpoolをオンラインに戻してデータベースをリカバリできます。
ファイルシステムオプション
Oracleパラメータ filesystemio_options
ZFSでは動作が異なります。状況 setall
または directio
を使用します。書き込み処理は同期でOSのバッファキャッシュをバイパスしますが、読み取りはZFSによってバッファされます。この場合、I/OがZFSキャッシュによって代行受信されて処理されることがあるため、ストレージのレイテンシと総I/Oが想定よりも低くなるため、パフォーマンス分析が困難になります。