それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

lxc の root ストレージを作り直す。( Failed getting root disk: No root device could be found)

LXC のstorage を作り直す

LXCを整理するのには、ストレージを消して作り直すと手っ取り早い

ストレージをすべて消して空っぽにした状態

takuya@:~$ lxc storage ls
+------+--------+--------+-------------+---------+-------+
| NAME | DRIVER | SOURCE | DESCRIPTION | USED BY | STATE |
+------+--------+--------+-------------+---------+-------+

lxc のストレージを消すには、used by で利用しているlxd インスタンスlxc delete $NAMEで消す必要もある。

lxc コマンドは、次のようにすると、sudo なし一般ユーザも利用可能。

sudo usermod -aG lxd takuya

ストレージを再生成する。

lxc storage create  default btrfs

root (イメージ保存先)を割り当てる。

path=/ を割り当てる。

lxc profile device add default root disk path=/ pool=default

この作業を忘れると、次のように root device (stoage ) がないと怒られる。

Failed getting root disk: No root device could be found

btrfs の圧縮オプションを入れておく。

btrfs は圧縮オプションを入れておくといいかもしれない。(おまじない)

lxc storage set default btrfs.mount_options compress=zstd

zstd 圧縮が効いていることを確認

lxc storage get default btrfs.mount_options

イメージをlaunchして確認

LXC_NAME=test-ubuntu
RELEASE=22.04
lxc launch ubuntu:$RELEASE $LXC_NAME

btrfs の圧縮オプションが効いていることも確認

lxc exec $LXC_NAME 'mount' | grep btrfs | grep zstd

/var/snap/lxd/common/lxd/disks/default.img 
on / type btrfs (rw,relatime,idmapped,compress=zstd:3,
ssd,space_cache=v2,user_subvol_rm_allowed,
subvolid=257,subvol=/containers/test)

btrfs なんで subvol=/containers/test でLXC_NAMEが入っていて、compress=zstd:3, になって圧縮オプションも継続していることが確認できる。

まとめ

lxc のストレージの作り直し。

lxc storage delete $NAME
lxc storage create $NAME
lxc profile device add default root disk path=/ pool=$NAME

lxd init をしてもいいけど、ストレージだけ作り直せる。使えると便利。