LXD-Container in anderen Speicher verschieben

LXD-Container in anderen Speicher verschieben

Ich habe ein Problem mit meiner aktuellen storage.imgDatei (btrfs). Ich hatte 2 TB Daten in einem Container und daher wurde die storage.img 2 TB groß. Danach habe ich alles gelöscht, sodass mir 100 GB echte Daten geblieben sind. Das Problem ist jetzt, dass die storage.img sich nicht auf 100 GB verkleinert hat. Sie ist immer noch 2 TB groß.

Ich habe newstorage.imgmit dem Befehl einen weiteren Speicher (btrfs) in LXD erstellt lxc storage create newstorage, weiß aber nicht, wie ich die Container auf den neuen Speicher übertragen kannder richtige Wegdamit ich das Alte löschen storage.imgund meinen Festplattenspeicherplatz zurückgewinnen kann.

Ich habe Dinge wie das manuelle Mounten der beiden IMGs und Folgendes versucht, cp -R /one/* /new/aber danach kann ich die Container nicht starten.

Antwort1

Keine Tricks nötig:

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

Credits:https://discuss.linuxcontainers.org/t/how-to-move-containers-to-a-new-storage-pool-on-the-same-host/2798

Antwort2

Ich habe einen „Hack“ gefunden, der das Problem löst.

Das Problem besteht darin, dass lxc storage create newstoragestandardmäßig ein 15 GB großes Image erstellt wird. Dieser Wert kann nicht geändert werden.

Man muss Zugriff auf eine andere Linux-Maschine mit einer Neuinstallation von LXD haben und es lxd initdort ausführen. Wählen Sie btrfs, eine Loop-Gerätegröße der gewünschten neuen Kapazität des Images und den Image-Namen. Kopieren Sie nun das neue storage.img auf den Server.

Die Schritte zum Kopieren des Inhalts sind:

  1. Alle Container herunterfahren
  2. Computer neu starten
  3. Mounten Sie die alte Datei storage.img in /mnt/oldstorage
  4. Mounten Sie das neue storage.img in /mnt/newstorage
  5. Führen Sie sudo cp -rpv /mnt/oldstorage /mnt/newstorage aus.
  6. Verschieben Sie die alte Datei storage.img aus dem Ordner /var/lib/lxd/disks/
  7. Verschieben Sie die neue Datei storage.img nach /var/lib/lxd/disks/
  8. Computer neu starten
  9. Alle Container starten

Bearbeiten: Diese Methode funktioniert einwandfrei, solange Sie keine vorhandenen Container löschen. LXD erstellt für jeden Container ein Untervolumen. Wenn Sie die Möglichkeit zum Löschen vorhandener Container beibehalten möchten, sollten Sie für jeden Container ein Untervolumen erstellen.

btrfs subvolume create [-i <qgroupid>] [<dest>/]<name>

verwandte Informationen