Nutanix Community Edition（ce-2015.11.05-stable）でiSCSIターゲットを試す

![image](https://qiita-image-store.s3.amazonaws.com/0/84474/575ce34c-d602-bdc7-5a49-638dd85deb13.png)

[Nutanix Advent Calendar 2015](http://www.adventar.org/calendars/1124)の最終日，12月25日分としての投稿になります。
**本記事の内容はこの日付時点の情報（ce-2015.11.05-stable）に基づいています。そのため，今後新しいバージョンが提供された場合に，当該記載と矛盾が生じる場合がありますのでご注意ください。また，さわりはじめたばかりで認識誤り等があるかもしれません。おかしい，なんか違う等ありましたらご一報を。**

# はじめに
Nutanixは，もともと高い耐障害性や可用性を有するGoogleの分散ストレージを手本とし，そこに独自にパフォーマンスを確実に確保するためのティアリング機能，イレージャーコーディング技術や重複排除機能等を加えたストレージ機能をCVMを通じて提供しています。
これまでNutanix内で管理されるストレージ領域は当然のことながらNutanixがインストールされた仮想化基盤の中でのみ利用することが可能でしたが，ついにNutanix 4.5ベースのce-2015.11.05-stableで，このストレージをiSCSIを通じて外部に提供する機能が実装されました。

今回は，このNutanixのストレージ機能を任意に利用可能なNutanix CEのiSCSIターゲットについて**CLIがとても苦手**な私が試してみたいと思います。

# Nutanix CEが提供するiSCSIターゲット機能の概要
## Nutanix CEのiSCSIターゲットについて
Nutanixは，CVMがストレージコントローラーの役割や他のノードのCVMとの連携を行っており，今回ce-2015.11.05-stableで提供されたiSCSIターゲット機能についても，実質的にCVMが提供する機能になります。ce-2015.11.05-stableで実装されたiSCSI機能（iSCSIターゲット機能）は，機能そのものとしては一般的なiSCSIターゲットと変わりありません。ターゲットを作成し，Nutanix CEのiSCSIターゲットを利用したいホストのイニシエーターIQNを登録し，イニシエーター側からマウントをするだけで，Nutanix側から提供するiSCSIディスクが利用可能となります。

※iSCSIターゲット：　ディスク領域を提供する側
※iSCSIイニシエーター：　ディスク領域を利用する側

Nutanix CEのiSCSIターゲットを利用する際に注意すべき点があるとすると，以下の2つになります。

- iSCSIターゲットの構成はaCLI（Acropolis CLI）からのみ
- iSCSIターゲットを含むディスク領域は，Data Protection対象外

### iSCSIターゲットの構成はaCLI（Acropolis CLI）からのみ
現時点において，Nutanix CEでiSCSIターゲットを構成，設定する場合すべてaCLI（Acropolis CLI）から行う必要があります。この機能については，残念ながらPRISMのGUIには実装されていません。しかし，iSCSIターゲットをは，たった3回コマンドを叩くだけで，利用可能となります。次期以降のリリースでPRISM上から操作できるようになってくれないかなと個人的に期待しています。

### iSCSIターゲットを含むディスク領域は，Data Protection対象外
現時点において，Nutanix CEで提供しているディスク領域は，Nutanixで提供されているバックアップ，ディザスタリカバリー機能であるData Protectionの対象外となっています。Data Protectionでバックアップやスナップショットが取れるのは，あくまでNutanix CE上で動作するVMのみが対象となり，iSCSIターゲットで提供している領域は対象外であるため，仮にバックアップを取得したい場合は，別の手段を講じる必要があります。

## Nutanix CEのiSCSIターゲットのユースケース
Nutanix CEのiSCSIターゲットを利用するユースケースは以下の2つ程度になるかと思います。

- Nutanix CE上で動作するVMから利用する
- Nutanix CEの外にある物理/仮想マシンから利用する

### Nutanix CE上で動作するVMから利用する
Nutanix CE上で稼動するVMからiSCSIイニシエーターを使ってアタッチして利用するユースケースです。これからインストールするVMにディスクを追加したい場合は，iSCSIターゲットを利用せずに，VMを作成する際に，大きめのディスク領域を設定し，インストール時やインストール後に，パーティションニングを行うことができますが，既に運用を開始しているVMにおける動的なディスクサイズの変更は難しいため，VMを停止することなく増やしたい場合等には，利用するケースがあるのではと思われます。


### Nutanix CEの外にある物理/仮想マシンから利用する
Nutanix CE上のVM等ではないNutanix CEとネットワーク的に疎通があるネットワークセグメントに存在する物理マシン，あるいはNutanixをインストールしていない別のVMware vSphereやHyper-V，KVM等の仮想化基盤上に搭載されているVMのiSCSIイニシエーターから接続するケースです。
先に述べたとおり，Nutanix外部から見ると，何の変哲も無いiSCSIターゲットに見えるため，iSCSIイニシエーターが動作すれば，特にプラットフォーム等を選びません。

# 実際にNutanix CEのiSCSI機能を試す
それは，さっそくNutanix CEのiSCSIを試してみます。今回は，Nutanix CEの外にある物理マシンから利用設定を行い，その後，デタッチしてiSCSIターゲットを削除するところまで試してみます。

なお，iSCSIの外部提供機能を利用するのにマルチノードクラスター構成は必要なく，耐障害性には欠けますが試すだけであれば，シングルノードクラスター構成でも利用可能です。シングルノードクラスター構成とマルチノードクラスター構成において，特に設定における操作の差分はありません（ただし，マルチパスを構成時を除く）。

## Nutanix CEのiSCSI機能を試す環境
今回，Nutanix CEのiSCSI機能を試す環境は，以下のようになっています。
192.168.100.200のVirtual IPを持つ，4ノードクラスターのNutanix CEがあり，同一のネットワークセグメントに，このネットワーク内におけるActive Directoryである，ML110 G7が設置されており，このML110 G7のIPアドレスは，192.168.100.10となります。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/e58f06f0-9a72-5eee-1b4d-0ad641fbcfcf.png)

##iSCSIターゲットを作成・利用する
iSCSIターゲットの作成及びイニシエーター側からの接続設定を行います。作成に当たって，一部の作業は，イニシエーター側，ターゲット側それぞれ並行して作業を進めることができますが，今回は，以下の順序で作業を行います。
なお，今回の例では，WindowsからiSCSIターゲットを利用する想定での手順なり，イニシエーター側はWindowsでの作業となります。


### 【必須作業】イニシエーター側の事前準備設定
まず，イニシエーター側の設定を行います。と言ってもたいした操作はなく，単純にイニシエーターのIQN名を取得するだけです。
Windowsには，サーバーOS，クライアントOS問わずiSCSIイニシエーターが標準で搭載されています。ファイル名を指定して実行や検索窓，Windows 8以降であれば，プログラムメニュー上でiscsiと打てば，iSCSIイニシエーターの設定画面を開けるはずです。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/c624e608-2063-1a02-c709-deb5e4f92c33.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/5e52139d-b088-4add-9fe5-e444268fe64b.png)


iSCSIイニシエーター設定画面が開いたら構成のタブを選択します。この構成のタブでは，イニシエーター名が表示されるので，表示されたIQN名をコピーしておきます。今回の例で行くと`iqn.1991-05.com.microsoft:ml110g7.poc.local`を見える状態に開いておくか，メモ帳などにコピーしておきます。
画像![image](https://qiita-image-store.s3.amazonaws.com/0/84474/d7eed8cf-1ecc-99cb-4e0d-f5dcfcbf8b44.png)


### ターゲット側の設定
#### 【任意作業】iSCSI用のContainerの作成
ターゲット側の設定です。iSCSIのディスク提供する領域に明示的に名前を付けておきたい場合などには，事前にiSCSI用のContainerを作成しておきます。

>Nutanixでは，Nutanixのクラスター内の全ノードに接続されたディスクをStorage Poolとして束ね，その中に利用用途ごとのContainerを作成するのが推奨される利用方法です。ここでのContainerとは，あくまでNutanix内のストレージ全体（Storage Pool）から切り出す論理的なディスクボリュームを管理する単位の名称であり，LXCやDocker等とは関係がありません。

今回は，iSCSIディスク提供用にiSCSIと言う名前のContainerを作成しておきます。Storageの管理画面を開き，+ContainerのボタンからContainerを作成します。今回，Container名は，外部へのiSCSI提供領域と言うことで，ext-iscsiと言う名前で作成しておきます。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/5b7e91c4-c344-31de-232b-202c97fc894b.png)

Nutanix CE全体で外部からのアクセスを許可するためのFilesystem Whitelistsは，歯車のメニューからFilesystem Whitelistsを選択することで設定できますが，ContainerごとにFilesystem Whitelistsを設定することで，アクセスが可能なホストを限定することが本来は可能です。
**ただしFilesystem Whitelistsのリストは，CIFSにしか効いていないように見えます。そのため，ce-2015.11.05-stableのバージョンでは，一切のFilesystem Whitelists設定がない状態でも，外部からiSCSIターゲットへのアクセスやData Protectionにより，通信が可能なネットワークセグメントにいる別のNutanix CEクラスターへのリモートスナップショットの作成やディザスタリカバリのマイグレーション等は可能な状態になってしまっています。**

なお，必要に応じて，当該領域に対して，イレージャーコーディング（注：イレージャーコーディング機能を利用するには，RF=2設定のクラスターで最低4ノードが必要）や重複排除（注：メモリ層及びSSD層のみの重複排除の場合はノードあたり24GBメモリ，HDD層も含めた重複排除の場合は，メモリ層及びSSD層の重複排除を有効にした上で，ノードあたり32GBメモリ及び最低300GBのSSD領域が必要），データ圧縮を有効にしたい場合は，Advanced Settingsを開いて，これらを有効にする設定を行います。今回は，特にこれらの機能は使わずに設定を行っていきます。この設定は，Container作成後でも変更することができます。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/5da593df-dc21-53c7-84b4-bf7da51fb18d.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/1d15ae0f-815e-1f83-2873-0f1e3f754ee8.png)



#### 【必須作業】 iSCSIディスクのvgの作成
ここからは，PuTTYやTeraTerm等のターミナルソフトを使って，任意の**CVM**またはVirtualIPに接続して設定を行います（ハイパーバイザー側でなくCVMであることに注意）。今回利用する環境のVirtual IPは，192.168.100.200になりますので，そちらのアドレスをターミナルソフトに入力し，CVMに接続します。

aCLIシェルを起動します。aCLIコマンドを実行するには，aCLIシェルモードに入っても良いですし，bashシェルなどからaclii <acliコマンド>と入力しても，いずれも同じ結果が得られます。今回は，aCLIシェルからの操作で試してみます。aCLIシェルに入るには，bashシェルなどで`acli`と入力するのみです。そうすると，以下のようなacliシェルに入ることができます。acliシェルに入ると，acliコマンドがタブキーで補完できるようになります。
また，acliシェルモードで，`help`と入力するとacliのNamespaceが確認できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/b77024fa-cda6-8267-4dd2-a60708b941e5.png)


```lang:aCLI_Shell_Start
nutanix@NTNX-4bda71a1-A-CVM:192.168.100.113:~$ acli
<acropolis>
```

前置きが長くなりましたが，外のマシン等に払い出すiSCSI領域を作成します。iSCSIディスクに関連するコマンドは，全てvgのNamespaceに含まれています。aCLIシェルでvgまで入力してタブキーを押すと，以下のようなコマンド候補が表示されます。iSCSIディスクを作成するには，次の`vg.create <vg名>`コマンドを投入します。冒頭に合計3回でiSCSIターゲットを外部に提供できると言いましたが，これが1回目のコマンド投入です。今回は，ext-iscsi-ml110と言う名前でvgを作成します。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/dbb8cbb0-53b2-fa50-e527-fcf16ff51f06.png)

```lang:vg.vg.create
<acropolis> vg.create ext-iscsi-ml110
ext-iscsi-ml110: complete
<acropolis>
```
これで，vgが作成されました。しかしまだext-iscsi-ml110と言う名前の論理的な管iSCSIディスクの管理単位，枠組みが作成されたのみで，実際のディスクは切り出されていません。実際にディスクを切り出すには，次の「iSCSIディスクの切り出し（ディスク容量の設定）」で示す，ディスク容量を指定するコマンドを投入する必要があります。

これは任意での実施ですが，必要に応じてvgの一覧や個別のvgを以下のコマンドで確認することができます。

- vgの一覧を取得する

>vg.list

```lang:vg.vg.list
<acropolis> vg.list
Volume Group name  Volume Group UUID
ext-iscsi-ml110    cbc7552a-f74a-45d6-9989-bfe616b15cc2
<acropolis>
```

- 個別のvgの状態を確認する

>vg.get \<vg名\> 


```lang:vg.get
<acropolis> vg.get ext-iscsi-ml110
uuid: "cbc7552a-f74a-45d6-9989-bfe616b15cc2"
name: "ext-iscsi-ml110"
logical_timestamp: 1
iscsi_target_name: "ext-iscsi-ml110"
<acropolis>
```

#### 【必須作業】 iSCSIディスクの切り出し（ディスク容量の設定）
ext-iscsi-ml110と言う名前で作成された，論理的なiSCSIディスクの管理単位，枠組みに実際のディスク容量を割り当て，ディスクを切り出します。
ディスク容量を割り当て，ディスクを切り出しは，次の`vg.disk_create <vg名> container=<コンテナ名> create_size=<ディスク容量>`のコマンドを投入します。これが2回目のコマンド投入です。今回は，100GB分のディスクを作成し，iSCSI経由で提供することにします。

なお，コマンド上におけるディスク容量の指定は，ギガバイト単位で行いますが，単位の指定は`GB`ではなく`G`で指定します。例えば40GB分のディスクを作成したい場合は，コマンド上では`40G`と指定します。

```lang:vg.create_container_size
<acropolis> vg.disk_create ext-iscsi-ml110 container=ext-iscsi create_size=100G
DiskCreate: complete
<acropolis>
```

これで指定した100GB分のディスクの容量が切り出されました。しかし，この切り出されたディスクは誰が使うかが確定していない状態です。次の「iSCSIディスクのvgのアタッチ」作業で，このディスクを誰が使うかを確定します。

#### 【必須作業】 iSCSIディスクのvgのアタッチ
この作業では，作成したvgの利用者を確定します。容量を指定して切り出されたディスクの利用者は，Nutanix CEから提供されるiSCSIを利用したいホストのIQNを付与することで確定します。IQNについては，最初の「【必須作業】イニシエーター側の事前準備設定」で取得した値になります。利用者を確定するには，次の`vg.attach_external <vg名> <イニシエーターのIQN>`のコマンドを投入します。これが3回目のコマンドです。

```lang:vg.attach_external_iqn
<acropolis> vg.attach_external ext-iscsi-ml110 iqn.1991-05.com.microsoft:ml110g7.poc.local
<acropolis>
```

・Nutanix CE上で動作するVMから利用する場合のコマンドについて

>こちらのコマンドを見て気づいた方もいらっしゃるかもしれませんが，`vg.attach_external`とあるとおり，external向けのアタッチするコマンドで，このコマンドと対になるinternal向けのコマンドもあります。ただし，vg.attach_internalではなく，`vg.attach_to_vm`となりますが，こちらのコマンドを実行した場合は，Nuatnix内部で動作しているVMを引数に設定するだけで，稼動中のVMに対してディスク増設が行われることになります。Nutanix内部で動作しているVMに対するディスク追加のコマンド`vg.attach_to_vm`では，特にIQNの情報は必要なくアタッチするVMを指定するだけです。

このコマンドでは，～completeと言うメッセージがでませんので，不安な場合は，必要に応じて`vg.get`のコマンドで確認します。

```lang:vg.get
<acropolis> vg.get ext-iscsi-ml110
uuid: "55f3a879-26c9-4208-98a6-6d9b088eb170"
name: "ext-iscsi-ml110"
logical_timestamp: 5
disk_list {
  index: 0
  vmdisk_uuid: "0a26db5d-93e4-4709-8336-38b63c747f71"
  container_id: 768484
  vmdisk_size: 107374182400
}
iscsi_target_name: "ext-iscsi-ml110"
attachment_list {
  external_initiator_name: "iqn.1991-05.com.microsoft:ml110g7.poc.local"
}
<acropolis>
```

これで，ターゲット側の作業は完了です。次の作業から再びイニシエーター側を操作します。

### イニシエーター側からの接続設定
ターゲット側の準備が整ったら，イニシエーター側からは，ディスクが見える状態になっているハズです。iSCSIイニシエーターでは，基本的に，iSCSIターゲットの検索し，検索の結果，見つかったターゲットとそのターゲットが提供しているiSCSIディスクに接続し，ディスクがマウントできたところで，フォーマットしてiSCSIディスクの利用を開始します。

#### 【必須作業】 iSCSIターゲットの検索と接続
まずは，iSCSIターゲットの検索を行います。iSCSIプロトコルは，ポートの3260番を利用します。そのため，Nutanix CEとiSCSIを利用したイニシエーターが動作しているホストとの間にファイアウォール等が存在する場合は，ポート3260番を開放しておく必要があります。iSCSIイニシエーター設定画面を開いて，検索のタブを開いて「ポータルの検索」から，ターゲットポータルのIPアドレス入力します。ここでのターゲットポータルとは，iSCSIターゲットのことと考えてかまいません。今回でいくと，iSCSIターゲットを提供するNutanix CEのVirtual IPである192.168.100.200を入力します。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/30d9b058-acfe-b875-bcf0-bfa3e81b8f39.png)

>もしくは，ターゲットタブを開いて，ターゲットの入力欄にNutanix CEのVirtual IPを入力しクイック接続を行うと，以下の「【必須作業】 iSCSIターゲットディスクへの接続」の手順をすっ飛ばしてその次の手順である「【必須作業】 ディスクのオンライン化及び初期化」に移ることもできます。

- マルチパス構成（MPIO）について

>
今回の例ではマルチパス（MPIO）構成は利用しません。Nutanixをマルチノードで構築した場合，もともとマルチパスを構成しやすい素養はあるのですが，イニシエーター側にも複数枚のNICまたは，単一のNIC上の複数ポートにそれぞれIPを設定した上で対応する必要があります。
マルチパスを構成したい場合は，ターゲットの検索は，Virtual IPアドレスではなく，Nutanix CEのクラスターを構成する各ノードのCVMのIPアドレスを個別にそれぞれ入力しておく必要があります（ただし，あくまで検索で4つのノードを見つけておくだけでターゲットのIQNは1つしか見えない）。ターゲットの接続時に「複数パスを有効にする」にチェックをいれた上で，詳細設定から，仮にイニシエーター側には2つにIPアドレスが設定されているとした場合，この2つのIPにそれぞれ，Nutanix CE側のノードのうち任意の2つのCVMのIPアドレスを普段利用するターゲットIPアドレスとして設定することでマルチパスを構成できます。今回は，手順が煩雑になるためマルチパス構成とその設定の詳細については割愛します。

ターゲットポータルにNutanix CEのVirtual IPを入力したら，次はターゲットのタブを選択します。この時点では，入力されたターゲットにはまだ接続されておらず，「検出されたターゲット」に表示されている`iqn.2010-06.com.nutanix:ext-iscsi-ml110`の状態が「非アクティブ」と表示されていますので，このターゲットに接続します。ターゲットのタブの中にある「接続」を選ぶと，ターゲットへの接続というウィンドウが表示されるので「OK」ボタンを押します。これでNutanix CE側で作成した100GBのiSCSIディスクに接続完了です。状態が「接続完了」に変わっていると思います。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/cdc47660-0f10-7f4c-b985-ee67aa13432d.png)

#### 【必須作業】 ディスクのオンライン化及び初期化
ここまで来たら，後は新しくディスクを取り付けた際に行う操作とほぼ同様です。「ディスクの管理」を開きます。システムツールやコンピューター管理等からこちらの画面を開くことができます。また，Windows 8/8.1/10，Windows Server 2102/2012 R2では，「Windowsキー＋x」やスタートボタンの右クリックで表示されるコンテキストメニューから開くこともできます。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/fc846d98-7395-b16b-67c0-7bdde0660d9b.png)

ディスクの管理画面で，下の方に「不明」かつ「オフライン」のディスクが見えているハズです。「不明」かつ「オフライン」の文字あたりの上で右クリックで表示されるコンテキストメニューから表示される「オンライン」を選択し，ディスクをオンラインの状態にします。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/f8472460-62c2-36e0-648c-8cd8a6886fb0.png)

オンラインを選択すると，表示が「初期化されていま...」に変化します。オンラインにしたディスクは，初期化処理が必要なので，先ほどと同様に「初期化されていま...」の文字あたりの上で右クリックで表示されるコンテキストメニューから表示される「ディスクの初期化」を選択し，ディスクを初期化します。初期化が完了すると、ほかのディスクと同様に「オンライン」と表示されているはずです。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/ed87ff3d-a479-8f17-91a3-e46def98f8eb.png)

#### 【必須作業】 ディスクのフォーマット
ディスクがオンラインになったら，後はもう迷うことはありません。オンラインになったの上で，右クリックで開かれるコンテキストメニューから「新しいシンプルボリューム」を選択してお馴染みのウィザードを実施し，任意のドライブレターを振って，フォーマットが完了すれば，もうExplorer上から新しいディスクが見えているハズです。iSCSIターゲットから追加したディスクは，プロパティでデバイス名としては，NUTANIX VDISK Multi-Path Disk Deviceと見えるようです。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/2b6c9d3b-e837-4097-b357-d96529810a1e.png)
　
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/19fcedc4-3193-b5c1-4e57-52ee287047ca.png)

なお，「【必須作業】 ディスクのオンライン化及び初期化」「【必須作業】 ディスクのフォーマット」については，Diskpartでも同様の作業が可能なので，Diskpartの方が慣れている方はそちらで作業をするのも良いでしょう。

##iSCSIターゲットを削除する
iSCSIターゲットの利用を中止し，iSCSIターゲットを削除します。iSCSIターゲットの削除は，以下の順序で行います。逆の順序でも大丈夫と言えば大丈夫ですが，逆の順序で行った場合，イニシエーター側でタイムアウト等の待ちが発生するため，この順序で行うのが安全です。

### イニシエーター側の設定・操作
#### 【必須作業】 ボリュームの削除とオフライン化
先ほどまで行っていたディスクの追加手順をほぼ逆順になぞっていくような形になります。まず，「ディスクの管理」を開き，ボリュームの削除の削除を行い，次にディスクをオフライン化します。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/50e69633-b176-f5db-b915-3b3f9bc4dd6e.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/84474/0565e936-eff2-bb6d-bc84-43d592c47f53.png)

#### 【必須作業】 iSCSIターゲットの切断
再び，iSCSIイニシエーター設定画面で，ターゲットタブを開いて「切断」を選択します。「すべてのセッションの切断」のウィンドウが表示されるので「はい」を選択する操作により，Nutanix CEが提供しているiSCSIターゲットとの接続が切断されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/f024f18a-1e1d-6d1e-81fe-b40633f17c90.png)

#### 【必須作業】 「検索」及び「お気に入りのターゲット」の削除
もう1つ重要な作業があります。それは「検索のタブ」及び「お気に入りのターゲット」からの削除です。iSCSIターゲットの接続操作を行った際に，明示的に設定を変更していない限り，デフォルトで接続したiSCSIターゲットは，「お気に入りのターゲット」に追加されます。ここで，iSCSIターゲットを検索後，見つかったiSCSIターゲットに接続するために，ターゲットのタブの中にある「接続」を選んだ時の画面をもう1度見てみると，ウィンドウの中には以下のような文言があります。

>この接続をお気に入りのターゲット一覧に追加する
オンにすると，このコンピューターが再起動するたびに，自動的に接続の復元が試行されるようになります。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/e26e9d0a-30a4-71d0-b35e-2e770e8c3952.png)

こちらが残ったままだと，後述するiSCSIターゲットの削除で既に存在しないiSCSIターゲットをイニシエーター側は毎回起動するたびに延々探しにいくことなり，その検索がタイムアウトするまでWindowsが待ってしまい，起動が非常に遅くなるケースがあますので，iSCSIターゲットのディスクを利用しなくなった場合には，こちらの「お気に入りのターゲット」も忘れずに削除しておきます。

iSCSIイニシエーター設定画面において，iSCSIターゲットとの接続を切断しても連動して「検索」及び「お気に入りのターゲット」から見えているターゲットは削除されません。同様に「検索」を削除しても「お気に入りのターゲット」はやはり削除されず，逆も又しかりですので，個別に削除していく必要があります。
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/c8268593-5644-8dfc-c643-002a38b439d1.png)
![image](https://qiita-image-store.s3.amazonaws.com/0/84474/552ce53d-365b-e1e9-83dd-ee00ef7e5fc9.png)

イニシエーター側での作業は以上になります。残りは，宙ぶらりんになっている，誰にも使われていないiSCSIターゲットをNutanix CE側で削除するのみです。

かなり乱暴ですが，「【必須作業】 ボリュームの削除とオフライン化」を飛ばして「 【必須作業】 iSCSIターゲットの切断」「【必須作業】 「検索」及び「お気に入りのターゲット」の削除」をできないこともありませんが，お勧めはしません。

### ターゲット側の設定・操作
引き続き，iSCSIターゲットを使わなくなった場合のターゲット側での操作になります。ここからは，Nutanix CE側で再びaCLIを使った操作になります。接続の際と同様にPuTTYやTeraTerm等のターミナルソフトを使って，任意の**CVM**またはVirtualIPに接続して設定を行います。こちらも，iSCSIターゲット作成時の手順をほぼ逆になぞっていきます。

#### 【必須作業】 iSCSIディスクのvgのデタッチ作業
この作業では，vgの利用者をアタッチで確定したのと逆で，このvgの利用者を誰でもないものに戻します。具体的には，iSCSIイニシエーターのIQNを削除する作業となり，次の`vg.detach_external <vg名> <イニシエーターのIQN>`コマンドを投入します。attachがdetachになっただけですね。

```lang:vg.dettach_external_iqn
<acropolis> vg.detach_external ext-iscsi-ml110 iqn.1991-05.com.microsoft:ml110g7.poc.local
<acropolis>
```
vg.attach_externalの時と同様に，～completeと言うメッセージがでません。不安な場合は，`vg.get`のコマンドで確認ができます。実際にデタッチする前と後で`vg.get`で見た情報を比較してみます。デタッチ後は，attachment_listが消えています。

- デタッチ前

```lang:before_vg.dettach_external
<acropolis> vg.get ext-iscsi-ml110
uuid: "4f45e859-90f5-4f72-98e9-8b975b9b31b7"
name: "ext-iscsi-ml110"
logical_timestamp: 3
disk_list {
  index: 0
  vmdisk_uuid: "63c26e3f-00c3-496a-9632-24d6fbc876ab"
  container_id: 768484
  vmdisk_size: 107374182400
}
iscsi_target_name: "ext-iscsi-ml110"
attachment_list {
  external_initiator_name: "iqn.1991-05.com.microsoft:ml110g7.poc.local"
<acropolis>
```

- デタッチ後

```lang:after_vg.dettach_external
<acropolis> vg.get ext-iscsi-ml110
uuid: "4f45e859-90f5-4f72-98e9-8b975b9b31b7"
name: "ext-iscsi-ml110"
logical_timestamp: 4
disk_list {
  index: 0
  vmdisk_uuid: "63c26e3f-00c3-496a-9632-24d6fbc876ab"
  container_id: 768484
  vmdisk_size: 107374182400
}
iscsi_target_name: "ext-iscsi-ml110"
<acropolis>
```
#### 【任意作業】 切り出したiSCSIディスクの削除
次に切り出しておいた100GBのディスクを削除します。【任意作業】 としたのは，このディスクを再利用する場合はこの作業が必要ないためです。次の`vg.disk_delete <vg名> <インデックス番号>`コマンドを投入します。インデックス番号は，`vg.get`で見ることができます。1つのiSCSIターゲットに複数のディスクを割り当てていない限り，インデックス番号は「0」のハズです。

```lang:vg.disk_delete_vg_index
<acropolis> vg.disk_delete ext-iscsi-ml110 0
Delete disk? (yes/no) yes
DiskDelete: complete
```

これで，ディスクが削除されました。念のため`vg.get`で再度内容を見てみます。ディスク削除後は，disk_listが消えています。

```lang:vg.get
<acropolis> vg.get ext-iscsi-ml110
uuid: "4f45e859-90f5-4f72-98e9-8b975b9b31b7"
name: "ext-iscsi-ml110"
logical_timestamp: 5
iscsi_target_name: "ext-iscsi-ml110"
<acropolis>
```

#### 【任意作業】 iSCSIターゲットの削除
最後に，vg，つまり一番最初に作成したiSCSIターゲットそのものを削除します。こちらも【任意作業】 としたのは，このvgを再利用する場合はこの作業が必要ないためです。ただ今回は，このiSCSIターゲットを利用するマシン名をvg名に入れてしまっているので，削除したほうが良いでしょう。vgの削除は次の`vg.delete <vg名>`コマンドを投入します。

```lang:vg.delete_vg
<acropolis> vg.delete ext-iscsi-ml110
Delete 1 VGs? (yes/no) yes
ext-iscsi-ml110: complete
<acropolis>
```

これでiSCSIターゲットであるvgが削除されました。念のためにvgの一覧を取得する`vg.list`でvgの削除前と後を比較しています。削除後には，リストに何も表示されていません。これでiSCSIターゲットが削除され綺麗な状態に戻りました。

- vg削除前

```lang:before_vg.delete
<acropolis> vg.list
Volume Group name  Volume Group UUID
ext-iscsi-ml110    4f45e859-90f5-4f72-98e9-8b975b9b31b7
<acropolis>
```

- vg削除後

```lang:after_vg.delete
<acropolis> vg.list
Volume Group name  Volume Group UUID
<acropolis>
```

# まとめ
このように，Nutanix CEのディスクを外部に見せるiSCSI機能は，コマンドを３回叩くだけで簡単に利用することができます。ただし，現時点では，冒頭で述べたとおりaCLIを操る必要があること，Data Protectionの対象外であることに留意する必要があります。

また，**私の方で調べ切れていないだけかもしれませんが**，CHAP認証や個別にLUNを見せるためのマスキングに相当する機能が実装されていないように見えること（知っている方がいらっしゃったら是非教えて下さいませ）と，加えて挙げるならSSDを潤沢に利用する割にWriteそれほど出ていないようなので，この辺に関しては今後のアップデートで改善されることを個人的には期待しています。

この辺の課題が今後のアップデートで解決されていけば，冗長性のあるマルチパス経路を含むNutanixの耐障害性のあるすぐれたストレージ領域が外部にiSCSIディスクとして提供できる機能はとても魅力的です。こちらの機能の実装がもう少し進み，この機能が充実したものになれば，それこそNutanixがインストールされた仮想化基盤以外のシステムにおいてもレガシーな比較的高額ないわゆる共有ディスク装置と呼ばれる機器が不要になります。

とにかく，iSCSI機能については，今後のアップデートに期待です！