openstack project manila

18
OpenStack Project Manila devstack を使って試すための手順~ Takeshi Kuramochi, NetApp February 2015 概要 本書は NetApp が開発に貢献している、OpenStack Manila プロジェクトについてのドキュメント です。本書リリース時点では Incubated ステータスでありコアプロジェクトに向けて開発が進められ ています。細かい部分はこれから調整されるところもありますが概要を理解する上ではほぼ形作られて おり、devstack を用いて動作を確認することができます。本書ではその手順を紹介しています。

Upload: lammien

Post on 03-Feb-2017

229 views

Category:

Documents


2 download

TRANSCRIPT

OpenStack Project Manila~devstackを使って試すための手順~Takeshi Kuramochi, NetAppFebruary 2015

概要

本書は NetAppが開発に貢献している、OpenStackのManilaプロジェクトについてのドキュメント

です。本書リリース時点では Incubatedステータスでありコアプロジェクトに向けて開発が進められ

ています。細かい部分はこれから調整されるところもありますが概要を理解する上ではほぼ形作られて

おり、devstackを用いて動作を確認することができます。本書ではその手順を紹介しています。

目次

1 本書について 3

2 Manilaについて 4

3 準備と前提 4

3.1 Manilaの準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.2 インスタンスの準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

4 Manilaの設定 7

4.1 Manilaシェア用ネットワーク作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4.2 Manila共有ファイル領域作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4.3 Manila共有ファイル領域の ACL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

5 Manila with NetApp Unified Driver 10

6 Manila with Backend cDOT Driver 12

7 Manila共有ファイル領域のマウント 15

8 補足情報 16

8.1 Manila devstack版ソースコード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

8.2 serviceテナントで Cinder Volumeを確認できるようにする . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

8.3 Manila用 Horizon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

8.4 問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

8.5 主要コマンドリスト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

8.6 manila.confのパラメータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

9 参考 17

Manila A Shared File System Service 2 @2015 NetApp K.K. All right reserved

1 本書について

本書は devstackを使って開発中であるManilaを試すための手順を記したものです。Linuxの基本オペレーションの詳細や一

部のコマンド標準出力は省略しています。また、開発中であるため以下の点に注意が必要です。

• brunch stable/junoを使用(2015年 1月末時点での試行を元にしている手順です)

• 予定されている一部の動作を試すことができない• 操作中に予期せぬ不具合が発生する可能性がある

Manila A Shared File System Service 3 @2015 NetApp K.K. All right reserved

2 Manilaについて

NetAppの技術者が中心となって設計・開発を進めている、OpenStackの新しい Project

図 1 Shared File Systems - Manila

• 共有ファイルシステム提供をするサービス• OpenStack のプロジェクトとして 2014年 11月に Incubation に昇格して、次期 Kilo に向けて開発中

• 複数のバックエンドサポート(clustered Data ONTAP , VNX , GlusterFS , GPFS,…)

• マルチテナントモデル• 共有タイプの設定(Cinder同様)

3 準備と前提

• 1ノード devstackを使う事でManilaを試す

• on VMでも可能(ただし、その場合は Hypervisorにしかるべき設定をいれること)

• NICは 3つ搭載

– 管理用

– 外部ブリッジ用

– ストレージネットワーク用

• devstackはmaster branch

3.1 Manilaの準備

1. Ubuntu 14.04 LTS インストール(省略)

2. OSアップデート

# apt -get update

# apt -get upgrade

# apt -get install git

# reboot

3. stackユーザ追加(sudoユーザとして追加)

4. NTP設定

5. devstack準備

stack@stackt :~$ git clone https ://git.openstack.org/openstack -dev/devstack

Cloning into ’devstack ’...

remote: Counting objects: 23420, done.

remote: Compressing objects: 100% (10662/10662) , done.

Manila A Shared File System Service 4 @2015 NetApp K.K. All right reserved

remote: Total 23420 (delta 16655) , reused 19040 (delta 12570)

Receiving objects: 100% (23420/23420) , 4.68 MiB | 2.30 MiB/s, done.

Resolving deltas: 100% (16655/16655) , done.

Checking connectivity ... done.

stack@stackt :~$ git clone -b stable/juno git:// github.com/openstack/manila.git

Cloning into ’manila ’...

remote: Counting objects: 9373, done.

remote: Compressing objects: 100% (201/201) , done.

remote: Total 9373 (delta 88), reused 23 (delta 2)

Receiving objects: 100% (9373/9373) , 3.08 MiB | 1.91 MiB/s, done.

Resolving deltas: 100% (6637/6637) , done.

Checking connectivity ... done.

stack@stackt :~$ cp ./ manila/contrib/devstack/lib/manila ./ devstack/lib

stack@stackt :~$ cp ./ manila/contrib/devstack/extras.d/70- manila.sh ./ devstack/extras.d/

stack@stackt :~$ cd devstack/

6. local.conf編集(もしくは localrc)

[[local|localrc ]]

# Credentials

DATABASE_PASSWORD=devstack

MYSQL_PASSWORD=devstack

ADMIN_PASSWORD=devstack

SERVICE_PASSWORD=devstack

SERVICE_TOKEN=devstack

RABBIT_PASSWORD=devstack

GUEST_PASSWORD=devstack

CINDER_BRANCH=master

TROVE_BRANCH=master

NEUTRON_BRANCH=master

NOVA_BRANCH=master

GLANCE_BRANCH=master

HORIZON_BRANCH=master

OSLOUTILS_BRANCH=master

REQUIREMENTS_BRANCH=master

MYSQL_HOST =127.0.0.1

MYSQL_USER=root

RABBIT_HOST =127.0.0.1

LIBVIRT_TYPE=qemu

GLANCE_HOSTPORT =127.0.0.1:9292

ENABLED_SERVICES=key ,n-api ,n-crt ,n-obj ,n-cpu ,n-net ,n-cond ,n-sch ,n-novnc ,n-xvnc ,n-cauth

#glance

ENABLED_SERVICES +=,g-api ,g-reg

#cinder

ENABLED_SERVICES +=,cinder ,c-sch ,c-api ,c-vol ,c-bak

#trove

ENABLED_SERVICES +=,trove ,tr-api ,tr-tmgr ,tr-cond

#manila

ENABLED_SERVICES +=,manila ,m-api ,m-sch ,m-shr

#others

ENABLED_SERVICES +=,horizon ,rabbit ,mysql ,tempest

#neutron needs for manila

disable_service n-net

enable_service q-svc ,q-agt ,q-dhcp ,q-l3 ,q-meta ,neutron

#

LOGDAYS =1

LOGFILE=$DEST/devstack.log

SCREEN_LOGDIR=$DEST/logs/screen

RECLONE=yes

API_RATE_LIMIT=False

Q_PLUGIN=ml2

ENABLE_TENANT_VLANS=True

ML2_VLAN_RANGES=physnet1 :100:4000

PHYSICAL_NETWORK=physnet1

OVS_PHYSICAL_BRIDGE=br -eth1

Q_ML2_PLUGIN_MECHANISM_DRIVERS=openvswitch

Q_ML2_PLUGIN_TYPE_DRIVERS=vlan ,vxlan

SHARE_BACKING_FILE_SIZE =8G

Manila A Shared File System Service 5 @2015 NetApp K.K. All right reserved

FLAT_INTERFACE=eth1

FIXED_RANGE =10.0.0.0/24

NETWORK_GATEWAY =10.0.0.1

FLOATING_RANGE =192.168.10.0/24

PUBLIC_NETWORK_GATEWAY =192.168.10.254

7. stack.sh実行

stack@stackt :~/ devstack$ ./stack.sh

....

Horizon is now available at http ://192.168.20.240/

Keystone is serving at http ://192.168.20.240:5000/ v2.0/

Examples on using novaclient command line is in exercise.sh

The default users are: admin and demo

The password: devstack

This is your host ip: 192.168.20.240

2015 -01 -06 09:07:57.838 | stack.sh completed in 309 seconds.

8. Manila動作確認

stack@stackt :~/ devstack$ . openrc admin demo

stack@stackt :~/ devstack$ manila list

mani+----+------+------+-------------+--------+-------------+-----------------+------+

| ID | Name | Size | Share Proto | Status | Volume Type | Export location | Host |

+----+------+------+-------------+--------+-------------+-----------------+------+

+----+------+------+-------------+--------+-------------+-----------------+------+

stack@stackt :~/ devstack$ manila service -list

+----+------------------+-----------------+------+---------+-------+----------------------------+

| Id | Binary | Host | Zone | Status | State | Updated_at |

+----+------------------+-----------------+------+---------+-------+----------------------------+

| 1 | manila -share | stackt@generic1 | nova | enabled | up | 2015 -01 -08 T04 :47:12.000000 |

| 2 | manila -scheduler | stackt | nova | enabled | up | 2015 -01 -08 T04 :47:12.000000 |

+----+------------------+-----------------+------+---------+-------+----------------------------+

9. 外部ネットワークへ接続可能か確認

• br-exに外部接続用の eth1が紐付いているか確認し、必要に応じて修正

# ovs -vsctl show

# ovs -vsctl add -port br-ex eth1

• eth1が UPしているか確認(ip addr, ifconfig)

3.2 インスタンスの準備

1. Fedora20などイメージ入れとく

2. Fedora21を使うなら

http://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/21/Cloud/Images/x86 64/Fedora-Cloud-Base-20141203-21.x86 64.qcow2

3. キーペア登録

4. セキュリティグループ、ルール登録(icmp,ssh)

5. インスタンス作成

6. Floating IPアドレスをいくつか作成

7. Floating IPアドレス経由でアクセスできるか確認

イメージ登録サンプル

[stack@stackt ~(admin)]$ glance image -create --name ’Ubuntu 14.04 x86_64 ’ \

> --disk -format qcow2 --container -format bare --is -public true

> --copy -from http ://192.168.20.254/ qcow2/ubuntu -14.04 - server -cloudimg -amd64 -disk1.img

[stack@stackt ~(admin)]$ glance image -create --name ’Fedora 20 x86_64 ’ \

> --disk -format qcow2 --container -format bare --is -public true

> --copy -from http ://192.168.20.254/ qcow2/fedora -20. x86_64.qcow2

Manila A Shared File System Service 6 @2015 NetApp K.K. All right reserved

4 Manilaの設定

4.1 Manilaシェア用ネットワーク作成

プライベートネットワークから接続するシェアネットワークを作成する

stack@stackt :~$ manila share -network -create \

--neutron -net -id 33f83ef3 -4277 -4078 -947b -525449195 bed \

--neutron -subnet -id eea339f8 -8634 -4e24 -be3d -dc58e6bcfe4d \

--name manila_share

+-------------------+--------------------------------------+

| Property | Value |

+-------------------+--------------------------------------+

| cidr | None |

| created_at | 2015 -01 -08 T05 :06:55.595393 |

| description | None |

| id | e0ed982e -7a28 -427d-88c3-ff335560982d |

| ip_version | None |

| name | manila_share |

| network_type | None |

| neutron_net_id | 33f83ef3 -4277 -4078 -947b -525449195 bed |

| neutron_subnet_id | eea339f8 -8634 -4e24 -be3d -dc58e6bcfe4d |

| project_id | 98299 c1e5ebb498ebc100e5e98a6d66c |

| segmentation_id | None |

| updated_at | None |

+-------------------+--------------------------------------+

stack@stackt :~$ manila share -network -list

+--------------------------------------+--------------+

| id | name |

+--------------------------------------+--------------+

| e0ed982e -7a28 -427d-88c3 -ff335560982d | manila_share |

+--------------------------------------+--------------+

stack@stackt :~$

4.2 Manila共有ファイル領域作成

まず、一般的な構成においてManilaを使って共有ファイル領域を作成する

図 2 Manila General Configuration

Manila A Shared File System Service 7 @2015 NetApp K.K. All right reserved

stack@stackt :~$ manila create \

--name devstack_share \

--share -network e0ed982e -7a28 -427d-88c3-ff335560982d NFS 3

stack@stackt :~$ manila list

「manila list」コマンドで Statusが creatingから availableになる事が確認できる

ここで何が行われているかというと以下のように、NFSサーバが構成されている

1. NFSサーバ用に用意されたていたテンプレートイメージから、NFSサーバインスタンスを起動

2. Cinderにより指定された容量分のブロックストレージを作成

3. 作成された Cinder Volumeを NFSサーバインスタンスにアタッチ

4. アタッチされた領域をエクスポート

NFSサーバの情報は下記のように確認できる

stack@stackt :~$ manila share -server -list # id を確認

stack@stackt :~$ manila share -server -show 483d30b7 -7b03 -433f-9666 -919 b5e9d9412

+------------------------+--------------------------------------+

| Property | Value |

+------------------------+--------------------------------------+

| created_at | 2015 -01 -08 T05 :08:09.000000 |

| details:instance_id | a3eda1a6 -fae6 -412f-ab91 -442334 ab5185 |

| details:ip | 10.254.0.18 |

| details:password | ubuntu |

| details:pk_path | /home/stack/.ssh/id_rsa |

| details:public_address | 10.254.0.18 |

| details:router_id | c50f4013 -9116 -4fcb -aebe -59 d3fe6a6fc5 |

| details:subnet_id | f8dda690 -d2b0 -417c-9dfd -b86ea53e6d47 |

| details:username | ubuntu |

| host | stackt@generic1 |

| id | 483d30b7 -7b03 -433f-9666 -919 b5e9d9412 |

| project_id | 98299 c1e5ebb498ebc100e5e98a6d66c |

| share_network_id | e0ed982e -7a28 -427d-88c3-ff335560982d |

| share_network_name | manila_share |

| status | ACTIVE |

| updated_at | 2015 -01 -08 T05 :10:29.000000 |

+------------------------+--------------------------------------+

Manilaのログは以下で確認

• /opt/stack/logs/screen/screen-m-api.log

• /opt/stack/logs/screen/screen-m-shr.log

• /opt/stack/logs/screen/screen-m-sch.log

また、プライベートネットワークとシェアネットワークは異なるセグメントであるため、Neutron経由でルータの設定が追加

される

stack@stackt :~$ neutron net -list

stack@stackt :~$ neutron subnet -list

stack@stackt :~$ neutron router -port -list router1

4.3 Manila共有ファイル領域の ACL

作成した共有ファイル領域にどのホストが接続するかを登録する

stack@stackt :~$ manila access -list devstack_share

+----+-------------+-----------+-------+

| id | access type | access to | state |

+----+-------------+-----------+-------+

+----+-------------+-----------+-------+

stack@stackt :~$

stack@stackt :~$ manila access -allow devstack_share ip 10.0.0.2

+-------------+--------------------------------------+

| Property | Value |

+-------------+--------------------------------------+

| access_to | 10.0.0.2 |

Manila A Shared File System Service 8 @2015 NetApp K.K. All right reserved

| access_type | ip |

| created_at | 2015 -01 -08 T05 :28:40.438816 |

| deleted | False |

| deleted_at | None |

| id | 69791815 -ddb3 -43d4-a6f1 -9 b9fdfb55cdb |

| share_id | a0f9484a -32b6 -4721 -aeae -7 a53bcf47957 |

| state | new |

| updated_at | None |

+-------------+--------------------------------------+

stack@stackt :~$ manila access -list devstack_share

+--------------------------------------+-------------+-----------+--------+

| id | access type | access to | state |

+--------------------------------------+-------------+-----------+--------+

| 69791815 -ddb3 -43d4 -a6f1 -9 b9fdfb55cdb | ip | 10.0.0.2 | active |

+--------------------------------------+-------------+-----------+--------+

Manila A Shared File System Service 9 @2015 NetApp K.K. All right reserved

5 Manila with NetApp Unified Driver

Manila は標準で Cinder Volumeを作成するためその Cinderの Backend Volume Driver としてNetApp Unified Driver

を使う設定を入れる

図 3 Manila with NetApp Unified Driver

1. devstackホストに nfs-commonを入れる(NFSマウントできるように)

root@stackt :~# apt -get install nfs -common

root@stackt :~# more /proc/filesystems |grep nfs

nodev nfs

nodev nfs4

nodev nfsd

2. cinder-volume , cinder-backup停止

root@stackt :~# kill <pid >

3. cinder.conf の設定(編集)

default_volume_type = cdot -nfs

enabled_backends = lvmdriver -1 , cdot -nfs

[cdot -nfs]

volume_backend_name=cdot -nfs

volume_driver=cinder.volume.drivers.netapp.common.NetAppDriver

netapp_server_hostname =192.168.20.10

netapp_server_port =80

netapp_storage_protocol=nfs

netapp_storage_family=ontap_cluster

netapp_login=openstack

netapp_password=netapp123

netapp_vserver=vs_nfs

nfs_shares_config =/etc/cinder/nfs.shares

nfs_mount_options = sec=sys

4. /etc/cinder/nfs.sharesファイルを作成

192.168.30.20:/ vol_plain

5. cinder-volume起動

root@stackt :~# /usr/local/bin/cinder -volume \

--config -file /etc/cinder/cinder.conf 2>&1 | tee -a /opt/stack/logs/cinder -volume.log &

6. Cinderサービス確認(cdot-nfsが追加され Stateが UPになっているか)

stack@stackt :~/ devstack$ source openrc admin admin

stack@stackt :~/ devstack$ cinder service -list

Manila A Shared File System Service 10 @2015 NetApp K.K. All right reserved

7. Typeと Extra-specs作成

stack@stackt :~/ devstack$ cinder type -create cdotnfs

+--------------------------------------+---------+

| ID | Name |

+--------------------------------------+---------+

| df195fcf -8f85 -4083 -ad58 -fb9f6ca3b304 | cdotnfs |

+--------------------------------------+---------+

stack@stackt :~/ devstack$ cinder type -list

+--------------------------------------+-------------+

| ID | Name |

+--------------------------------------+-------------+

| 4bd40653 -44a3 -4fb6 -a306 -9 eaca90b6d03 | lvmdriver -1 |

| df195fcf -8f85 -4083 -ad58 -fb9f6ca3b304 | cdotnfs |

+--------------------------------------+-------------+

stack@stackt :~/ devstack$ cinder type -key cdotnfs set storage_protocol=nfs

stack@stackt :~/ devstack$ cinder extra -specs -list

+--------------------------------------+-------------+------------------------------------------+

| ID | Name | extra_specs |

+--------------------------------------+-------------+------------------------------------------+

| 4bd40653 -44a3 -4fb6 -a306 -9 eaca90b6d03 | lvmdriver -1 | {u’volume_backend_name ’: u’lvmdriver -1’} |

| df195fcf -8f85 -4083 -ad58 -fb9f6ca3b304 | cdotnfs | {u’storage_protocol ’: u’nfs ’} |

+--------------------------------------+-------------+------------------------------------------+

8. Novaへの対応

Cinder Volumeをインスタンスにアタッチする時、Novaは NFSマウントすることになるため、nova-computeが以下の

オプション付きでマウントできるようにする

nova.confを編集し、nova-computeを再起動

/etc/nova/nova.conf

[libvirt]

....

nfs_mount_options = vers=4,sec=sys

root@stackt :~# sg libvirtd /usr/local/bin/nova -compute \

--config -file /etc/nova/nova.conf 2>&1 | tee /opt/stack/logs/nova -compute.log &

Manila A Shared File System Service 11 @2015 NetApp K.K. All right reserved

6 Manila with Backend cDOT Driver

Manilaのバックエンドストレージとして clustered Data ONTAPを置く構成

図 4 Manila with Backend cDOT Driver

• clustered Data ONTAPにしかるべきライセンスを投入しておく

• 本ドキュメント作成現在は、Manilaはシェアを作成するところまでできるが L2 Routingの仕組みまで連携させていない

ためインスタンスからは NFSマウントできない

1. manila.conf 編集(以下一部略)

[keystone_authtoken]

signing_dir = /var/cache/manila

admin_password = devstack

admin_user = manila

admin_tenant_name = service

auth_protocol = http

auth_port = 35357

auth_host = 192.168.20.240

[DEFAULT]

...

rabbit_userid = stackrabbit

rabbit_password = devstack

rabbit_hosts = 127.0.0.1

rpc_backend = manila.openstack.common.rpc.impl_kombu

enabled_share_backends = generic1 , netapp1

neutron_admin_password = devstack

cinder_admin_password = devstack

nova_admin_password = devstack

state_path = /opt/stack/data/manila

osapi_share_extension = manila.api.contrib.standard_extensions

rootwrap_config = /etc/manila/rootwrap.conf

api_paste_config = /etc/manila/api -paste.ini

share_name_template = share -%s

scheduler_driver = manila.scheduler.filter_scheduler.FilterScheduler

verbose = True

debug = True

auth_strategy = keystone

[DATABASE]

connection = mysql :// root:devstack@127 .0.0.1/ manila?charset=utf8

[oslo_concurrency]

lock_path = /opt/stack/manila/manila_locks

[generic1]

Manila A Shared File System Service 12 @2015 NetApp K.K. All right reserved

driver_handles_share_servers = True

service_instance_password = ubuntu

service_instance_user = ubuntu

service_image_name = ubuntu_1204_nfs_cifs

path_to_private_key = /home/stack /.ssh/id_rsa

path_to_public_key = /home/stack /.ssh/id_rsa.pub

share_backend_name = generic1

share_driver = manila.share.drivers.generic.GenericShareDriver

[generic2]

driver_handles_share_servers = True

service_instance_password = ubuntu

service_instance_user = ubuntu

service_image_name = ubuntu_1204_nfs_cifs

path_to_private_key = /home/stack /.ssh/id_rsa

path_to_public_key = /home/stack /.ssh/id_rsa.pub

share_backend_name = generic2

share_driver = manila.share.drivers.generic.GenericShareDriver

[netapp1]

driver_handles_share_servers = True

share_driver=manila.share.drivers.netapp.cluster_mode.NetAppClusteredShareDriver

netapp_root_volume_aggregate = aggr_sas

netapp_nas_login = admin

netapp_nas_password = netapp123

netapp_nas_server_hostname = 192.168.20.10

share_backend_name=netapp1

2. Manilaサービス再起動(screen使用可)

[stack@stackt ~( admin)]$ /usr/local/bin/manila -share \

--config -file /etc/manila/manila.conf 2>&1 | tee -a /opt/stack/logs/manila -share &

[stack@stackt ~( admin)]$ /usr/local/bin/manila -api \

--config -file /etc/manila/manila.conf 2>&1 | tee -a /opt/stack/logs/manila -api &

[stack@stackt ~( admin)]$ /usr/local/bin/manila -scheduler \

--config -file /etc/manila/manila.conf 2>&1 | tee -a /opt/stack/logs/manila -scheduler &

3. Manilaサービス確認(netapp1が追加され Stateが UPとなっているか)

[stack@stackt ~( admin)]$ manila service -list

+----+------------------+-----------------+------+---------+-------+----------------------------+

| Id | Binary | Host | Zone | Status | State | Updated_at |

+----+------------------+-----------------+------+---------+-------+----------------------------+

| 1 | manila -share | stackt@generic1 | nova | enabled | up | 2015 -01 -31 T14 :52:23.000000 |

| 2 | manila -scheduler | stackt | nova | enabled | up | 2015 -01 -31 T14 :52:24.000000 |

| 3 | manila -share | stackt@netapp1 | nova | enabled | up | 2015 -01 -31 T14 :52:18.000000 |

+----+------------------+-----------------+------+---------+-------+----------------------------+

4. Typeを作る

[stack@stackt ~( admin)]$ manila type -create cDOT

[stack@stackt ~( admin)]$ manila type -create generic1

[stack@stackt ~( admin)]$ manila type -key cDOT set share_backend_name=netapp1

[stack@stackt ~( admin)]$ manila type -key generic1 set share_backend_name=generic1

[stack@stackt ~( admin)]$ manila type -list

+--------------------------------------+----------+

| ID | Name |

+--------------------------------------+----------+

| 7ffa7de2 -2889 -43a2-b139 -a222c9bb521d | cDOT |

| 6ec93115 -483a-423a-8ced -413865535561 | generic1 |

+--------------------------------------+----------+

[stack@stackt ~( admin)]$ manila extra -specs -list

+--------------------------------------+----------+--------------------------------------+

| ID | Name | extra_specs |

+--------------------------------------+----------+--------------------------------------+

| 7ffa7de2 -2889 -43a2-b139 -a222c9bb521d | cDOT | {u’share_backend_name ’: u’netapp1 ’} |

| 6ec93115 -483a-423a-8ced -413865535561 | generic1 | {u’share_backend_name ’: u’generic1 ’} |

+--------------------------------------+----------+--------------------------------------+

5. manila shareを作る

[stack@stackt ~(demo)]$ manila create \

--name cdotnfs --share -network manila_share --volume -type cDOT NFS 3

ここで行われていることは、

Manila A Shared File System Service 13 @2015 NetApp K.K. All right reserved

(a)SVM 作る

(b)LIF作る(TAG付き VLAN)

(c)FlexVol作る(この開発段階では、存在する Aggregateの中で一番空き容量が大きいところに FlexVolが作成される)

(d)エクスポートする

clustered Data ONTAP側

• os ⟨share server id⟩という SVMができる

• share ⟨share id⟩という FlexVolができる

• これら、“os ”と“share ”はパラメータで変更可能

kuramochi -cdot::> vserver show

Admin Root Name Name

Vserver Type State Volume Aggregate Service Mapping

----------- ------- --------- ---------- ---------- ------- -------

kuramochi -cdot

admin - - - - -

kuramochi -cdot -01

node - - - - -

kuramochi -cdot -02

node - - - - -

os_adb1fcd7 -ae07 -4818 -822d-911 f694dfe78

data running root aggr_sas file file

vs_nfs data running vsroot aggr_sas file file

5 entries were displayed.

kuramochi -cdot::>

kuramochi -cdot::> volume show -vserver os_adb1fcd7 -ae07 -4818 -822d-911 f694dfe78

Vserver Volume Aggregate State Type Size Available Used%

--------- ------------ ------------ ---------- ---- ---------- ---------- -----

os_adb1fcd7 -ae07 -4818 -822d-911 f694dfe78

root aggr_sas online RW 1GB 972.7 MB 5%

os_adb1fcd7 -ae07 -4818 -822d-911 f694dfe78

share_5ad1870e_11fb_4d5a_8904_2995567be8de

aggr_sata online RW 3GB 2.85GB 5%

2 entries were displayed.

kuramochi -cdot::>

kuramochi -cdot::> network interface show -vserver os_adb1fcd7 -ae07 -4818 -822d-911 f694dfe78

Logical Status Network Current Current Is

Vserver Interface Admin/Oper Address/Mask Node Port Home

----------- ---------- ---------- ------------------ ------------- ------- ----

os_adb1fcd7 -ae07 -4818 -822d-911 f694dfe78

os_a48e9cf9 -42f9 -4541 -85ab-ad28b5b8e8a9

up/up 10.0.0.59/24 kuramochi -cdot -01

e0a -1001

true

os_befd8607 -b6b1 -4adc -bf84 -4 f90764f38c0

up/up 10.0.0.58/24 kuramochi -cdot -02

e0a -1001

true

2 entries were displayed.

Manila A Shared File System Service 14 @2015 NetApp K.K. All right reserved

7 Manila共有ファイル領域のマウント

インスタンス Fedora20からマウントする例

1. DNSサーバ登録 , resolv.conf

2. sudo yum install bind-utils nfs-utils

3. sudo mount -t nfs 10.254.0.3:/shares/share-0aec76d3-4cff-410b-af0b-48df2698fbe8 /mnt

マウントするためのエクスポート情報は manila list コマンドで確認できる

[fedora@fedora20 ~]$ sudo mount -t nfs 10.254.0.18:/ shares/share -XXXX -YYYY -ZZZZ /mnt

[fedora@fedora20 ~]$ df -h

Filesystem Size Used Avail Use% Mounted on

/dev/vda1 20G 761M 19G 4% /

devtmpfs 994M 0 994M 0% /dev

tmpfs 1002M 0 1002M 0% /dev/shm

tmpfs 1002M 17M 986M 2% /run

tmpfs 1002M 0 1002M 0% /sys/fs/cgroup

10.254.0.18:/ shares/share -XXXX -YYYY -ZZZZ 3.0G 69M 2.8G 3% /mnt

[fedora@fedora20 ~]$

Manila A Shared File System Service 15 @2015 NetApp K.K. All right reserved

8 補足情報

8.1 Manila devstack版ソースコード

devstackのManila cDOT Driver

/opt/stack/manila/manila/share/drivers/netapp/cluster mode.py

root@stackt :/opt/stack/manila/manila/share/drivers/netapp# ls -ltr合計72

-rw-r--r-- 1 stack stack 49709 月 1 8 13:09 cluster_mode.py

-rw-r--r-- 1 stack stack 18352 月 1 8 13:09 api.py

-rw-r--r-- 1 stack stack 0 月 1 8 13:09 __init__.py

8.2 serviceテナントで Cinder Volumeを確認できるようにする

Manilaが作成する Cinder Volumeを確認できるようにする

[stack@demo ~(admin)]$ keystone user -role -add --user=admin --role=_member_ --tenant=service

rcファイルを作っておく

export OS_USERNAME=admin

export OS_TENANT_NAME=service

export OS_PASSWORD=devstack

export OS_AUTH_URL=http ://192.168.0.105:5000/ v2.0/

export PS1=’[\u@\h \W(service )]\$ ’

[stack@demo ~(admin)]$ source servicerc

[stack@demo ~( service )]$ cinder list

8.3 Manila用 Horizon

すでに稼働している HorizonではManilaの操作ができないため下記のように別途 Horizon*1 を起動する

# git clone -b manila_juno https :// github.com/NetApp/horizon.git

# cd horizon

# cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py

local settings.pyを編集する

OPENSTACK_HOST = "192.168.20.240" # <- devstack host

screenしてから起動

$ sudo python manage.py runserver 0.0.0.0:8000

ただし、一部の GUIオペレーションでうまくいっていかない(demoユーザのインスタンスが表示されないなど)ところがあ

り、ログを確認すると「172.18.195.254」へアクセスしいっていいた

下記のファイルで URLがこのアドレスにリプレイスされていたようであり、修正し再起動

/home/stack/horizon/openstack dashboard/api/base.py

[stack@stackt api(admin)]$ diff base.py _base.py

283 c283

< return url.replace ( ’127.0.0.1 ’ , ’192.168.20.240 ’)

---

> return url.replace ( ’127.0.0.1 ’ , ’172.18.195.254 ’)

(*)192.168.20.240は devstackが稼働している管理用 NICのアドレス

8.4 問題

Cinderの Volume Backend Driverをマルチに設定していると、途中で片方が落ちる(未解析)

• cinder-volume.log

• cinder service-list

*1 https://wiki.openstack.org/wiki/Manila/docs/HOWTO use manila with horizon

Manila A Shared File System Service 16 @2015 NetApp K.K. All right reserved

8.5 主要コマンドリスト

参照

コマンド 説明

manila list 共有ファイル領域を表示

manila service-list 設定されたすべてのサービスを表示

manila share-network-list 共有専用のネットワークを表示

manila share-server-list NFS、CIFSサーバを表示

manila type-list タイプを表示

manila access-list ACLの登録情報を表示

manila snapshot-list スナップショットを表示

manila extra-specs-list エクストラスペックを表示

作成・登録

コマンド 説明

manila create 共有ファイル領域を作成

manila share-network-create 共有専用のネットワークを作成

manila type-create ボリュームのタイプを作成

manila type-key ボリュームタイプのエクストラスペックを作成

manila snapshot-create スナップショットを作成

manila access-allow 共有ファイル領域へのアクセス許可を登録

8.6 manila.confのパラメータ

パラメータ 説明

share driver manila.share.drivers.netapp.cluster mode.NetAppClusteredShareDriver

netapp nas login clustered Data ONTAPコントローラへログインするユーザ名(Default:admin)

netapp nas password 上記のユーザのパスワード

netapp nas server hostname clustered Data ONTAPコントローラのホスト名

netapp nas transport type 転送プロトコルタイプ(Default:http)

netapp nas volume name template NetAppボリューム名のテンプレート(Default:share %(share id)s)

netapp vserver name template NetApp SVM名のテンプレート(Default:os %s)

netapp lif name template LIF名のテンプレート(Default:os %(net allocation id)s)

netapp aggregate name search pattern プロビジョニングのための有効な Aggregateを検索するパターン(Default:(.*))

netapp root volume aggregate root volumeを作る Aggregateの指定

netapp root volume name root volume名を指定

9 参考

参考ページ情報

• Manila

https://wiki.openstack.org/wiki/Manila

• OpenStack Deployment and Operations Guide

http://netapp.github.io/openstack-deploy-ops-guide/

• OpenStack@NetApp

http://netapp.github.io/openstack/

• NetApp Community OpenStack Discussions

http://community.netapp.com/t5/OpenStack-Discussions/bd-p/openstack-discussions

Manila A Shared File System Service 17 @2015 NetApp K.K. All right reserved

NetAppは、本ドキュメントで提供されるいかなる情報または推奨事項の正確性、信頼性、有用

性について、またはいかなる情報の使用または推奨事項の順守による結果についても、表明また

は保証は一切行いません。本ドキュメントの情報は現状のまま提供され、本ドキュメントの情報

の使用または推奨内容や手法の実施は、お客様の評価および業務環境への統合能力に基づいて、

お客様の責任でお行われるものとします。

本ドキュメントの記載内容は、いかなる箇所においても NetAppからの書面による事前の許可なく複製、転載することを禁じます。記記載事項は、予告なく変更される場合があります。NetApp、NetApp のロゴ、Go further, faster、Data ONTAPは、米国およびその他の国における NetApp, Inc.の商標または登録商標です。その他のすべてのブランドおよび製品は、それを所有する各社の商標または登録商標であり、相応の取り扱いが必要です。