lxc delete 時間かかりすぎる
lxc ストレージのbtrfsのrestore(load)に失敗したので。強制的に消す方法を模索する
うっかり、コンテナに200GBも入れてしまったので、時間がかかって仕方ない。
いっそのこと先にストレージをけしたらどうなるのか。1Gのコンテナで試してみることにした。
ストレージとインスタンスを作成する
lxc storage create bt02 btrfs lxc launch images:debian/11 d11 --storage=bt02
ストレージを消してやる
sudo rm /var/snap/lxd/common/lxd/disks/bt02.img
ファイルはもうない
sudo ls -alt /var/snap/lxd/common/lxd/disks/bt02.img ls: cannot access '/var/snap/lxd/common/lxd/disks/bt02.img': No such file or directory
参照は残ってる。
losetup NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO LOG-SEC /dev/loop10 0 0 1 0 /var/snap/lxd/common/lxd/disks/bt02.img (deleted) 1 512
lxc storage list +---------+--------+--------------------------------------------+-------------+---------+---------+ | NAME | DRIVER | SOURCE | DESCRIPTION | USED BY | STATE | +---------+--------+--------------------------------------------+-------------+---------+---------+ | bt02 | btrfs | /var/snap/lxd/common/lxd/disks/bt02.img | | 2 | CREATED | +---------+--------+--------------------------------------------+-------------+---------+---------+
ストレージは消したけど、新規起動できてしまう。
ある意味正しいけどある意味怖い。
lxc launch images:debian/11 d12 --storage=bt02 Creating d12 Starting d12
ストレージが消えたのを反映させる。
ストレージの存在と状態はSQLiteで管理しているらしく、起動にチェックするらしい。 SQLiteを操作して消す以外に方法が見当たらない、
lxd を再起動して、エラーにしてやる。
sudo snap restart lxd
再起動すると UNAVAILABLE にななる。.
lxc storage list +---------+--------+--------------------------------------------+-------------+---------+-------------+ | NAME | DRIVER | SOURCE | DESCRIPTION | USED BY | STATE | +---------+--------+--------------------------------------------+-------------+---------+-------------+ | bt02 | btrfs | /var/snap/lxd/common/lxd/disks/bt02.img | | 3 | UNAVAILABLE | +---------+--------+--------------------------------------------+-------------+---------+-------------+
インスタンスはストレージがないので起動していない。
lxc list +------+---------+------+------+-----------+-----------+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS | +------+---------+------+------+-----------+-----------+ | d11 | STOPPED | | | CONTAINER | 0 | +------+---------+------+------+-----------+-----------+ | d12 | STOPPED | | | CONTAINER | 0 | +------+---------+------+------+-----------+-----------+
インスタンスを消してみる
lxc delete d12 lxc delete d11
特にエラーなく消せる。
ストレージを一覧から削除する
lxc storage delete bt02
無事消えました。
結論
ストレージ・ファイルを消しても、起動中なら参照は残ってるので、そのまま使える。
再起動すると、ストレージがが見つからいためUNAVAILABLEになる。インスタンスも起動しない。
その状態でインスタンスを消すことはできる。
この方法でbtrfsエラーが出て、消せなくなったコンテナを消すことができるようになった。
インスタンスを直接消す事ができるので、エラーがでたストレージは切り離せませすね。
複数のインスタンスでストレージを使ってる場合は、インスタンスを lxc move
で移動させておけば、影響なく消せますね。やったね。
btrfs 怖すぎるだろほんと。