それマグで!

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

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

LXC で不要になったストレージを取り外す

LXC で不要になったストレージを取り外す

LXC で不要になったストレージを取り外す

使用中のストレージを一覧する

lxc storage list を使って、いま、ストレージが使われているか確認する。

takuya@lxc-host:~$ lxc storage list
+---------+--------+--------------------------------------------+-------------+---------+
|  NAME   | DRIVER |                   SOURCE                   | DESCRIPTION | USED BY |
+---------+--------+--------------------------------------------+-------------+---------+
| bt01    | btrfs  | /var/snap/lxd/common/lxd/disks/bt01.img    |             | 7       |
+---------+--------+--------------------------------------------+-------------+---------+
| bt02    | btrfs  | /var/snap/lxd/common/lxd/disks/bt02.img    |             | 1       |
+---------+--------+--------------------------------------------+-------------+---------+

ストレージを使っているコンテナを探す

lxc storage info で ストレージ情報を確認して、ストレージを使ってるインストール(コンテナ)を表示する

takuya@lxc-host:~$ lxc storage info bt02
info:
  description: ""
  driver: btrfs
  name: bt01
  space used: 18.76GB
  total space: 100.0GB
used by:
  instances:
  - ubuntu1804

削除する

削除できるものは削除する。

lxc stop /delete で削除する。

lxc stop ubuntu1804
lxc delete ubuntu1804

他のストレージへ移動させる。

lxc コマンドの stop / move を使い、利用中のインスタを移動する

lxc stop ubuntu1804
lxc move ubuntu1804 ubuntu1804-tmp --storage=bt01
lxc move ubuntu1804-tmp ubuntu1804

move の引数に --storage=NAME を使えば、ストレージ間での移動が可能。 ただし、移動は同名のインスタンスとして移動できないので、いったん別名に移動し、その後元の名前に戻す。

利用状況を再度確認する。

lxc storage list でストレージの利用状況を再度確認する。 どこからも使われてない、未利用のストレージになっていれば、安全に削除ができる。

USED BY が ゼロになったらストレージを取り外しできる。

takuya@lxc-host:~$ lxc storage list
+---------+--------+--------------------------------------------+-------------+---------+
|  NAME   | DRIVER |                   SOURCE                   | DESCRIPTION | USED BY |
+---------+--------+--------------------------------------------+-------------+---------+
| bt01    | btrfs  | /var/snap/lxd/common/lxd/disks/bt01.img    |             | 8       |
+---------+--------+--------------------------------------------+-------------+---------+
| bt02    | btrfs  | /var/snap/lxd/common/lxd/disks/bt02.img    |             | 0       |
+---------+--------+--------------------------------------------+-------------+---------+

ストレージを削除する

lxc storage の delete サブコマンドを使えば、未使用のストレージを削除することができる。

lxc storage delete bt02

実際やってみて

実際に移動をつづけて減らしていったのですが。インスタンスによって移動にとても時間がかかるものや、移動が失敗するものが現れる。

悲劇が起きたのは、lxc のインスタンスをストレージ間で移動中に、PCがスリープし、SSHセッションが切れてしまい、中途半端で移動が停止したときに悲劇が起きた。tmux/screen でうまく回避してやらないとめんどくさい。

移動が途中でおわっても元のインスタンスは残ってるが、移動先のストレージは btrfs/ZFS でサブボリュームが壊れてしまい復旧が面倒だった。

デフォルト・ストレージの作り直しの場合

デフォルトのストレージは、Imageの保存先に使われているので、イメージを削除する

## イメージがある場合は、エラーにはず
lxc storage delete default

さきに利用しているコンテナとイメージを削除する

## コンテナを消す
lxc list 
lxc stop $container
lxc delete $container 
## 
lxc image list 
lxc delete image $finger_print

すべてを消したら消せるはずである。