[pve-devel] kvm disk template implementation ideas
Alexandre DERUMIER
aderumier at odiso.com
Wed Aug 22 09:49:25 CEST 2012
Hi,
one feature that really miss on proxmox currently is disk templates for kvm machines.
I'm currently doing it with custom scripts, but I would like to add clean implementation in proxmox in the coming months(I think users should be happy too :)
I don't know if you have already thinked about it, but here some ideas:
template feature with image copy from source (file storage, .raw files) to destination.
---------------------------------------------------------------------------------------
for each storage module, add an export and import sub.
import:
------
import is used to import existing template in the target storage
file,nfs: cp /var/lib/vz/template/qemu/template1.raw /mnt/myimage.raw
lvm : dd if=/var/lib/vz/template/qemu/template1.raw of=/dev/lvm/..
iscsi : dd if=/var/lib/vz/template/qemu/template1.raw of=/dev/sd
rbd : rbd import /var/lib/vz/template/qemu/template1.raw myrbdimage
sheepdog: cat /var/lib/vz/template/qemu/template1.raw | collie vdi write mysheepimage
libiscsi,nexenta : LD_PRELOAD=./bin/ld_iscsi.so dd if=/var/lib/vz/template/qemu/template1.raw of=iscsi://127.0.0.1:3262/iqn.ronnie.test/2
export:
--------
export is used to export a disk to the template storage, for creating new templates
file,nfs: cp /mnt/myimage.raw /var/lib/vz/template/qemu/template1.raw
lvm : dd if=/dev/lvm/.. of=/var/lib/vz/template/qemu/template1.raw
iscsi : dd if=/dev/sd of=/var/lib/vz/template/qemu/template1.raw
rbd : rbd export myrbdimage /var/lib/vz/template/qemu/template1.raw
sheepdog: collie vdi read mysheepimage > /var/lib/vz/template/qemu/template1.raw
libiscsi,nexenta : LD_PRELOAD=./bin/ld_iscsi.so dd if=iscsi://127.0.0.1:3262/iqn.ronnie.test/2 of=/var/lib/vz/template/qemu/template1.raw
then add some kind of
qm exportdisk <vmid> <disk> <target> : qm exportdisk vmid virtio0 /var/lib/vz/template/qemu/template1.raw
qm importdisk <vmid> <disk> <source> : qm importdisk vmid virtio0 /var/lib/vz/template/qemu/template1.raw
or maybe can we integrate this in vzdump/vzrestore.
So we could also make backup/restore for all storages.
I never look in vzdump code, so I don't know how it's work
template feature with image cloning
-----------------------------------
for storage which support it, add a template feature based on image snapshot/instant cloning.
currently nexenta,sheepdog and rbd(soon), lvm??? support it.
I don't know really how to implement this, as we need to see difference between vm disk and templates disk.
(And we can't have a template directory).
we can't rename volume rbd,sheepdog so maybe can we allow snapshot named "template-..."
for this features, we need to add storage sub:
snapshot_create, clone, disktemplate_list (like vdisk_list)
snapshot_create
----------------
rbd: snap create --snap template-template1 vm-id-disk-1
sheepdog: collie vdi snapshot -s template-template1 vm-id-disk-1
nexenta : nexenta api snap vm-id-disk-1 at template-template1
disktemplate_list (return list of templates(snapshots) and associated disk
----------------------------------------------------------------------------
sheepdog : collie vdi list
rbd : problem : can't easilly list all templates, without calling "rbd snap ls image1" for each image
nexenta: nexenta api to list templates
another solution is to maintain a list of snapshots in a text file or somewhere else, but we don't like that in proxmox.
clone
-----
rbd: coming soon
sheepdog: collie vdi clone -s template-template1 vm-id-disk-1 mytargetimage
nexenta : nexenta clone api vm-id-disk-1 at template-template1 mytargetimage
then add some kind of
qm clonedisk <vmid> <disk> <template> : qm clonedisk vmid virtio0 template-template1
What do you think about it ? Don't hesitate to comments.
More information about the pve-devel
mailing list