NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Oracle Database on Acropolis Block Services。(Meetup #14)

Nutanix Meetup #14 にて、
Nutanix Acropolis Block Services (ABS) と Oracle Database の話をしてみました。

ABS は Oracle RAC の共有ディスクとしての使用も想定されているとのことで、.NEXT Conference では Keynote のデモで ABS での RAC が登場していました。そこで、私もためしにやってみました。ただし手順が長大になるので、今回は話は Linux から ABS の VG に iSCSI 接続して Oracle ASM で使用可能にするあたりのみです。

続きを読む

Nutanix ABS の VG で Oracle ASM ディスクグループを作成してみる。

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 に接続します。

f:id:gowatana:20161005082043p:plain

ABS の VG によるディスクは、lsscsi で見ると「NUTANIX VDISK」と表示されます。
今回は /dev/sdc と認識されています。

f:id:gowatana:20161005082051p:plain

パーティションを作成します。

f:id:gowatana:20161005082101p:plain

パーティションに、ASM Disk ラベルを作成します。

f:id:gowatana:20161005082118p:plain

Node#2 から。

Node#2 からも、iSCSI Target に接続します。

f:id:gowatana:20161005082511p:plain

Node#2 からは、ASM Disk としてスキャンすると、さきほど作成した ASM Disk ラベルが認識できます。

f:id:gowatana:20161005082522p:plain

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 というライブラリを使用しています。

f:id:gowatana:20161005082901p:plain

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(外部)としています。

f:id:gowatana:20161005082638p:plain

作成した ASM の DG は、OS コマンドではなく SQL 文や、asmcmd コマンドで確認することができます。

asmcmd で見た様子です。

f:id:gowatana:20161005082806p:plain

SQL で見た様子です。今回作成した DG_DATA という DG はこのように見えます。

f:id:gowatana:20161005082814p:plain

Oracle Database の表領域(Tablespace)は、ASM DG の上に作成される ASM File に紐づきます。
以下は RAC データベース作成後の様子ですが、FILE_NAME 列で表領域 のパスを見ると「⁺DG_DATA/~」となっており、ASM DG 上に Oracle DB のデータファイルがあることがわかります。DG はパスの先頭が「+」になります。

Oracle Database でのデータ管理では、テーブルなどのオブジェクトは表領域のうえに配置されるので、それより下のレイヤは、Nutanix ABS の VG だったとしても Oracle のデータ管理のしくみ自体は特に変わりません。

f:id:gowatana:20161005082823p:plain

以上、Meetup#14 の話の一部でした。

Nutanix CE の Acropolis Block Services (ABS) の様子。

Acropolis Block Services (ABS) とは、Nutanix DSF(分散ストレージファブリック) の vDisk を、Volume Group (VG) として提供する機能です。

分散Volume の提供方法は 2パターンあります。

  1. Nutanix 上の VM に直接接続する。
  2. VG が iSCSI Target になる。

 今回は、主に iSCSI Target になる 方についての話です。

Nutanix Bible の ABS

ABS については、このあたりに記載されています。

http://nutanixbible.com/#anchor-block-services-76

日本語版の説明は、このあたりです。2016年09月ごろの時点では Volumes API という項目に記載されていますが、内容は ABS についてです。

http://nutanixbible.jp/#anchor-volumes-api-69

 

ABS の構成要素

ABS は下記の構成要素をもちます。 

Data Services IP

  • Nutanix クラスタ単位で設定できる VIP。
  • iSCSI Initiator からのログインで使用される。
  • AOS 4.7 ~

Volume Group (VG)

  • iSCSI target と Volume (DSF vDisk)のグループ。
  • 集中管理(Prism で ということ?)
  • クローン(スナップショット)は VG 単位で実行できる。

Disk(s)

  • Nutanix DSF 上の vDisk。
  • VG に含まれる vDisk ごとに、iSCSI Target が作成される。
  • iSCSI 接続すると、LUN に見える。

Attachment

  • VM または iSCSI Initiator IQN を指定して接続許可を設定できる。

 

絵で描くと、このような感じです。

iSCSI Target として接続する場合は、Nutanix 環境外のサーバ(iSCSI Initiator)からでも接続可能です。その際は、Nutanix クラスタ単位で設定する、「Data Services IP」アドレスに接続すします。

f:id:gowatana:20161004212606p:plain

iSCSI 概要と、ABS の iSCSI

iSCSI でのストレージ接続は、ストレージ装置側が iSCSI Target で、接続する側は iSCSI Initiator で接続します。iSCSI Initiator は、IQN というアドレス(iqn.~)をもち、iSCSI Target 側では、接続を許可する Initiator の IQN を登録します。

一般的な iSCSI ストレージでは、Target ごとに複数の LUN(ディスク)を提供することができますが、ABS では LUN ごとに Target が作成されます。

f:id:gowatana:20161004212933p:plain

たとえば、Oracle Linux 7 (Red Hat や CentOS も同じ)では、iSCSI Initiator の RPM(iscsi-initiator-utils)をインストールすると、IQN が自動生成されます。

[root@ora-rac-01 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.2
[root@ora-rac-01 ~]# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1988-12.com.oracle:c3faf81f5064

Nutanix Prism から見た ABS

ABS は Prism (Nutanix の Web UI)から利用できます。

iSCSI Target への接続で指定する Data Services IP は、Nutanix Cluster の VIP とは別に設定します。

f:id:gowatana:20161004214249p:plain

Prism の「Storage」→「Table」→「Volume Group」画面で、ABS の VG を見ることができます。VG を選択すると、VG に含まれる vDisk も見ることができます。例では「vg-rac-data」という VG に 10GB の vDisk が含まれていることが分かります。

f:id:gowatana:20161004214357p:plain

接続対象の指定は VG 単位で、iSCSI Target にするか、VM に直接接続(Attach to a VM)するか設定できます。例では IQN を 2つ登録することで、2台のサーバから VG に iSCSI 接続可能にしています。複数の IQN を登録する場合は、「Share across multiple iSCSI Initiator or multiple VMs」のチェックを ON にします。

f:id:gowatana:20161004214730p:plain

CVM のコマンドラインから見た ABS

Nutanix の CVM にログインして、ncli コマンドから ABS を見てみます。

まず、ncli volume-group get コマンドで、VG「vg-rac-data」を見てみると、この VG には UUID=~9b66 の vDisk が含まれることが分かります。

f:id:gowatana:20161004215415p:plain

上記の体裁を整えてみました。これは、Prism からみた VG と同じものです。10GB の vDisk をもち、IQN が 2つ登録されています。

iSCSI Target

  • vg-rac-data-b26cea52-9902-4e9c-9583-a3f4a1f53be3

Disks

  • VM Disk Size=10 GiB
  • VM Disk UUID=f938867c-98b1-46d7-8f71-75b6e8049b66

Shared

  • true

Attachment List

  • iSCSI Initiator=iqn.1988-12.com.oracle:c3faf81f5064
  • iSCSI Initiator=iqn.1988-12.com.oracle:2c55924aed52

virtual-disk list コマンドで vDisk の一覧を見ると、UUID=~9b66 をもつ vDisk ファイルの格納されているパスがわかります。

f:id:gowatana:20161004215848p:plain

CVM の nfs_ls で、vDisk の格納されているパスを見てみると、実際に 10GB のファイルが存在しています。ABS で Volume として提供する vDisk は、Nutanix で VM に割り当てる vDisk と同じように Nutanix DSF に配置されている vDisk です。

f:id:gowatana:20161004220033p:plain

Linux iSCSI Initiator から ABS に接続した様子

Oracle Linux の iSCSI Initiator から、ABS の VG に接続してみました。

今回の環境概要です。Linux からは、Data Service IP アドレスを指定して接続(iscsiadm コマンドでログイン)します。

f:id:gowatana:20161004220713p:plain

iscsiadm コマンドで、Data Service IP を指定して接続しました。

接続後の Linux でパスベースの /dev/disk/by-path/~ デバイスを確認すると、ちゃんと Data Service IP をもとにしたデバイス名になっています。

f:id:gowatana:20161004220831p:plain

iscsiadm コマンドでセッション情報を見てみると、Data Service IP アドレスではなく、実際は CVM の IP アドレスに接続していることがわかります。また、TCP 3260 番ポートではなく、3205番ポートで接続していました。

f:id:gowatana:20161004221123p:plain

 lsof コマンドを実行してみると、iscsid が 3205 番ポートで接続しています。

f:id:gowatana:20161004221428p:plain

CVM 側で lsof コマンドを実行してみると、stargate という Nutanix 独自のコンポーネントが TCP/3205 をリスニングしていることがわかります。

f:id:gowatana:20161004221615p:plain

今回は 3-Node の Nutanix Cluster です。黒枠ごとに別ノードなのですが、クライアントから Target ごと(= vDisk ごと)に分散して接続されていることがわかります。3 Node とも 3205 番ポートをリスニングしています。1つの Initiator (サーバ)から 1つの Target に対して複数パスのセッションをはるのではなく、Target ごとに接続先 CVM を別にする、という分散をしています。

f:id:gowatana:20161004221809p:plain

Linux から ABS VG への接続(2パターンそれぞれ)

以前、VM への直接接続と、iSCSI Target 接続とを両方ためしてみた投稿です。

おまけ: CVM 障害時の様子

たまたま iSCSI で ABS に接続しているときに CVM が落ちたので、様子を見てみました。

  • iSCSI Initiator は、しばらく External Data Service IP に接続したあと、別の CVM に接続している様子。
  • Oracle RAC 共有ディスクで VG を使用していても、インスタンスは落ちなかった。ただし無負荷・・・

障害発生前は、CVM に接続さえていて・・・

f:id:gowatana:20161004225519p:plain

障害発生すると、External Data Service IP Address(Data Service IP)にしばらく接続。一瞬というわけではなく、しばらくは(厳密ではないが1分くらいは経過していたような)そのまま。

f:id:gowatana:20161004225531p:plain

しばらく待つと、別の CVM に接続される。

f:id:gowatana:20161004225539p:plain

 

以上、Meetup#14 の話の一部でした。

 

Nutanix CE の ABS Volume を Oracle で相互利用してみる。Part.3

Nutanix CE の Acropolis Block Services(ABS)ボリュームのデータを、2台の Oracle Database サーバ間で移行をしてみようと思います。

前回はこちら。

今回は、Nutanix の VG クローンと、Oracle の Transportable Tablespace (TTS) を利用してデータ移行してみます。

f:id:gowatana:20160904230248p:plain

続きを読む

Nutanix CE の ABS Volume を Oracle で相互利用してみる。Part.1

Nutanix CE の Acropolis Block Services(ABS)ボリュームが、Oracle Database での利用も想定しているようです。ためしに、2台の Oracle Database サーバで、ABS ボリュームを利用したデータ移行をしてみようと思います。

今回のサーバ構成

Oracle DB のサーバは 2台用意します。

移行元: Oracle DB Server ‐ A(以下 ora-sv-a)

  • Nutanix AHV の VM
  • Nutanix CE 用の物理サーバがないので ESXi での Nested Nutanix CE を利用。

移行先: Oracle DB Server - A(以下 ora-sv-b)

  • Nutanix Cluster の外部にあるサーバ役。
  • 今回は ESXi 上の VM として構築。

移行元 / 移行先の OS / Oracle のソフトウェア構成は合わせてあります。

  • OS: Oracle Linux 7
  • Oracle Database 12c R1
  • Oracle Database は、シングル インスタンス(シングルノード)。
  • Oracle Grid Infrastructure あり。Oracle ASM、Oracle Restart 構成。

f:id:gowatana:20160903225656p:plain

データ移行のシナリオ

下記のような前提で、データ移行してみます。

  • ora-sv-a にある Oracle DB 「oradba」のデータを、ora-sv-b の Oracle DB 「oradbb」に移行する。Oracle DB は移行先で作成ずみ。
  • DB 全体ではなく一部の表領域のみ移行してみる。
  • Oracle Database のストレージは、Oracle ASM を使用する。Oracle のデータファイルは、ASM Disk Group に格納している。
  • 移行対象の表領域は、独立した Oracle ASM Disk Group に配置する。

Nutanix ABS の VG 構成

  • 移行対象となる Oracle DB のデータ配置領域として Nutanix ABS の ボリューム グループ(VG)を用意する。
  • ora-sv-a 用に VG を 1つ作成して、ボリュームは2つ含める。
  • ボリューム 1つめは、ASM Diskとして使用する。
  • ボリューム 2つめは、Oracle TTS のダンプファイルを配置しておく。
    ※このボリュームは必須ではない。
  • ora-sv-b に接続する VG は、移行手順のなかで ora-sv-a の VG をクローンして作成する。

f:id:gowatana:20160903225709p:plain

Nutanix ABS ボリューム のサーバとの接続

移行元、移行先の ABS ボリュームの接続方法は、あえて別の方法にします。

  • 移行元の ora-sv-a では、Nutanix AHV の機能で、VM へ直接接続する。AHV(KVM)の VM から、 QEMU の iSCSI イニシエータで接続され、ゲスト OS の Linux からは 直接接続された SCSI ディスクのように見える。
  • 移行先の ora-sv-b では、Linux OS がもつ iSCSI イニシエータで接続する。

f:id:gowatana:20160903225724p:plain

今回は Oracle ASM を使用します。

移行先サーバにボリュームを接続しただけでは Oracle Database が表領域として認識しないので、Oracle TTS(Transportable Tablespace)という機能を使用します。

移行先サーバには、下記のように移行ます。

  1. ora-sv-a で使用していた Nutanix VG を Clone して ora-sv-b に接続する。
  2. ASM で管理されているデータを、Oracleトランスポータブル表領域(TTS)として移行先の Oracle Database にインポートする。

f:id:gowatana:20160904230248p:plain

 

つづく。

 

Nutanix CE ABS の VG を Linux に 「Attach to a VM」 接続してみる。

Nutanix CE の Acropolis Block Services(ABS) の Volume Group(VG)を、Linux VM に「Attach to a VM」で接続してみました。この場合、ゲスト OS の iSCSI Initiator ではなく、Acropolis Hypervisor(AHV = KVM) の、QEMU がもつ iSCSI Initiator 機能で  VM に直接 vDisk が接続されます。

VG は、以前の投稿で作成した「vg01」を流用します。

VG には、8GB、40GB の 2つの vDisk を含みます。

f:id:gowatana:20160724203537p:plain

続きを読む

Nutanix CE で Prism Leader を見てみる。

Nutanix CE の CVM で、Prism Leader を見てみました。
Nutanix Bible によれば、curl コマンドで確認できるようです。

※「Prismのサービス」→ 「プロからのヒント」 のあたり。

Nutanix CE ce-2016.04.19-stable の CVM で curl を実行してみます。

nutanix@NTNX-b3b7a3a8-A-CVM:10.1.1.11:~$ cat /etc/nutanix/release_version
el6-release-ce-2016.04.19-stable-0b2be21bf9c99b13a037762f42c8cd1510384c00
nutanix@NTNX-b3b7a3a8-A-CVM:10.1.1.11:~$ cat /etc/nutanix/svm-version
4.6r15

残念ながらシングルノード クラスタですが、このように見えます。

nutanix@NTNX-b3b7a3a8-A-CVM:10.1.1.11:~$ curl -s localhost:2019/prism/leader | more
10.1.1.11:9080

ためしに Zookeeper をのぞいてみると、同様に Leader に見えました。

nutanix@NTNX-b3b7a3a8-A-CVM:10.1.1.11:~$ zkls /appliance/logical/leaders/prism_monitor
n_0000000010
nutanix@NTNX-b3b7a3a8-A-CVM:10.1.1.11:~$ zkcat /appliance/logical/leaders/prism_monitor/n_0000000010 | more
Handle: 10.1.1.11:9080 Currently leader (Y/N): Yes

以上

Nutanix CE の Zookeeper を見てみる。

Nutanix CE で構成情報を管理しているという Zookeeper をのぞいてみました。

CVM のバージョンです。

nutanix@NTNX-b3b7a3a8-A-CVM:10.1.1.11:~$ cat /etc/nutanix/svm-version
4.6r11

CVM に Zookeeper のクライアント系のコマンドが入ってました。

nutanix@NTNX-b3b7a3a8-A-CVM:10.1.1.11:~$ which zkcli
/usr/local/nutanix/cluster/bin/zkcli
nutanix@NTNX-b3b7a3a8-A-CVM:10.1.1.11:~$ which zkls
/usr/local/nutanix/cluster/bin/zkls

zkls で、たどってみます。(zkcli ls ~でも見られます。)

続きを読む
©2023 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。