25
How to use The NetApp Unified Driver With Copy Offload For OpenStack Vol.002 2014/12/25 Takeshi Kuramochi

OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

Embed Size (px)

Citation preview

Page 1: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

How to use

The NetApp Unified Driver

With Copy Offload

For OpenStack

Vol.002

2014/12/25

Takeshi Kuramochi

Page 2: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

自己紹介

• 倉持健史(くらもち たけし)

• 現在のお仕事

フラッシュメモリ技術(2015年5月書籍出版予定)

BigData(Hadoop ディストリと組み合わせ)

OpenStack(+NetApp インテグレーション)

SNIA日本支部 教育委員会 副委員長

• 他への興味

データ分析・・・R、RStudo を使い始めた

囲碁・・・まだ 9路盤 の域を出ない超初心者

ゴルフ・・・とりあえずスタートは 160

Python・・・シンプルでいいと思い始めた

SoC・・・ラズパイとCubieboard がゴロゴロしてる

Page 3: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

今回のテーマ

OpenStack 環境で NetApp の

NFS Copy Offload

を使う

Page 4: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

まず、NFS Copy Offload ってなに?

一言でいうと、

「餅は餅屋」

という事。

Page 5: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

例えばファイルコピー

ホストAからホストBへのコピー

1. クライアント(API)からのコピーリクエスト

2. ホストAのディスクから読み出し

3. ホストAのリソース(CPU、メモリ)を消費し、ネットワークへファイル送信

4. ホストBのリソース(CPU、メモリ)を消費し、ネットワークからファイル受信

5. ホストBのディスクへ書き込み

6. 完了

そもそもディスクIOはCPUやメモリに比べてとてつもなく遅い=待たされる=足を引っ張られる(リソースを消費する)のはもったいない

ホストA ホストB

Copy Offload の理解

Netrowk

Page 6: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

コピー(IO処理)を丸投げ

ホストAからホストBへのコピー

1. クライアント(API)からのコピーリクエスト 2. FlexVol 上でファイルの読み出しと書き込み 3. 完了

対象ファイルの元もNetApp FlexVol上、コピー先もNetApp FlexVol上であるとき、コピーそのものはNetApp上でのみ速やかに完結できる ホスト側のシステムリソースの消費を削減 ★その分をCPUの計算処理にまわせる! ★より多くのインスタンスを稼動できる! Clustered Data ONTAP では同一クラスタ内、同一FlexVol上でCopy Offloadが可能

Copy Offload の理解

ホストA ホストB

Page 7: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

NFS Copy Offloa を OpenStack で使ってみる

Page 8: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

条件

• Clustered Data ONTAP 8.2 以上

• NFS v4.0 以上

• SVM (Storage Virtual Machine)でCopy Offload 有効

• Glance のストア場所が NFS 上であること 例:filesystem_store_datadir = /glance/images 、のとき、 /glance/images が NFS v4.X で NFS マウントされている

• Glance のキャッシュディレクトリは使っていないこと 例: image_cache_dir = /glance/caches のとき、 /glance/caches が FlexVol 上であっても Copy Offload されな い

Page 9: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

ステップ

1. NetApp OpenStack NFS Copy Offload Client ダウンロード

2. 1. の展開と配置

3. glance-api.conf 設定

4. cinder.conf 設定

5. Glance Image 再登録

6. Clustered Data ONTAP 側の設定

Page 10: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

NetApp OpenStack NFS Copy Offload Client ダウンロード

Copy Offload は clustered Data ONTAP の機能であるのでそれを理解してリクエストを送るプログラムが必要となる。そのプログラムは「NetApp Support Site」からダウンロードできる。このサイトはアカウント登録が必要であるが、これかこの機能を使わんとするユーザはなんらかの形でアカウントを持っているものとし話を進める。

ダウロードサイト:http://mysupport.netapp.com/NOW/download/tools/ntap_openstack_nfs/

Page 11: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

NetApp OpenStack NFS Copy Offload Client 展開・配置

展開と配置は、cinder-volume が稼働するシステムで行う

[root@tkstack ~]# tar zxf copyoffload.tar.gz [root@tkstack ~]# ls -ltr 合計 912 -rwxr-xr-x 1 cinder cinder 372858 2月 8 01:04 na_copyoffload_64 -r--r--r-- 1 cinder cinder 291686 4月 4 23:36 NetApp_End_User_License_Agreement2014.pdf -r--r--r-- 1 cinder cinder 254731 4月 4 23:39 NOTICE.pdf -rw-r--r-- 1 cinder cinder 1602 4月 12 04:37 README.txt [root@tkstack ~]# mkdir /etc/cinder/copyoffload [root@tkstack ~]# cp na_copyoffload_64 /etc/cinder/copyoffload/na_copyoffload [root@tkstack ~]# chown -R cinder.cinder /etc/cinder/copyoffload/

Page 12: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

glance-api.conf 設定

glance-api が稼働しているシステムで行う

★を JSON フォーマットで作成

設定後、glance-api 再起動

[DEFAULT] ... default_store = file filesystem_store_datadir = /glance/images show_image_direct_url = True show_multiple_locations = True filesystem_store_metadata_file = /etc/glance/metadata.json ★

# cat /etc/glance/metadata.json { "share_location": "nfs://10.130.208.55/images", "mount_point": "/glance/images", "type": "nfs" }

Page 13: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

cinder.conf 設定

cinder-volume が稼働するシステムで行う

設定後、cinder-volume 再起動

[DEFAULT] # 中略 glance_api_version=2 ・・・ 追記 [cdot-nfs] volume_backend_name=cdot-nfs volume_driver=cinder.volume.drivers.netapp.common.NetAppDriver netapp_server_hostname=10.130.202.180 netapp_server_port=80 netapp_storage_protocol=nfs netapp_storage_family=ontap_cluster netapp_login=openstack netapp_password=eisaku35 netapp_vserver=demo-nfs-svm nfs_shares_config=/etc/cinder/nfs.shares nfs_mount_options = sec=sys # Copy Offload netapp_copyoffload_tool_path=/etc/cinder/copyoffload/na_copyoffload ・・・ 追記

Page 14: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

ここがみそ

既に、Glance Image はいくつか登録されていると思いますが、先のGlance 設定後に、再度イメージを登録し直す必要がある。

(glance image-create)

これは、イメージ登録後に先ほど設定したメタデータ部分が追加で登録され、それを持って、NetApp Unified Driver が NFS マウント場所を把握し、Copy Offload のリクエストをプログラム(NetApp OpenStack NFS Copy Offload Client)の引数に渡すため。

Page 15: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

Clustered Data ONTAP 側の設定

NFS v4 有効化

SVM で Copy Offload を有効化

cluster-cdot::> vserver nfs show Vserver: demo-nfs-svm General Access: true v3: enabled v4.0: enabled 4.1: enabled UDP: enabled TCP: enabled Default Windows User: - Default Windows Group: -

cluster-cdot::*> vserver copy-offload modify -vserver vs_nfs -nfs enabled cluster-cdot::*> vserver copy-offload show -vserver demo-nfs-svm Vserver Name: demo-nfs-svm NFS Copy-Offload: enabled SCSI Copy-Offload: enabled QoS Throttle: 0B Copy-Offload Via Sub-File Cloning: enabled

Page 16: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

具体的にどんな時にオフロードされるか?

• Glance イメージから Cinder Volume を作成する時

• Cinder Volume からインスタンス起動をする時

• Cinder Volume から (別の)Cinder Volume を作成する時

• 別のホストに Cinder Volume を移動する時

Page 17: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

具体的にどんな時にオフロードされるか?

シナリオ:Cinder Volume からの起動を行うとき

1. 起動リクエスト

2. Glance Image から対象データが clustered Data ONTAP NFS 上であることを確認

3. Cinder バックエンドストレージも clustered Data ONTAP NFS 上であることを確認

4. Copy Offload開始

5. Copy Offload終了

6. Convert( qemu-img )

7. FlexClone で Root Disk として img-cache-<Image-ID>を作成

8. 起動先の Nova ノードが Cinder Volume が作られた FlexVol をマウント

9. Nova ノードは Cloning された Cinder Volume から起動

Page 18: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

Enhanced Instance Creation Flowchart

補足

• img-cache-<image id>がコピー先にあるときとないときで挙動が変わる

• Copy Offload の条件を満たし、設定が施されている必要がある

• 条件未達やなんらかのエラー(設定ミスも含む)により、Copy Offload 処理が行えなかった場合は、レギュラーコピー(通常のコピー)処理が行われる

• 一度、コピーされたイメージは img-cache-<image id>として保存される

• img-cache-<image id>の管理については次ページ

参考:

http://netapp.github.io/openstack-deploy-ops-guide/juno/content/section_glance-deployment-choices.html#glance.rapid_cloning

Page 19: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

NFS イメージキャッシュ管理

3つの調整可能なパラメータをもつ cinder.conf: • thres_avl_size_perc_start ( Default 20% )

– NFS 共有のための利用可能なスペースの割合が、このオプションで指定した値を下回った場合、NFS イメージキャッシュは消去される。

• thres_avl_size_perc_stop ( Default 60% ) – NFS 共有のための利用可能なスペースの割合が、このオプションで指定した値に到達した時、ドライバが

最後の M 分以内にアクセスされなかった NFS イメージキャッシュからファイル消去をやめる。( M は expiry_thres_minutes の値)

• expiry_thres_minutes ( Default 720分 ) – このオプションは、NFS イメージキャッシュ内のイメージのための最終アクセス時間のしきい値( M )を指

定する。キャッシュクリーニングサイクルが始まると、最後の M 分アクセスされていないキャッシュのイメージは、NFS 共有上の空き領域を作成するために、キャッシュから削除される。

例えば、デフォルトではイメージキャッシュが保存されているFlexVolの空き容量が20%以下になったら、720分使っていないキャッシュイメージファイルが削除され、60%以上の利用可能領域が確保できたら、それらの削除処理が止まる 参考 http://netapp.github.io/openstack-deploy-ops-guide/icehouse/content/cinder.cdot.nfs.configuration.html

Page 20: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

動作確認

イメージから Cinder Volume を作る

イメージから起動(新しいボリュームを作成)# Cinder Volume からの Boot ( GUI/CUI どちらからでも)

確認方法

– cinder-volume.log

– clustered Data ONTAP の統計情報

# cinder create --image-id 156e8961-aedc-4879-8b42-903236f2e8d8 20

Page 21: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

クローンニングの確認 volume.log

2014-08-20 11:17:31.184 13111 WARNING cinder.context [-] Arguments dropped when creating context: {'user': u'5548c424732047ca99b29a6fd0aca7df', 'tenant': u'63bba5d3297c4b38af6699e7a06a0468', 'user_identity': u'5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -'} 2014-08-20 11:17:31.505 13111 INFO cinder.volume.flows.manager.create_volume [req-f51f649d-3004-4db6-8572-1d96d9bff299 5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Volume cd71a56d-84c8-4610-8e6e-f580f8ae12a5: being created using CreateVolumeFromSpecTask._create_from_image with specification: {'status': u'creating', 'image_location': (u'file:///glance/images/30186104-64ae-404e-b833-9890d3f6685d', [{u'url': u'file:///glance/images/30186104-64ae-404e-b833-9890d3f6685d', u'metadata': {u'mount_point': u'/glance/images', u'type': u'nfs', u'share_location': u'nfs://10.130.208.55/images'}}]), 'volume_size': 5, 'volume_name': u'volume-cd71a56d-84c8-4610-8e6e-f580f8ae12a5', 'image_id': u'30186104-64ae-404e-b833-9890d3f6685d', 'image_service': <cinder.image.glance.GlanceImageService object at 0x3845150>, 'image_meta': {'status': u'active', 'name': u'fedora-20-x86_64', 'deleted': None, 'container_format': u'bare', 'created_at': datetime.datetime(2014, 8, 6, 1, 3, 43, tzinfo=<iso8601.iso8601.Utc object at 0x3234e10>), 'disk_format': u'qcow2', 'updated_at': datetime.datetime(2014, 8, 6, 1, 3, 46, tzinfo=<iso8601.iso8601.Utc object at 0x3234e10>), 'id': u'30186104-64ae-404e-b833-9890d3f6685d', 'owner': u'63bba5d3297c4b38af6699e7a06a0468', 'min_ram': 0, 'checksum': u'1ec332a350e0a839f03c967c1c568623', 'min_disk': 0, 'is_public': None, 'deleted_at': None, 'properties': {}, 'size': 210829312}} 2014-08-20 11:17:31.508 13111 INFO cinder.volume.drivers.netapp.nfs [req-f51f649d-3004-4db6-8572-1d96d9bff299 5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Cloning image 30186104-64ae-404e-b833-9890d3f6685d from cache 2014-08-20 11:17:31.642 13111 INFO cinder.volume.drivers.netapp.nfs [req-f51f649d-3004-4db6-8572-1d96d9bff299 5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Cloning from cache to destination volume-cd71a56d-84c8-4610-8e6e-f580f8ae12a5 2014-08-20 11:17:31.823 13111 INFO cinder.volume.drivers.netapp.nfs [req-f51f649d-3004-4db6-8572-1d96d9bff299 5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Performing post clone for volume-cd71a56d-84c8-4610-8e6e-f580f8ae12a5 2014-08-20 11:17:40.701 13112 INFO cinder.volume.manager [-] Updating volume status 2014-08-20 11:17:55.989 13111 INFO cinder.volume.drivers.netapp.nfs [req-f51f649d-3004-4db6-8572-1d96d9bff299 5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Resizing file to 5G 2014-08-20 11:17:56.620 13111 INFO cinder.volume.flows.manager.create_volume [req-f51f649d-3004-4db6-8572-1d96d9bff299 5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Volume volume-cd71a56d-84c8-4610-8e6e-f580f8ae12a5 (cd71a56d-84c8-4610-8e6e-f580f8ae12a5): created successfully

対象のイメージのキャッシュが存在するとき、それを元にCloningが行われる

Page 22: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

Copy Offload成功時のログ volume.log

2014-08-06 16:06:45.348 7493 WARNING cinder.context [-] Arguments dropped when creating context: {'user':

u'5548c424732047ca99b29a6fd0aca7df', 'tenant': u'63bba5d3297c4b38af6699e7a06a0468', 'user_identity': u'5548c424732047ca99b29a6fd0aca7df

63bba5d3297c4b38af6699e7a06a0468 - - -'}

2014-08-06 16:06:45.481 7493 INFO cinder.volume.flows.manager.create_volume [req-99064c03-1084-4d26-875b-c7799182782a

5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Volume 0d632f1e-d12e-4f64-ba07-94101e876d50: being created

using CreateVolumeFromSpecTask._create_from_image with specification: {'status': u'creating', 'image_location': (u'file:///glance/images/30186104-

64ae-404e-b833-9890d3f6685d', [{u'url': u'file:///glance/images/30186104-64ae-404e-b833-9890d3f6685d', u'metadata': {u'mount_point':

u'/glance/images', u'type': u'nfs', u'share_location': u'nfs://10.130.208.55/images'}}]), 'volume_size': 20, 'volume_name': u'volume-0d632f1e-d12e-4f64-

ba07-94101e876d50', 'image_id': u'30186104-64ae-404e-b833-9890d3f6685d', 'image_service': <cinder.image.glance.GlanceImageService object at

0x3bf1190>, 'image_meta': {'status': u'active', 'name': u'fedora-20-x86_64', 'deleted': None, 'container_format': u'bare', 'created_at':

datetime.datetime(2014, 8, 6, 1, 3, 43, tzinfo=<iso8601.iso8601.Utc object at 0x366ff90>), 'disk_format': u'qcow2', 'updated_at':

datetime.datetime(2014, 8, 6, 1, 3, 46, tzinfo=<iso8601.iso8601.Utc object at 0x366ff90>), 'id': u'30186104-64ae-404e-b833-9890d3f6685d', 'owner':

u'63bba5d3297c4b38af6699e7a06a0468', 'min_ram': 0, 'checksum': u'1ec332a350e0a839f03c967c1c568623', 'min_disk': 0, 'is_public': None,

'deleted_at': None, 'properties': {}, 'size': 210829312}}

2014-08-06 16:06:45.484 7493 INFO cinder.volume.drivers.netapp.nfs [req-99064c03-1084-4d26-875b-c7799182782a

5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Checking image clone 30186104-64ae-404e-b833-9890d3f6685d

from glance share.

2014-08-06 16:06:46.195 7493 INFO cinder.volume.drivers.netapp.nfs [req-99064c03-1084-4d26-875b-c7799182782a

5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] casted to 10.130.208.55:/vol2_dedup

2014-08-06 16:07:05.127 7493 INFO cinder.volume.drivers.netapp.nfs [req-99064c03-1084-4d26-875b-c7799182782a

5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Performing post clone for volume-0d632f1e-d12e-4f64-ba07-

94101e876d50

2014-08-06 16:07:05.286 7493 INFO cinder.volume.drivers.netapp.nfs [req-99064c03-1084-4d26-875b-c7799182782a

5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Resizing file to 20G

2014-08-06 16:07:05.509 7493 INFO cinder.volume.drivers.netapp.nfs [req-99064c03-1084-4d26-875b-c7799182782a

5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Copied image 30186104-64ae-404e-b833-9890d3f6685d to volume

0d632f1e-d12e-4f64-ba07-94101e876d50 using copy offload workflow.

2014-08-06 16:07:06.004 7493 INFO cinder.volume.flows.manager.create_volume [req-99064c03-1084-4d26-875b-c7799182782a

5548c424732047ca99b29a6fd0aca7df 63bba5d3297c4b38af6699e7a06a0468 - - -] Volume volume-0d632f1e-d12e-4f64-ba07-94101e876d50

(0d632f1e-d12e-4f64-ba07-94101e876d50): created successfully

Copy Offload が実行される旨のログが出力される。なんらかの要因により失敗すると失敗と共にレギューラコピーをするという出力になる。

Page 23: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

Copy Offload成功時の 情報

login: admin

Password:

rcallawacluster-1::> set diag

Warning: These diagnostic commands are for use by NetApp personnel only.

Do you want to continue? {y|n}: y

rcallawacluster-1::*> statistics start -object copy_manager

Statistics collection is being started for Sample-id: sample_12

rcallawacluster-1::*> statistics show -object copy_manager -instance rcallawa-nfs-vserver -counter copy_reqs

Object: copy_manager

Instance: rcallawa-nfs-vserver

Start-time: 8/2/2014 14:43:56

End-time: 8/2/2014 14:44:34

Cluster: rcallawacluster-1

Number of Constituents: 2 (complete_aggregation)

Counter Value

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

copy_reqs 4

Clustered Data ONTAP の diag モードにより統計情報を確認できる

Copy Offload 処理が行われるとカウントアップする

Page 24: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

予定

• “Glance , Nova” + Cinder

• Manila

• E-Series

Page 25: OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002

おしまい