OpenStack環境のCinderでONTAP利用⑤【Cinder RetypeによるBackend Storage移行メモ】

## はじめに
この記事では、最近検証環境を設定する必要があった経験をメモとして共有します。具体的には、**OpenStackのBlock StorageでONTAPを利用する方法**に焦点を当てています。

[前回の記事](https://qiita.com/s_yosh1d/private/4bfad0a41275a8bdb197)の続きとして、**All in One構成上に作成したインスタンスへ接続したCinder VolumeにおけるBackend Storage間の移行に関する内容**を記載します。

![090.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/d2894f27-97a2-8ecd-6fd9-a307f441db44.png)


## 何をしたい？できる？
- Cinder VolumeのType変更に伴うデータ移行　(≒Storage vMotion)


## 記事における環境情報
本記事では、以下の環境で実施した内容となります。
- ONTAP: 9.10.1
- CentOS: 7
- Openstack: Queens
- OpenstackはHyper-Vの仮想マシンへ導入
- Networkは1つのセグメントを用意　(検証なのでシンプル構成)

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/ab57c618-cadc-0bd0-838d-818a61d51074.png>

## Cinder VolumeのRetypeについて

Retypeは**既存のVolume Typeを別のVolume Typeに変更する機能**です。
Volume Typeは、StorageのBackendやパフォーマンスなど、volume特性が定義されており、Cinder Retypeを使用すると、Volume Typeを変更し、Storage要件に応じて特性を調整(変更)することが可能となります。
本記事にあるような、異なるONTAP Cluster間でRetype行われる場合は、データの移動が発生し、データコピー中は時間とリソースを消費する形となります。

**以下のような特徴や制約があります。**
- オンラインで移行(Type変更)可能
- インスタンスのシステム用cinder volumeでも、データ用でも移行可能
- 変更先に新しいCinder Volumeを作成して移行
- OpenStack側によるバックグラウンドの移行速度の調整はできない
- **Cinder Snapshotを取得したCinder VolumeへRetypeは実行できない**
- インスタンスにアタッチ(接続)されていなくても変更可能
- Retype完了後に移行先のVolume TypeのQoS値に変更される


## Cinder VolumeのRetypeの実行
ここでは、インスタンスに接続したCinder volumeのRetypeを実施します。
イメージとしては下図の通りです。
<img width="300" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/76bb94b6-2a8d-c8b4-8594-606184bf927b.png>


### 1. admin(管理者)ユーザによるRetypeをGUIで実施

#### 1-1. 移行対象のCinder Volumeの確認
OpenStackのWeb管理画面から**adminユーザでログイン**し、[プロジェクト]=>[ボリューム]=>[ボリューム]をクリックし、表示された画面で移行対象を選択します。

<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/eea690bc-08bb-3c3b-8508-7b219f7b57a9.png>

　
本記事の場合、ONTAP-AFF01という種別から切り出した3GBのCinder Volumeで、インスタンスに/dev/vdbという形で見える事が確認できます。

<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/83b6c191-0cb2-6c07-5df1-8a10c2d36042.png>

Retypeする為、**Snapshotも取得されていない事を確認**します。
<img width="400" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/d349b204-8947-d0fa-c4a9-da41f50fe94c.png>



また、インスタンスに接続してmountの状態を確認すると接続したCinder Volumeでファイルシステムを作成していますが、/dev/vdb1には書き込み自体は殆ど実施されてない形です。

```bash:
# インスタンスへ接続して確認

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        901M     0  901M   0% /dev
tmpfs           920M     0  920M   0% /dev/shm
tmpfs           920M   20M  901M   3% /run
tmpfs           920M     0  920M   0% /sys/fs/cgroup
/dev/vda1        20G  2.0G   19G  10% /
tmpfs           184M     0  184M   0% /run/user/1000
/dev/vdb1       2.9G  9.0M  2.8G   1% /ontapvol
```

#### 1-2. Retypeの実施
本記事では**移行時の速度を測定する為、ONTAPのqos statisticsコマンドを利用し、コピー発生(移行)速度とデータ量の確認**をします。

```bash:
# 移行先のONTAP側で実施
> qos statistics volume characteristics show -vserver openstack02  -volume nfs02
Workload            ID     IOPS       Throughput Request Size Read Concurrency
--------------- ------ -------- ---------------- ------------ ---- -----------
-total-              -        0            0KB/s           0B   0%           0
-total-              -        0            0KB/s           0B   0%           0
-total-              -        7            0KB/s           0B   0%           0
```

対象のCinder Volumeで[ボリューム種別の変更]を選択します。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/774f9a14-c270-9949-7acb-b38b646b1d47.png>

表示された画面で、**[種別]を移行先となるCinder Volume Typeに指定し[移行ポリシー]を要求時にして、[ボリューム種別の変更]をクリック**します。

<img width="500" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/4ba52493-19a6-bb23-97c1-69ce9a543d29.png>

ONTAPの転送速度を確認すると、**QoSに影響された形で移行されている事が確認**できます。
時々移行元のQoSである5MB/sを超えるのはBurst QoSが発生している為です。
(移行元か移行先のQoS値が小さい方に引っ張られる)

```bash:
> qos statistics volume characteristics show -vserver openstack02  -volume nfs02

Workload            ID     IOPS       Throughput Request Size Read Concurrency
--------------- ------ -------- ---------------- ------------ ---- -----------
-total-              -       55         3.00MB/s       57195B   0%           0
nfs02-wid19939   19939       48         3.00MB/s       65536B   0%           0
-total-              -      152         9.50MB/s       65536B   0%           0
nfs02-wid19939   19939      152         9.50MB/s       65536B   0%           0
-total-              -       62         3.50MB/s       59193B   0%           4
nfs02-wid19939   19939       56         3.50MB/s       65536B   0%           4
-total-              -       49         3.00MB/s       64198B   0%           0
nfs02-wid19939   19939       48         3.00MB/s       65536B   0%           0
-total-              -       56         3.38MB/s       63195B   0%           0

[Job 74022] Job succeeded: Successful
```

　
種別が変更されている事を確認します。
<img width="600" alt="qiita-square" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1268577/1d1db3d3-55fd-9917-dc34-f255d2737043.png>



詳細を確認する為、OpenStack上でCLIを使いRetype後の状態を確認します。

```bash:
[root@queens ~]# source keystonerc_admin

[root@queens ~(keystone_admin)]# cinder list
+--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+
| ID                                   | Status | Name  | Size | Volume Type | Bootable | Attached to                          |
+--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+
| 8bd470ae-2efb-4c37-bada-400e3e55c909 | in-use | vol01 | 3    | ONTAP-HDD01 | false    | 3697be8a-34ed-4bcd-a817-ebd05a259962 |
| d2207281-b224-4abf-ad3a-4ab7e5a8ad79 | in-use |       | 20   | ONTAP-AFF01 | true     | 3697be8a-34ed-4bcd-a817-ebd05a259962 |
+--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+

[root@queens ~(keystone_admin)]# cinder show 8bd470ae-2efb-4c37-bada-400e3e55c909
+--------------------------------+-----------------------------------------------+
| Property                       | Value                                         |
+--------------------------------+-----------------------------------------------+
| attached_servers               | ['3697be8a-34ed-4bcd-a817-ebd05a259962']      |
| attachment_ids                 | ['f106b51c-d8ab-413e-a735-aa9377f4da12']      |
| availability_zone              | nova                                          |
| bootable                       | false                                         |
| consistencygroup_id            | None                                          |
| created_at                     | 2024-04-01T07:03:41.000000                    |
| description                    |                                               |
| encrypted                      | False                                         |
| id                             | 8bd470ae-2efb-4c37-bada-400e3e55c909          |
| metadata                       | attached_mode : rw                            |
| migration_status               | success                                       |
| multiattach                    | False                                         |
| name                           | vol01                                         |
| os-vol-host-attr:host          | queens.local@ontap-hdd01#172.16.10.247:/nfs02 |
| os-vol-mig-status-attr:migstat | success                                       |
| os-vol-mig-status-attr:name_id | 1a128b55-1b00-41fd-a19d-8eb0102f3886          |
| os-vol-tenant-attr:tenant_id   | e87e490d03f8493ba656e254e7f813ec              |
| replication_status             | None                                          |
| size                           | 3                                             |
| snapshot_id                    | None                                          |
| source_volid                   | None                                          |
| status                         | in-use                                        |
| updated_at                     | 2024-04-02T06:17:09.000000                    |
| user_id                        | 5beab73ebd4846b0bb92ea9ab7878c47              |
| volume_type                    | ONTAP-HDD01                                   |
+--------------------------------+-----------------------------------------------+

[root@queens ~(keystone_admin)]# df -h |grep nfs
172.16.10.247:/nfs02   48G   15M   48G   1% /var/lib/nova/mnt/c2ce614519c46edf02518a262ac7ff10
172.16.10.244:/nfs01   48G  2.4G   46G   5% /var/lib/nova/mnt/833067e7f79fa5e29491446c3ad99bdf

[root@queens ~(keystone_admin)]# ls -al /var/lib/nova/mnt/c2ce614519c46edf02518a262ac7ff10
total 3158132
drwxr-xr-x 2 root root       4096 Apr  2 15:14 .
drwxr-xr-x 4 nova nova         86 Apr  2 15:04 ..
drwxrwxrwx 2 root root       4096 Mar 28 15:26 .snapshot
-rw-rw-rw- 1 qemu qemu 3221225472 Apr  2 15:17 volume-1a128b55-1b00-41fd-a19d-8eb0102f3886

```

　
**QoS値を大きく調整してRetypeを実施すると、短時間で移行元のCinder Volumeが未使用でもCinder Volumeのサイズ分だけデータ転送が確認できる**かと思います。
(秒間表示なので、nfs02-xxのMB/s行数を足すと移行するCinder Volumeサイズになる)
```bash:
> qos statistics volume characteristics show -vserver openstack02  -volume nfs02

Workload            ID     IOPS       Throughput Request Size Read Concurrency
--------------- ------ -------- ---------------- ------------ ---- -----------
-total-              -       14        16.00KB/s        1170B   7%           0
nfs02-wid19939   19939        7        16.00KB/s        2340B  14%           0
-total-              -     4925       306.76MB/s       65311B   0%           4
nfs02-wid19939   19939     4925       306.76MB/s       65311B   0%           4
-total-              -     6653       415.44MB/s       65476B   0%           5
nfs02-wid19939   19939     6647       415.44MB/s       65536B   0%           5
-total-              -     6343       396.38MB/s       65525B   0%           6
nfs02-wid19939   19939     6342       396.38MB/s       65536B   0%           6
-total-              -     4867       304.06MB/s       65509B   0%           4
nfs02-wid19939   19939     4865       304.06MB/s       65536B   0%           4
-total-              -     4690       293.06MB/s       65522B   0%           5
nfs02-wid19939   19939     4689       293.06MB/s       65536B   0%           5
-total-              -     5146       321.25MB/s       65459B   0%           4
nfs02-wid19939   19939     5140       321.25MB/s       65536B   0%           4
-total-              -     6276       392.12MB/s       65515B   0%           6
nfs02-wid19939   19939     6274       392.12MB/s       65536B   0%           6
-total-              -     6115       382.19MB/s       65536B   0%           6
nfs02-wid19939   19939     6115       382.19MB/s       65536B   0%           6
-total-              -     4178       260.94MB/s       65488B   0%           5
nfs02-wid19939   19939     4175       260.94MB/s       65536B   0%           5
-total-              -       13            0KB/s           0B   0%           0
```



### 2. 一般ユーザによるRetypeをCLIで実施
次に一般ユーザ権限で、CLIを用いたRetypeを試してみます。

#### 2-1. 一般ユーザでもRetype可能にする為の準備
OpenStackのCLIで、admin権限を用いてcinder.confの修正を実施します。
**cinder.confに適切なKeystone権限で[Nova]セクションが設定されている必要**があります。
必要な情報については、/etc/nova/nova.confのファイルを参照する事で確認する事ができます。

```bash:
# cinder.confの修正後の内容

[root@queens ~(keystone_admin)]# cat /etc/cinder/cinder.conf

(中略)

[nova]
auth_url=http://172.16.10.144:5000/
username=nova
password=XXXXXXXX
user_domain_name=Default
project_name=services
project_domain_name=Default
auth_type = password
project_domain_id = default
user_domain_id = default


[ontap-aff01]
volume_backend_name=ontap-aff01
volume_driver=cinder.volume.drivers.netapp.common.NetAppDriver
(中略)
```

修正後にcinderサービスを再起動します。

```bash:
[root@queens ~(keystone_admin)]# systemctl restart openstack-cinder*
```


#### 2-2. 移行対象のCinder Volumeの確認
OpenStackに作成した**一般user権限を読み込み状態を確認**します。
(keystonerc_adminファイルをコピーしてuser01用に修正してます)

**本記事では起動中のインスタンスに接続したvol02という5GBのCinder VolumeのRetypeを実施**します。

```bash:
[root@queens ~(keystone_user01)]# source keystonerc_user01

[root@queens ~(keystone_user01)]# nova list
+--------------------------------------+--------+--------+------------+-------------+--------------------------------------+
| ID                                   | Name   | Status | Task State | Power State | Networks                             |
+--------------------------------------+--------+--------+------------+-------------+--------------------------------------+
| e9197613-26c6-40c4-ac5c-bbc8c82cb1a1 | inst02 | ACTIVE | -          | Running     | innet02=192.168.30.14, 172.16.10.240 |
+--------------------------------------+--------+--------+------------+-------------+--------------------------------------+

[root@queens ~(keystone_user01)]# cinder list
+--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+
| ID                                   | Status | Name  | Size | Volume Type | Bootable | Attached to                          |
+--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+
| 9a827e60-2b92-4767-b26b-3ab4a2251fc6 | in-use |       | 20   | ONTAP-AFF01 | true     | e9197613-26c6-40c4-ac5c-bbc8c82cb1a1 |
| d8d7308b-710f-454b-bac1-457bc2479499 | in-use | vol02 | 5    | ONTAP-AFF01 | false    | e9197613-26c6-40c4-ac5c-bbc8c82cb1a1 |
+--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+

[root@queens ~(keystone_user01)]# cinder snapshot-list
+----+-----------+--------+------+------+
| ID | Volume ID | Status | Name | Size |
+----+-----------+--------+------+------+
+----+-----------+--------+------+------+
```

#### 2-3. Retypeの実施
Retypeコマンドを実施します。
```bash:
[root@queens ~(keystone_user01)]# cinder retype --migration-policy on-demand d8d7308b-710f-454b-bac1-457bc2479499 ONTAP-HDD01
```

#### 2-4. Retype後の確認
移行完了後に状態確認を実施します。
```bash:
[root@queens ~(keystone_user01)]# cinder list
+--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+
| ID                                   | Status | Name  | Size | Volume Type | Bootable | Attached to                          |
+--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+
| 9a827e60-2b92-4767-b26b-3ab4a2251fc6 | in-use |       | 20   | ONTAP-AFF01 | true     | e9197613-26c6-40c4-ac5c-bbc8c82cb1a1 |
| d8d7308b-710f-454b-bac1-457bc2479499 | in-use | vol02 | 5    | ONTAP-HDD01 | false    | e9197613-26c6-40c4-ac5c-bbc8c82cb1a1 |
+--------------------------------------+--------+-------+------+-------------+----------+--------------------------------------+


[root@queens ~(keystone_user01)]# cinder show d8d7308b-710f-454b-bac1-457bc2479499
+------------------------------+------------------------------------------+
| Property                     | Value                                    |
+------------------------------+------------------------------------------+
| attached_servers             | ['e9197613-26c6-40c4-ac5c-bbc8c82cb1a1'] |
| attachment_ids               | ['76046a49-f345-46b5-a52f-124bb2572b40'] |
| availability_zone            | nova                                     |
| bootable                     | false                                    |
| consistencygroup_id          | None                                     |
| created_at                   | 2024-04-02T08:03:09.000000               |
| description                  |                                          |
| encrypted                    | False                                    |
| id                           | d8d7308b-710f-454b-bac1-457bc2479499     |
| metadata                     | attached_mode : rw                       |
| multiattach                  | False                                    |
| name                         | vol02                                    |
| os-vol-tenant-attr:tenant_id | 145415a0344c491794bcf86f1520c852         |
| replication_status           | None                                     |
| size                         | 5                                        |
| snapshot_id                  | None                                     |
| source_volid                 | None                                     |
| status                       | in-use                                   |
| updated_at                   | 2024-04-02T09:36:26.000000               |
| user_id                      | 89a4952f7cf541408bf02d35c37a88b7         |
| volume_type                  | ONTAP-HDD01                              |
+------------------------------+------------------------------------------+
```

## 参考及びリンク
[Understanding volume migration on OpenStack: Intercluster volume migration](https://netapp.io/2018/11/07/understanding-volume-migration-on-openstack-intercluster-volume-migration/)

[Understanding volume migration on OpenStack: Intracluster volume migration
](https://netapp.io/2018/11/07/understanding-volume-migration-on-openstack-intracluster-volume-migration/)

[Openstack: Cinder retype of "in-use" volume fails with HTTP 400 error](https://mysupport.netapp.com/site/article?lang=en&page=%2FCloud%2FOpenStack%2FOpenstack:_Cinder_retype_of_%22in-use%22_volume_fails_with_HTTP_400_error&type=solution)

[OpenStack環境のCinderでONTAP利用①【Packstack利用のOpenStack QueensのAll in One Installメモ】](https://qiita.com/s_yosh1d/private/29a32c5838f33898b77c)

[OpenStack環境のCinderでONTAP利用②【OpenStack Queensの初期設定メモ】](https://qiita.com/s_yosh1d/private/c0d4ff25fffc1d69a908)


[OpenStack環境のCinderでONTAP利用③【CinderでONTAPの利用設定メモ】](https://qiita.com/s_yosh1d/private/42d187069fd3b86d1b70)


[OpenStack環境のCinderでONTAP利用④【CinderでONTAPのQoS利用設定メモ】](https://qiita.com/s_yosh1d/private/4bfad0a41275a8bdb197)