現在のファイル (btrfs) に問題がありますstorage.img
。コンテナ内に 2 TB のデータがあったため、storage.img のサイズが 2 TB になりました。その後、すべてを削除し、実際のデータは 100 GB になりました。問題は、storage.img が 100 GB に縮小されなかったことです。まだ 2 TB の大きさです。
newstorage.img
コマンドを使用してLXDで別のストレージ(btrfs)を作成しましたlxc storage create newstorage
が、コンテナを新しいストレージに転送する方法がわかりません正しい方法古いものを削除しstorage.img
て HDD のスペースを取り戻すことができます。
2 つの img を手動でマウントするなどの操作を試しましたcp -R /one/* /new/
が、コンテナを起動できません。
答え1
トリックは必要ありません:
lxc stop container_name
lxc move container_name temp_container_name -s new_storage_pool
lxc move temp_container_name container_name
lxc start container_name
答え2
問題を解決する「ハック」を見つけました。
問題は、lxc storage create newstorage
デフォルトで 15 GB のイメージが作成されることです。この値は変更できません。
LXD を新規インストールした別の Linux マシンにアクセスし、そこで実行する必要がありますlxd init
。btrfs、イメージの希望する新しい容量のループ デバイス サイズ、およびイメージ名を選択します。次に、新しい storage.img をサーバーにコピーします。
コンテンツをコピーする手順は次のとおりです。
- すべてのコンテナをシャットダウンする
- マシンを再起動
- 古いstorage.imgを/mnt/oldstorageにマウントします。
- 新しいstorage.imgを/mnt/newstorageにマウントします。
- sudo cp -rpv /mnt/oldstorage /mnt/newstorageを実行します。
- 古い storage.img を /var/lib/lxd/disks/ フォルダから移動します。
- 新しい storage.img を /var/lib/lxd/disks/ に移動します。
- マシンを再起動
- すべてのコンテナを起動する
編集: この方法は、既存のコンテナを削除しない限りは正常に機能します。LXD はコンテナごとにサブボリュームを作成します。既存のコンテナを削除する機能を維持したい場合は、コンテナごとにサブボリュームを作成する必要があります。
btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>