[Kimchi-devel] Rethink the Relationship of Template and VM

Zhou Zheng Sheng zhshzhou at linux.vnet.ibm.com
Tue Apr 29 02:42:29 UTC 2014


Would anyone share some background information on why we implement LUN
in template? I want to know the original author's considerations. I
googled this topic in the mail list, didn't get much context information.

on 2014/04/28 21:08, Sheldon wrote:
> On 04/28/2014 01:45 PM, Mark Wu wrote:
>> On 04/27/2014 10:38 PM, Zhou Zheng Sheng wrote:
>>> Hi all,
>>>
>>> I'm working on host device passthrough. A a problem troubles me: I see
>>> in current Kimchi code, when adding a specific SCSI or iSCSI LUN, it is
>>> added to the template but not the VM. This is counter-intuitive, because
>>> a template is to store the common information for lots of VMs, while a
>>> specific LUN should only be used by just one VM. It's OK for DIR, NFS
>>> and Logical storage pool being managed by the template, because actually
>>> the template allocates a new specific volume for a new VM, so the
>>> specific volume goes with the specific VM but not the template. Since we
>>> don't define a specific DIR storage volume in the template, why we
>>> define a concrete LUN in it?
>>>
>>> The first problem in the current design is that we can not attach a new
>>> LUN to a VM after the VM is created.
>>>
>>> Another problem is that we mix the "things in common" and "things
>>> special" in template, thus we make its responsibility complex. Static
>>> and dynamic validations are also mixed in template.
>>>
>>> The third problem is that if we get 10 LUNs for 10 VMs, the user has to
>>> create 10 templates at first, then create 10 VMs from the 10 templates
>>> respectively. It's a bit tedious.
>>>
>>> The fourth problem is that if a LUN is used by a VM, usually it should
>>> not be used by other VMs, so it implies that by specifying a LUN in a
>>> template, the template should only create just one VM. What's the point
>>> to make a template that only produces one VM?
>>>
>>> It seems a cleaner way is putting SCSI LUN handling code in VM. Firstly,
>>> we can assign a SCSI/iSCSI storage pool to the template. When it's time
>>> to create a VM from the template, Kimchi lists all the available LUNs in
>>> the storage pool and the user can just pick some LUNs. The VM override
>>> parameters are suitable to store the LUNs information. It also makes
>>> possible to implement some mechanisms to add/remove LUNs after a VM is
>>> created, which is a very typical user requirement.
>>>
>>> The same problem exists in host device passthrough. For a specific
>>> device, it should be passthrough to a specific VM but not a template
>>> I'd like to collect some thoughts before my device passthrough patch V2.
>>> In which place you'd suggest me to put device passthrough information,
>>> template or VM?
>> Template should NOT include any vm specific information. As I mentioned
>> in the comments of your pci passthrough patch, we need allow user have
>> chance to customize the configuration when creating vm based on
>> template.
> ACK




More information about the Kimchi-devel mailing list