概要
やっとcinder周りのコマンドを打って操作をすることが出来るようになった契約先の会社のOpenStackですが、再起動するとvolumeの作成が上手くいかなくなります。
担当者に聞いてみるとどうやら以下のような構成だったようです。
- /dev/loop9に/etc/ictsc/ictsc.imgを割り当てたloopback deviceをlvmで使用する。
↓環境が壊れる以前のログ↓
[email protected] 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 [email protected] 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
コマンドを使用する場合は以下の手順で環境変数を読み込むこと
[email protected]:~$ sudo su -- [email protected]:/home/user# source keystonerc [email protected] user(keystone)#
- 永続化をすること(再起動しても上記のloopback deviceに対してファイルが保存されるようにすること)
初期状態
- 再起動後、以下のように作成するとStatusが
error
になっている
※ 問題は再起動直後の状態になっています。
[email protected] 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 | +---------------------+--------------------------------------+ [email protected] user(keystone)# openstack volume list +--------------------------------------+-------+-----------+------+-------------+ | ID | Name | Status | Size | Attached to | +--------------------------------------+-------+-----------+------+-------------+ | 868dbf1c-3587-4823-8ce6-543174930833 | test1 | error | 1 | | +--------------------------------------+-------+-----------+------+-------------+
終了状態
- 以下のコマンドを打って、Statusがavailableなvolumeが作成できること
[email protected] user(keystone)# openstack volume create --size 1 volume [email protected] 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
を起動時に行うように書きます。
[email protected] user(keystone)# cat /etc/rc.local #!/bin/bash losetup /dev/loop9 /etc/ictsc/ictsc.img [email protected] 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%