続・このOpenStackなんか変だよぉ…
概要
やっとcinder周りのコマンドを打って操作をすることが出来るようになった契約先の会社のOpenStackですが、再起動するとvolumeの作成が上手くいかなくなります。
担当者に聞いてみるとどうやら以下のような構成だったようです。
- /dev/loop9に/etc/ictsc/ictsc.imgを割り当てたloopback deviceをlvmで使用する。
↓環境が壊れる以前のログ↓
root@vm1 user(keystone)# sudo pvdisplay
--- Physical volume ---
PV Name /dev/loop9
VG Name cinder-volumes
PV Size 3.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 767
Free PE 767
Allocated PE 0
PV UUID kqtzcD-lv5f-CW2p-3vae-CK5I-JWWw-t7CLbL
root@vm1 user(keystone)# sudo vgdisplay
--- Volume group ---
VG Name cinder-volumes
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <3.00 GiB
PE Size 4.00 MiB
Total PE 767
Alloc PE / Size 0 / 0
Free PE / Size 767 / <3.00 GiB
VG UUID f8umFx-eMqy-uR0b-yR7m-4DSx-GhCv-t4F5uz
この再起動後にvolumeの作成がうまくいかなくなる状態を改善するよう依頼された。
前提条件
- OpenStackの再構築禁止
- OpenStackのソースコードの変更禁止
- OpenStack周辺の各種バイナリの置き換え禁止
openstack
コマンドを使用する場合は以下の手順で環境変数を読み込むこと
user@vm1:~$ sudo su --
root@vm1:/home/user# source keystonerc
root@vm1 user(keystone)#
- 永続化をすること(再起動しても上記のloopback deviceに対してファイルが保存されるようにすること)
初期状態
- 再起動後、以下のように作成するとStatusが
error
になっている
※ 問題は再起動直後の状態になっています。
root@vm1 user(keystone)# openstack volume create --size 1 test1
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2021-03-06T17:34:12.000000 |
| description | None |
| encrypted | False |
| id | 868dbf1c-3587-4823-8ce6-543174930833 |
| migration_status | None |
| multiattach | False |
| name | test1 |
| properties | |
| replication_status | None |
| size | 1 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| type | __DEFAULT__ |
| updated_at | None |
| user_id | 36c3e8d7b909429f966f0b3cbd989b65 |
+---------------------+--------------------------------------+
root@vm1 user(keystone)# openstack volume list
+--------------------------------------+-------+-----------+------+-------------+
| ID | Name | Status | Size | Attached to |
+--------------------------------------+-------+-----------+------+-------------+
| 868dbf1c-3587-4823-8ce6-543174930833 | test1 | error | 1 | |
+--------------------------------------+-------+-----------+------+-------------+
終了状態
- 以下のコマンドを打って、Statusがavailableなvolumeが作成できること
root@vm1 user(keystone)# openstack volume create --size 1 volume
root@vm1 user(keystone)# openstack volume list
+--------------------------------------+--------+-----------+------+-------------+
| ID | Name | Status | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| f3a78b88-d15e-4964-abfc-6b4beedcd8e2 | volume | available | 1 | |
+--------------------------------------+--------+-----------+------+-------------+
- 再起動してもloopback deviceが使用されていること(永続化必須)
接続情報
VM名 | ホスト名 | ユーザ | パスワード |
---|---|---|---|
vm1 | 192.168.9.1 | user | ictsc2020 |
解説
この問題では、LVM(loopback device)を用いたCinderが動いている環境が再起動した際に、loop deviceの設定が外れることでCinderでのVolumeの「追加・変更・削除」が出来なくなってしまう。
よって、起動時に毎回自動的にloop deviceの設定がされるようになれば問題解決となる。
想定解
/etc/rc.local
にlosetup
を起動時に行うように書きます。
root@vm1 user(keystone)# cat /etc/rc.local
#!/bin/bash
losetup /dev/loop9 /etc/ictsc/ictsc.img
root@vm1 user(keystone)# ls -la /etc/rc.local
-rwx------ 1 root root 53 Mar 4 23:25 /etc/rc.local
これで、永続化は完了しました。
その他解法
- crontab
- systemd
などを用いて永続化している解答がありました。
こちらも問題なく永続化出来ていることが確認できました。
基本的には起動時に自動でloop deviceの設定が出来ていて、問題なくvolumeの「追加・変更・削除」が出来れば問題ありません。
採点基準
永続化が出来ている(再起動してもopenstack volume create とかが正常に行える) 100%