Nutanix ABS の VG を Linux に認識させて、Oracle ASM のディスクグループにしてみます。
ABS については、こちらもどうぞ。
今回は、すでに Oracle の Grid Infrastructure はインストール済みで、ASM インスタンスも構築済みの状態です。
Oracle RAC の共有ディスクとして使用するつもりで、Oracle Linux 7 サーバ 2台の Node#1 (ora-rac-01)と Node#2 (ora-rac-02)から接続します。
iSCSI 接続
Node #1 から。
RAC Node#1 にする Linux から、iSCSI Target に接続します。
ABS の VG によるディスクは、lsscsi で見ると「NUTANIX VDISK」と表示されます。
今回は /dev/sdc と認識されています。
パーティションを作成します。
パーティションに、ASM Disk ラベルを作成します。
Node#2 から。
Node#2 からも、iSCSI Target に接続します。
Node#2 からは、ASM Disk としてスキャンすると、さきほど作成した ASM Disk ラベルが認識できます。
Linux に複数のデバイスを接続するとき、とくに外部ストレージに接続する場合は「/dev/sd?」のような名前は永続的ではなく、OS 再起動時に変わったりします。たとえば、「複数の Linux でそれぞれ /dev/sde と見えているデバイスが、じつは別のディスクになっている」のようなことが発生します。
当然ながら、Nutanix ABS の iSCSI 接続でもデバイス名が入れ替わることがあります。Linux 側の仕組みの問題のため、ABS では VG と vDisk の構成を「VG あたり 1 vDisk」にしても、「VG あたり複数 vDisk」にしても、複数の iSCSI デバイスを接続すれば発生します。
ASM で使用するデバイスであれば、対策として ASM Disk ラベルを使用すれば、OS再起動時なども変更されない、永続的なデバイス名でディスクを指定することができます。これは、ASMLib というライブラリを使用しています。
ASM Disk Group の作成
これは Node#1 からだけ作成します。ちなみに、ここまでで iSCSI 接続したデバイスとは、別のデバイスで ASM Disk Gropu 作成しています。
ASM Disk Group(DG) は、SQL 文で作成することもできますが、今回は asmca という Oracle Grid Infrastructure に含まれるユーティリティで作成しています。
- GUI で起動することもできますが、サイレントモード(-silent)で使用しています。
- DG 名として、DG_DATA としています。
- DG に含めるディスクは、ASM Disk ラベルのデバイス名を指定しています。
(ちなみに前出のスライドで指定したデバイスとは別のデバイスです。) - DG でのデータの冗長性指定は、Nutanix ABS 側でも冗長化されるので EXTERNAL(外部)としています。
作成した ASM の DG は、OS コマンドではなく SQL 文や、asmcmd コマンドで確認することができます。
asmcmd で見た様子です。
SQL で見た様子です。今回作成した DG_DATA という DG はこのように見えます。
Oracle Database の表領域(Tablespace)は、ASM DG の上に作成される ASM File に紐づきます。
以下は RAC データベース作成後の様子ですが、FILE_NAME 列で表領域 のパスを見ると「⁺DG_DATA/~」となっており、ASM DG 上に Oracle DB のデータファイルがあることがわかります。DG はパスの先頭が「+」になります。
Oracle Database でのデータ管理では、テーブルなどのオブジェクトは表領域のうえに配置されるので、それより下のレイヤは、Nutanix ABS の VG だったとしても Oracle のデータ管理のしくみ自体は特に変わりません。
以上、Meetup#14 の話の一部でした。