【Nutanix AHV】Nutanix AHVにおけるストレージの理解

みなさん、こんにちは！
今回はNutanix AHVにおけるストレージについて、図を元に説明します。

今まで掲載したNutanixに関する技術ブログを以下にまとめていますので、是非ご覧ください！
■Nutanix 関連記事
・[Nutanix AHVとは](https://qiita.com/ReQ_HY/items/a797b201e9c349fbf106)
・[Nutanix AHVの機能について](https://qiita.com/ReQ_HY/items/4a9d34cfd8ab97ae6d4a)
・[Nutanix AHVの機能(ストレージ関連)について](https://qiita.com/ReQ_HY/items/36e48336eba584cdff33)
・[Nutanix AHVへの移行について](https://qiita.com/ReQ_HY/items/71d2228878605174c96a)
・[【Nutanix AHV】Nutanix AHV構築してみた！](https://qiita.com/ReQ_HY/items/42bbdff45ab8e521c093)
・[【Nutanix AHV】Prism Elementとは？Prism Centralとは？](https://qiita.com/ReQ_HY/items/2aca82f4971d089bb800)
・[【Nutanix AHV】PrismCentral導入してみた](https://qiita.com/ReQ_HY/items/f8f771b9eb2209d47256)
・[【Nutanix AHV】Nutanix Moveデプロイ](https://qiita.com/ReQ_HY/items/3d1263273d8873911125)
・[【Nutanix AHV】VMware ESXiからNutanix AHVへの仮想マシン移行【Nutanix Move】](https://qiita.com/ReQ_HY/items/e742921f866d9947f9f4)
・[【Nutanix AHV】仮想マシン構築（Linux/Windows Server）](https://qiita.com/ReQ_HY/items/2b9fa7413bbee5de602b)
・[【Nutanix AHV】AHV/CVM/クラスターの起動停止](https://qiita.com/ReQ_HY/items/0a374d1e761db5c6a8e1)

## ストレージ
Nutanixのストレージには分散ストレージファブリックやブロックストレージサービスなど、さまざまな要素が存在します。
今回はその中でも特に重要な、以下の3つのキーコンポーネントに焦点を当てて説明をいたします。
※ファイルストレージ(Files Storage)、オブジェクトストレージサービス(Objects Storage)については、別の機会に詳しく説明いたします。
 * Storage Pool
 * Storage Container
 * Volumes
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/0f963a32-0054-43ce-acd0-66146ee4dbec.png)

### Storage Pool
まず初めにStorage Poolについて、簡単に説明いたします。
Storage Poolは以下のように各AHVのローカルストレージを1つのストレージ(分散ストレージファブリックを使用)として、Nutanixクラスターで使用しています。
図にすると以下となっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/bb5aeb78-c771-452d-96b9-6d0b8d7b2800.png)

ローカルストレージの設定は以前Nutanix AHV(CE版)構築記事で設定したDataディスクを元にしています。

### Storage Container
Storage Containerは、以下のようにStorage Poolから論理的にボリュームを切り出して使用しています。
こちらはVMware ESXiでいうデータストアとなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/430c8e1f-7616-4397-b4a0-32add01339bd.png)

仮想マシンの仮想ディスクを作成したり、OSインストール時などに必要となるISOファイルを配置したりする際に使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/0069740f-a592-449f-9c72-db89d29589b6.png)

### Volumes
Nutanix Volumesは以下のようにStorage Poolよりボリュームを論理的に切り出して、ブロックストレージとして提供しています。
VolumesはOracle RACやWSFCで使用することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/6355206e-ce51-4e0a-95aa-707c70bda48b.png)

Volumesは「Volumes Internal」と「Volumes External」の2種類あります。
#### Volumes Internal
Volumes InternalではCVMによりNutanix上で作成された仮想マシン単位でVolumesの利用を管理しています。
そのため、IPやIQNは不要となりPrism(Web UI)から数クリックで設定することが可能となっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/4708b9a7-e126-4c8a-8d07-3c8e6fcf6f53.png)

#### Volumes External
Volumes ExternalではCVMをiSCSI Target、OSをiSCSI InitiatorとしてCVM-OS間でボリュームグループの利用を管理しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/968c30fc-cac4-4f35-994a-47e13bdbe4ff.png)

Internalとは異なり、使用対象をIPやIQN単位で設定を行います。
公式ドキュメントではIQNの使用がベストプラクティスとなっています。
```ruby:qiita.rb
Populate VG allowlists with IQNs rather than IP addresses.
```

iSCSI TargetのIPアドレスはNutanixクラスターに対してDataService IPの設定をします。
設定は[Prism Element]→[設定]→[クラスタ詳細]→[iSCSIデータサービスIP]に行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956386/9ac4def9-40e2-46c9-b86d-090b1503aec8.png)

Externalでは外部にサーバーからもVolumesの利用が可能となっています。
※外部からの使用はNCI Proライセンスが必要となります。

InternalとExternalを簡単に表で比較しました。
| 項目 | Volumes Internal | Volumes External |
|:-|:-|:-|
| 管理レベル  | 仮想マシン  | OS  |
| 管理方法  | Prism-Volume Groupに仮想マシンをアタッチ  | iSCSI Target-Initiator  |
| ライセンス  | Starterライセンス  |  一部Proライセンスが必要 |

## 最後に
仮想マシン/OS間での共有ボリュームが必要となる場合、NutanixではVolumesという機能があるため
新しくストレージ製品を用意する必要がなく、すぐに使用することが出来ます。
Oracle RACやWindows Server Failover cluster(WSFC)でも利用可能となっています。