ONTAP Simulator 9.11 を Linux KVM で動かす(OS起動まで)

NetAppのStorage OSである ONTAPの Simulatorを Linux KVM 上で動かします。

今回は、OSが起動してクラスタセットアップウィザードにアクセスできるようになるところまで進めてみます。

**お約束ではありますが、ONTAP Simulatorの Linux KVMでの利用はメーカーの想定する利用方法から外れます。**  
**あくまで自己責任で、NetAppやパートナ各社への問い合わせ等は避けていただけるようお願いいたします。**

## 環境

- Debian 11.5
- kvm
- qemu (1:5.2+dfsg-11+deb11u2)
- libvirt (7.0.0-3)
- ONTAP Simulator 9.11.1

## Install方法

ONTAP Simulatorは OVAファイルとして配布されています。

通常、KVM環境にOVAを展開するためには virt-v2v を使うと思います。

ただ、virt-v2vは libguestfs関連等、依存関係から大量のパッケージを必要としてきます。
このため、今回は OVAファイルを展開し、libvirtのshellである virshを使ってインストールする事にしていきます。

### OVAファイルの入手

**NetAppのサポートサイトにログインできるアカウントが必要になります。**  
**再配布等は禁止されておりますので、利用条件等をよく読んでご利用ください。**

1. [https://mysupport.netapp.com/site/global/dashboard](https://mysupport.netapp.com/site/global/dashboard) にアクセスします。
2. DOWNLOADS -> Product Evaluationをクリック  
   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128512/b89a5a5d-3ee0-6c62-6577-7bf51349bcb3.png)
3. Data ONTAP&trade; Simulatorのリンクをクリック
4. 「terms of the license agreement」を確認してチェックして[Continue]
5. 以下のファイルをダウンロード
    - 評価ライセンス CMode_licenses_9.x.txt
    - Hash MD5Checksums_9.x.txt
    - シミュレータ OVAファイル: vsim-netapp-DOT9.x-cm_nodar.ova
    - マニュアル PDF類

### OVAファイルの展開

tarを使って適当なフォルダにファイルを展開します。

```console
user@kvm:~/work/ontap9.11.1$ tar xf ../vsim-netapp-DOT9.11.1-cm_nodar.ova
user@kvm:~/work/ontap9.11.1$ ls -l
total 705088
-rw-r--r-- 1 user user 721741824 Jul 13 12:47 vsim-NetAppDOT-simulate-disk1.vmdk
-rw-r--r-- 1 user user     71168 Jul 13 12:47 vsim-NetAppDOT-simulate-disk2.vmdk
-rw-r--r-- 1 user user     71680 Jul 13 12:47 vsim-NetAppDOT-simulate-disk3.vmdk
-rw-r--r-- 1 user user    100352 Jul 13 12:54 vsim-NetAppDOT-simulate-disk4.vmdk
-rw-r--r-- 1 user user       408 Jul 13 12:46 vsim-NetAppDOT-simulate.mf
-rw-r--r-- 1 user user      7859 Jul 13 12:46 vsim-NetAppDOT-simulate.ovf
```

### 仮想マシンスペックの確認

詳細は vsim-NetAppDOT-simulate.ovf ファイルを確認してもらえば分かりますが、以下の様な構成になっています。

- 2 vCPU
- 6144MB RAM
- IDE Contoller 0
  - IDE disk1 vsim-NetAppDOT-simulate-disk1.vmdk
  - IDE disk2 vsim-NetAppDOT-simulate-disk2.vmdk
- IDE Controller 1
  - IDE disk3 vsim-NetAppDOT-simulate-disk3.vmdk
  - IDE disk4 vsim-NetAppDOT-simulate-disk4.vmdk
- Network interface Card
  - E1000 (e0a) - host only
  - E1000 (e0b) - host only
  - E1000 (e0c) - nat
  - E1000 (e0d) - nat

### qcow2に変換

qemu-img を使って vmdkを qcow2に 変換します。

```console
qemu-img convert -O qcow2 vsim-NetAppDOT-simulate-disk1.vmdk vsim-NetAppDOT9.11.1-simulate-disk1.qcow2
qemu-img convert -O qcow2 vsim-NetAppDOT-simulate-disk2.vmdk vsim-NetAppDOT9.11.1-simulate-disk2.qcow2
qemu-img convert -O qcow2 vsim-NetAppDOT-simulate-disk3.vmdk vsim-NetAppDOT9.11.1-simulate-disk3.qcow2
qemu-img convert -O qcow2 vsim-NetAppDOT-simulate-disk4.vmdk vsim-NetAppDOT9.11.1-simulate-disk4.qcow2
```

出来上がった ディスクを 適当な Storage Poolにアップロードしてください。

### Networkの接続について

私の使っているKVMのマシンではブリッジを以下の様に作成しています。

- br0 - local network
- br4 - hostonly network

以下のように使うことにします。
domainのnetwork設定は適宜お使いの環境にあわせて設定してください。

- e0a - br4 (MTU9000)
- e0b - br4 (MTU9000)
- e0c - br0
- e0d - br0

#### e0aと e0b（クラスタネットワーク）についての補足

e0aとe0b、この 2つのポートは、現在はクラスタを組むのに必要な設定として MTU 9000で設定しています。ただし、クラスタセットアップ時に、1ノードだけで作る シングルノードクラスタを指定すると、クラスタネットワークは不要となり、e0c/e0dと同様に MTU1500で汎用のポートとして開放されます。

シングルノードクラスタの場合は 自由に使う事ができますので、ネットワークの設定はそれを前提とした形に変更していただいてかまいません。

### 仮想マシンの設定

仮想マシンの構成は以下になります。例ではontapsim.xmlとして保存しています。

```xml:ontapsim.xml
<domain type='kvm'>
    <name>ontapsim</name>
    <os>
        <type>hvm</type>
        <boot dev='hd'/>
    </os>

    <cpu mode='host-passthrough'/>
    <vcpu>2</vcpu>
    <memory unit='MiB'>6144</memory>

    <features>
        <pae/>
        <acpi/>
        <apic/>
        <hap/>
    </features>

    <devices>
        <graphics type='vnc' autoport='yes' listen='0.0.0.0'/>
        <video/>

        <serial type='pty'>
            <target port='0'/>
        </serial>

        <console>
            <target type='serial' port='0'/>
        </console>

        <disk type='file' device='disk'>
            <driver name='qemu' type='qcow2'/>
            <source file='/var/lib/libvirt/images/nfs-pool/vsim-NetAppDOT-simulate-disk1'/>
            <target dev='hda' bus='ide'/>
        </disk>
        <disk type='file' device='disk'>
            <driver name='qemu' type='qcow2'/>
            <source file='/var/lib/libvirt/images/nfs-pool/vsim-NetAppDOT-simulate-disk2'/>
            <target dev='hdb' bus='ide'/>
        </disk>
        <disk type='file' device='disk'>
            <driver name='qemu' type='qcow2'/>
            <source file='/var/lib/libvirt/images/nfs-pool/vsim-NetAppDOT-simulate-disk3'/>
            <target dev='hdc' bus='ide'/>
        </disk>
        <disk type='file' device='disk'>
            <driver name='qemu' type='qcow2'/>
            <source file='/var/lib/libvirt/images/nfs-pool/vsim-NetAppDOT-simulate-disk4'/>
            <target dev='hdd' bus='ide'/>
        </disk>

        <interface type='bridge'  trustGuestRxFilters='yes'>
            <source bridge='br4'/>
            <model type='e1000'/>
            <mtu size='9000'/>
        </interface>
        <interface type='bridge'  trustGuestRxFilters='yes'>
            <source bridge='br4'/>
            <model type='e1000'/>
            <mtu size='9000'/>
        </interface>
        <interface type='direct'  trustGuestRxFilters='yes'>
            <source dev='br0' mode='bridge'/>
            <model type='e1000'/>
        </interface>
        <interface type='direct'  trustGuestRxFilters='yes'>
            <source dev='br0' mode='bridge'/>
            <model type='e1000'/>
        </interface>
    </devices>
</domain>
```

仮想ディスクの指定、ネットワークの指定についてはお使いの環境にあわせて調整してください。

初期セットアップ用に Graphics Consoleで接続可能なようにKVMホスト外からVNCで接続できるようにlisten設定しているので注意してください。[^serialsetup]

[^serialsetup]: シリアルポートも設定していますが、初期ログインは出来ず、自動設定されたマネージメントIPアドレスについても特に出力されないため VNC側で確認することをおすすめいたします。

### 仮想マシンの定義と起動

仮想マシンを起動します。

```bash
virsh create ontapsim.xml
```

起動はそれなりに時間がかかります。

### 起動中の出力の確認

graphics consoleに接続する場合は 適当な VNC Clientで接続します。

```console:VNC Serverの確認
user@kvm:~$ virsh domdisplay ontapsim
vnc://localhost:0
```

#### ネットワーク接続の確認

ここで環境によってはネットワークの接続が狂う場合があると思います。そのような場合には ONTAPが認識しているネットワーク・インターフェースと仮想マシンの設定が正しいことを確認してください。

ONTAP側のMACを確認するためにVNCの画面からadminでログインします。このタイミングではパスワードは不要です。

ログインしたら以下のコマンドを実行します。

```bash:ポートの確認
network port show -fields mac
```

![20221008151234-kvm.local_0 (QEMU (ontapsim)) - VNC Viewer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128512/acfc40ed-9f5f-f2c8-bc59-69bb82d8bfdb.png)

ここで表示されたMACとKVMホスト側で設定されているMACで狙ったネットワークに接続されているかどうかを確認します。

```bash:macvtapのMAC確認
ip address show type bridge_slave
ip address show type macvtap
```

![20221008152820-Window.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128512/14314090-4680-1319-6d4e-026821527de9.png)

#### DHCPがある環境の場合

起動が完了して、DHCPが有効な環境の場合以下の様にIPアドレスが表示されます。

![20221008150912-kvm.local_0 (QEMU (ontapsim)) - VNC Viewer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128512/6cc80f94-251c-a3ce-552c-a18810e3fc27.png)

指定されたURLにブラウザでアクセスしてクラスタセットアップウィザードの設定を進めてください。

#### DHCPが無い環境の場合

DHCPが無い環境の場合、mgmt_autoに対しては Auto IPがふられます。

```bash:auto ipの確認
network interface show
```

![20221008141656-kvm.local_0 (QEMU (ontapsim)) - VNC Viewer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128512/c17fd1d0-782a-36d2-d310-bbfabf1dd079.png)

Auto IPで接続可能な端末があれば、ブラウザから接続して設定を進めればOKです。  
Auto IPが接続出来なければ、vncのコンソールからCLIで cluster setup wizardを使って設定を進めてください。

```bash:cluster setup wizardの起動(cli)
cluster setup
```

## この後は……

OSが起動するところまで到達できたので、ONTAPでクラスタの設定を行って設定を進めていくことになります。
無事ブラウザからアクセスできた方はここから先は **日本語Web GUI** で進められます。

![20221008140246-Window.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128512/47521dc0-323f-536c-ba90-98e105ef5b41.png)

クラスタのセットアップは長くなるので、また次の記事にしたいと思います！