Всем привет!
Имеется хост с работающим LXC (Alpine linux).
Есть задача перенести или скопировать контейнер с одного Storage pool на другой.
# lxc info peertube
Name: peertube
Status: RUNNING
Type: container
Architecture: x86_64
PID: 9032
Created: 2024/11/10 22:33 MSK
Last Used: 2024/11/19 21:04 MSK
Resources:
Processes: 43
Disk usage:
root: 704.68GiB
# lxc storage list
+------------+--------+-----------+-------------+---------+---------+
| NAME | DRIVER | SOURCE | DESCRIPTION | USED BY | STATE |
+------------+--------+-----------+-------------+---------+---------+
| raid1_pool | lvm | vg_md1 | | 1 | CREATED |
+------------+--------+-----------+-------------+---------+---------+
| tmp_pool | lvm | tmp_pool | | 3 | CREATED |
+------------+--------+-----------+-------------+---------+---------+
# lxc storage show raid1_pool
config:
lvm.use_thinpool: "false"
lvm.vg_name: vg_md1
source: vg_md1
volatile.initial_source: vg_md1
description: ""
name: raid1_pool
driver: lvm
used_by:
- /1.0/instances/gitea1
status: Created
locations:
- none
# lxc storage show tmp_pool
config:
lvm.thinpool_name: LXDThinPool
lvm.vg_name: tmp_pool
source: tmp_pool
volatile.initial_source: /dev/sdg
description: ""
name: tmp_pool
driver: lvm
used_by:
- /1.0/instances/peertube
- /1.0/instances/peertube/snapshots/repo_snap
- /1.0/profiles/tmp_profile
status: Created
locations:
- none
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdc 8:32 0 2.7T 0 disk
└─sdc1 8:33 0 2.7T 0 part
└─md1 9:1 0 2.7T 0 raid1
sdd 8:48 0 2.7T 0 disk
└─sdd1 8:49 0 2.7T 0 part
└─md1 9:1 0 2.7T 0 raid1
sdf 8:80 0 931.5G 0 disk
├─tmp_pool-LXDThinPool_tmeta 253:0 0 120M 0 lvm
│ └─tmp_pool-LXDThinPool-tpool 253:2 0 931.3G 0 lvm
│ ├─tmp_pool-LXDThinPool 253:3 0 931.3G 1 lvm
│ └─tmp_pool-containers_peertube 253:17 0 838.2G 0 lvm /var/lib/lxd/storage-pools/tmp_pool/containers/peertube
└─tmp_pool-LXDThinPool_tdata 253:1 0 931.3G 0 lvm
└─tmp_pool-LXDThinPool-tpool 253:2 0 931.3G 0 lvm
├─tmp_pool-LXDThinPool 253:3 0 931.3G 1 lvm
└─tmp_pool-containers_peertube 253:17 0 838.2G 0 lvm /var/lib/lxd/storage-pools/tmp_pool/containers/peertube
Копирование инстанса осуществляю следующим образом:
lxc cp peertube peertube1 -s raid1_pool --no-profiles --instance-only
При этом способе возникает проблема которая заключается в том, что в новом сторадже под клон создаётся volume размером 10Gb:
sdc 8:32 0 2.7T 0 disk
└─sdc1 8:33 0 2.7T 0 part
└─md1 9:1 0 2.7T 0 raid1
└─vg_md1-containers_peertube1 253:20 0 10G 0 lvm /var/lib/lxd/storage-pools/raid1_pool/containers/peertube1
sdd 8:48 0 2.7T 0 disk
└─sdd1 8:49 0 2.7T 0 part
└─md1 9:1 0 2.7T 0 raid1
└─vg_md1-containers_peertube1 253:20 0 10G 0 lvm /var/lib/lxd/storage-pools/raid1_pool/containers/peertube1
Соответственно, копирование инстанса заканчивается ошибкой:
# lxc cp peertube peertube1 -s raid1_pool --no-profiles --instance-only
Error: Create instance from copy: Create instance volume from copy failed: Rsync receive failed: /var/lib/lxd/storage-pools/raid1_pool/containers/peertube1/: [exit status 11 write |1: broken pipe] (rsync: [receiver] write failed on "/var/lib/lxd/storage-pools/raid1_pool/containers/peertube1/rootfs/home/santic/PS2/ISO/Final_Fantasy_XII_PAL_ENG_Platinum.iso": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(380) [receiver=3.3.0]
)
Как скопировать инстанс так, чтобы создавался volume с нужным размером?
Единственный вариант, который смог провернуть - это через создание профиля с необходимым размером rootfs. Но мне этот вариант строго нежелателен.