
On 2014年07月02日 11:23, Aline Manera wrote:
On 07/01/2014 04:53 AM, Royce Lv wrote:
Currently kimchi just support create a vm from an ISO defined template. This requires duplicate installation. This release we want to support create a vm from an installed image.
This involves the following change:
1. Create a template from an image:
POST /templates/template-1 {'base': 'abs_base_img_path'}
Implementation: (1)probe image os distro and version to get suggested config. (2)Avoid image to be deleted. (3)Avoid using ISO and base image at the same time.
2. Create a vm from image based template: This part has already been covered by Aline's prototype patch.
POST /vms/vm-1 {'storagepool': 'default', 'network': 'default', 'disks':[{'index':0, 'base': 'abs_path'}]} or {'storagepool': 'default', 'network': 'default', 'disks':[{'index':0, 'base': 'abs_path', 'volume': 'scsi_volume'}]}
The create vm implementation need to be re-considered for the following points: (1) when creating vm on scsi/iscsi pool, if volume size smaller than original image, need to be rejected.
From that, I assume you will copy the img content to the scsi/iscsi volume. Is that correct? If so, can't we use backing store (http://libvirt.org/formatstorage.html#StorageVolBacking) for the existing img and make the vm volume the RW img?
During my prototype development, I used backing store and it worked well with directory storage volumes But I haven't tested it with scsi/iscsi volumes
Yes, we will use the backing file, but since the original image may be a small image with a large size, the rest most part will be write to the SCSI/iSCSI volume, to *guarantee* volume will not explode in write, the cow volume needs to be >= declared. It is a secure choice, but yes, there will be some waste in space.
(2) when creating vm on directory based pool, volume generating logic is different with allocation new volume. (2) xml generating need to be refactored.
Anything else need to be considered, welcome your comments.