OpenStack Manila on NetApp

#Manilaとは

Manilaとは、ファイル共有サービスを提供するOpenStackのコンポーネントです。Libertyから正式リリースされました。
今回は、Devstackを使用してNetAppストレージのFASシリーズ上にNFSサーバを作成しVMからmountするまでの手順について記載します。
2015/12/19時点の情報になります。

#Manila on NetAppアーキテクチャ

NetAppのFASシリーズ用のOSであるONTAPは、仮想ストレージとしてSVM(storage virtual machine)を提供することができます。NetApp Manila Driverは、このSVMの提供方式の違いにより2つの構成を取ることができます。

##Single SVM構成
1つのSVMを複数のテナントで共有します。

以下のネットワーク構成例では、Floating IP経由で接続するパターンとNFS接続専用のネットワークを使用する構成について記載しています。
![singleSVM.png](https://qiita-image-store.s3.amazonaws.com/0/78184/c164c9ec-e212-46ea-c24f-d5ad2b3c7ded.png)

##Multi SVM構成

テナントごとにSVMを作成して占有します。
DataONTAP8.3から、IPspaceという機能がサポートされました。IPspaceにより1台の物理ストレージ内でIPアドレスの重複が可能になりテナントごとにIPアドレスのレンジを考慮する必要がなくなります。

以下のネットワーク構成例では、テナントごとにIPspaceが作成されそれぞれが独立したネットワークとNFSサーバを持っています。

![MultiSVM.png](https://qiita-image-store.s3.amazonaws.com/0/78184/588d8ebf-5c85-b33e-f593-36202877a6a8.png)

#環境と前提
以下のURLを参考にDevstackでmanilaを構築する
[https://wiki.openstack.org/wiki/Manila/manila-devstack-script]

#Manila ネットワークプラグイン
以下の3つのプラグインが準備されています。NetApp Manila Driverは、SVMのLIFやVlanを作成する際の入力情報をプラグイン経由で取得します。

・Standalone Network Plugin
OpenStackのネットワーク系のコンポートネントと連携せず、手動でIPアドレスレンジ、ネットマスク、デフォルトゲートウェイ、vlanをmanila.confに記載してその情報を元にSVMのLIF、vlanなどを作成する。

・Nova Network Plugin
Share Network作成時に指定したNova Networkの情報を元にSVMのLIF、vlanなどを作成する。

・Neutron Network Plugin
Share Network作成時に指定したNeutron Networkの情報を元にSVMのLIF、vlanなどを作成する。

#Multi SVM構成の手順

ONTAP8.3とNeutron Pluginを使用する環境


1.Devstackで作成したbr-eth1にNFS接続用のインターフェースを追加して起動する。

```
$ sudo ovs-vsctl add-port br-eth1 eth1
$ sudo vi /etc/network/interfaces
#追加(IPアドレスなし)
auto eth1
iface eth1 inet manual
        up ip link set dev $IFACE up
        down ip link set dev $IFACE down
$ sudo ifup eth1
```

2.Neutron設定。ONTAPがvxlanをサポートしていないため、テナントネットワークをvlanに変更する。

```
$ vi /etc/neutron/plugins/ml2/ml2_conf.ini
#修正
tenant_network_types = vlan

```
3.Neutronサービスを再起動する。

4.Neutron Networkとsubnetを作成する。vlan idとネットワークは適当につける。

```
$ cd devstack/
$. openrc admin demo
$ neutron net-create private2 --provider:network_type vlan --provider:physical_network physnet1 --provider:segmentation_id 151
$ neutron subnet-create --name private2-subnet private2 192.168.210.0/24
```

5.Manila設定する。

```
$ vi /etc/manila/manila.conf
[DEFAULT]
・・・
#修正
enabled_share_backends = cdotMultipleSVM
#追加(Neutron Pluginを設定)
network_api_class=manila.network.neutron.neutron_network_plugin.NeutronNetworkPlugin


[cdotMultipleSVM83]
share_backend_name=cdotMultipleSVM83
share_driver=manila.share.drivers.netapp.common.NetAppDriver
driver_handles_share_servers=True
netapp_storage_family=ontap_cluster
netapp_server_hostname=[Cluster管理用のIPアドレスを指定]
netapp_server_port=80
netapp_login=admin
netapp_password=[adminユーザのパスワード]
netapp_transport_type=http
netapp_root_volume_aggregate=[SVMのroot volumeを作成するaggrを指定]
netapp_aggregate_name_search_pattern=[NFS Share用のFlexVolを作成するaggrを指定]
netapp_port_name_search_pattern=[LIFのhome portとなるインターフェースを指定]
netapp_trace_flags=True
```

6.Manilaサービスを再起動する。

7.Share network作成する。ここで指定したNeutron　NetworkとSubnetをもとにSVM作成時のLIFのIPアドレスとvlanが自動作成される。


```
$ manila share-network-create --neutron-net-id [net-id] --neutron-subnet-id [subnet-id] --name sn
$ manila share-network-list
$ manila share-network-show [share-network-id]
```

8.NFS shareを作成する。

```
$ manila create --share-type default --share-network sn NFS 1
$ manila list
$ manila show [share-id]
```

9.mount確認

```
$ ssh [ユーザ名]@[vmのFixed IPアドレス]
$ sudo mount -t nfs [LIFのIPアドレス]:/[Share名] /mnt
$ df
Filesystem                                                1K-blocks   Used Available Use% Mounted on
/dev/vda1                                                   1124108 705164    339104  68% /
none                                                              4      0         4   0% /sys/fs/cgroup
udev                                                          49552      4     49548   1% /dev
tmpfs                                                         11804    472     11332   4% /run
none                                                           5120      0      5120   0% /run/lock
none                                                          59016      0     59016   0% /run/shm
none                                                         102400      0    102400   0% /run/user
*192.168.210.3:/share_dde064f8_99ba_4b27_9f89_f0d3d993971b    996160    128    996032   1% /mnt*
```

#NetApp Manila Driverの動作の流れ
MultiSVM + ONTAP8.3 + 2Node Cluster環境でmanila createした際の動きは以下になります。

1. IPspaceを作成する。
2. svm作成を作成する。
3. svmが管理するaggrを変更。manila.confの「netapp_aggregate_name_search_pattern」で指定したaggrに変更する。
4. vlanを作成する。＊FASのnode数分実施
5. LIF(Logical Interface)を作成する。＊FASのnode数分実施
6. Broadcast Domainを作成する。
7. NFSサービスを有効化する。
8. export ruleを作成する。
9. NFS Share用のFlexVolを作成する。

#参考URL
DevstackによるManila構築
[https://wiki.openstack.org/wiki/Manila/manila-devstack-script]

Manilaのネットワークプラグインについて
[https://wiki.openstack.org/wiki/Setting_up_Manila_Network_Plugins]

OpenStack Deployment and Operations Guide
[http://netapp.github.io/openstack-deploy-ops-guide/kilo/content/]