docs(proxmox): cum se converteste un linked clone in full clone pe local-zfs
`qm move-disk <vmid> <disk> local-zfs --delete 1` esueaza intotdeauna pentru zvol-uri: PVE respinge mutarea pe acelasi storage, iar conditia din Qemu.pm:4688 e mereu adevarata fiindca numele volumului n-are sufix de format. Nici storage-ul `local` nu e ruta de ocolire — n-are `images` in content. Documentata metoda care functioneaza (zfs send/recv local + swap de volid), asa cum a fost aplicata pe VM 303. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MoFGxftQw92PX4Sdkn94pv
This commit is contained in:
@@ -107,6 +107,38 @@ rpool/data # ZFS pool pentru VM/LXC
|
||||
/var/lib/vz/template/cache/ # LXC templates
|
||||
```
|
||||
|
||||
### ⚠️ Linked clone → full clone: `qm move-disk` NU merge pe `local-zfs`
|
||||
|
||||
Un VM clonat din template rămâne **linked clone** (`zfs list -o name,origin` arată un
|
||||
`origin`), iar template-ul sursă nu poate fi șters cât timp există. Metoda evidentă —
|
||||
`qm move-disk <vmid> virtio0 local-zfs --delete 1` — **eșuează întotdeauna**. PVE respinge
|
||||
mutarea pe același storage (`/usr/share/perl5/PVE/API2/Qemu.pm:4688`):
|
||||
|
||||
```perl
|
||||
die "you can't move to the same storage with same format\n"
|
||||
if $oldstoreid eq $storeid && (!$format || !$oldfmt || $oldfmt eq $format);
|
||||
```
|
||||
|
||||
Pentru zvol-uri `$oldfmt` e mereu `undef` (numele n-are sufix `.raw`), deci condiția e
|
||||
adevărată indiferent de parametri. Nici storage-ul `local` nu e o rută de ocolire — are
|
||||
`content iso,vztmpl,backup`, fără `images`.
|
||||
|
||||
**Ce funcționează** (aplicat pe VM 303 în 2026-08-11, ~8 min downtime pentru 64 GB): backup
|
||||
`vzdump` întâi, apoi ștergerea snapshot-urilor VM-ului (blochează detașarea sursei), oprire
|
||||
curată, și copie ZFS locală cu swap de volid în `/etc/pve/qemu-server/<vmid>.conf`:
|
||||
|
||||
```bash
|
||||
zfs snapshot rpool/data/vm-303-disk-1@fullclone
|
||||
zfs send rpool/data/vm-303-disk-1@fullclone | zfs recv rpool/data/vm-303-disk-2
|
||||
zfs destroy rpool/data/vm-303-disk-2@fullclone
|
||||
zfs destroy rpool/data/vm-303-disk-1@fullclone
|
||||
zfs set refreservation=none rpool/data/vm-303-disk-2 # local-zfs e sparse 1
|
||||
```
|
||||
|
||||
`zfs send` fără `-i` produce un flux complet, deci datasetul rezultat nu are `origin`.
|
||||
În config, discul vechi se lasă ca `unusedN` — rollback prin swap invers, ~1 minut. Ambele
|
||||
discuri trebuie tratate, inclusiv `efidisk0`.
|
||||
|
||||
## Comenzi Utile Proxmox
|
||||
|
||||
### Gestiune VM-uri
|
||||
|
||||
Reference in New Issue
Block a user