oVirt Live Snapshots
by Federico Simoncelli
Hi,
oVirt, and more specifically VDSM, is currently implementing the live
snapshot feature using the API/commands provided by libvirt and qemu.
It would be great if you could review the design and the current open
issues at:
http://ovirt.org/wiki/Live_Snapshots
Thank you,
--
Federico
12 years, 4 months
Some naive questions on ovirt / vdsm
by deepakcs@linux.vnet.ibm.com
Hi All,
I have few naive Qs for getting some understanding on how things
are not working in my setup.
I have a very very basic/simple setup.. 1 box hosting ovirt-engine and 1
host running f16,
which is discovered and being managed by the ovirt. I don't have the
luxury (atleast currently)
to have a shared san/nas storage setup, so with help on irc, i
configured and setup local dc
with local cluster and added host to the local cluster. Now i am in the
process of adding a virtual
disk to my VM which i created using ovirt.
1) The virtual disk ovirt helps create, is a disk with all zeroes... so
even if i am able to
create the vdisk and attach it to the VM, when i start vm, obviously it
won't boot, as the boot
disk is not found. How do i let the ovirt use a existing .img image file
which already has a os
and root fs installed ( i have it from my virt-manager setup). ? I tried
creatign a new storage
domain of type iso, but not sure how to add my .img for oivrt to
see/recognize and allow me to
select that while creating a new VM ? Again, this is all local, so i
created /iso/images
and /data/images directory on my host, and tried keeping my .imgs there,
but it does not work.
2) Is thin provisioning supported with just 1 host in the dc/cluster ?
From vdsm_storage pdf
i found on the wiki, there is a diagram which uses 2 hosts to do the
thin provisioning...
so are 2 hosts a must ? Also it talks abt mailbox LV, where the msgs are
sent and recd between
vdsm and spm to do the lvextend operation.. i am not clear on where
physically this LV resides ?
on host 1, host 2 or somewhere else ? Assuming its shared storage, does
it mean that i cannot
do thin prov, with local storage, as is the setup in my case ?
thanx,
deepak
12 years, 4 months
Libstorage and repository engines
by smizrahi@redhat.com
I've been working on refactoring the storageDomain\images system in VDSM.
Apart from facilitating various features I've also been trying to make adding new SD types easier and making the image manipulation bits consistent across domain implementation.
Currently in order to create a new domain type you have to create a new StoageDomain,Image and Volume objects and implement all the logic to manipulate them. Apart from being cumbersome and redundant it also make mixed clustered very hard to do.
On of the big changes I put in is separating the image manipulation with the actual storage work.
Instead of each domain type implementing createImage and co you have one class responsible for all the image manipulation in the cluster.
All you have to do facilitate a new storage type is to create a domain engine.
A domain engine is a python class that implement a minimal interface.
1. It has to be able to create resize and delete a slab (slab being a block of writable storage like a lun\lv\file)
2. It has to be able to create and delete tags (tags are pointers to slabs)
The above function are very easy to implement and require very little complexity. All the heavy lifting (image manipulation, cleaning, transaction, atomic operations, etc) is managed by the Image Manager that just uses this unified interface to interact with the different storage types)
In cases where a domain might have a special non-standard features I introduce the concept of capabilities. A domain engine can declare support for certain capabilities (eg. native snapshotting) and implement additional interfaces. If the image manager sees that the domain implements a capability it will use it if not it will use a default implementation that uses the default must have verbs. This is similar to just having drawLine and having drawRect. This is done automatically and at runtime.
I like to compare this to how OpenGL will use software rendering if a certain standard feature is not implemented by the card so you might get a slower but still correct result.
Now, libstorage is another way to abstract interactions and capabilities for different storage types and have a unified API for accessing them.
Building a repo engine on top of libstorage is completely possible. But as you can see this creates a redundant layer of abstractions in the libstorage side.
As I see it if you just want to have you storage supported by ovirt creating a repo engine is simpler as you can use high level concepts and I do plan to have engines run as their own processes so you could use whatever licence, language and storage server API you choose.
Also libstorage will have to keep it's abstraction at a much lower level. This means exposing target specific flags and abilities. eWhile this is good in concept it will mean that the repo engine wrapping libstorage will have to juggle all those flags and calls instead of having different distinct class for each storage type with it's own specific hacks in place.
Just as a current example, we currently use the same "engine" for nfs3 and nfs4. This means that when we are running on nfs4 we are still doing all the hacks that are meant to circumvent issues with v3 being stateless. This is no longer relevant as v4 is stateful.
And what about SAMBA? or gluster? You got to have special hacks for boths
What I'm saying is that if in the relatively simple world of NAS where we have a proven abstraction (file access commands, POSIX). We can't find a way to create a 1 class to rule them all. How can we expect to have a sane solution for the crazy world of SAN.
I'm not saying we shouldn't create an engine for libstorage, just that we should treat it like we treat sharefs. As a simple generic non bullet proof\optimized implementation.
Let the flaming commence!
12 years, 4 months
about migration
by wangxiaofan
Hi,
To do migration, why vdsm/libvirt requires DNS server or hostnames
in hosts file? Is there any way to do migration directly with IP
address?
12 years, 4 months