[one-users] OpenNebula 3.4 with Clustered LVM
Jaime Melis
jmelis at opennebula.org
Fri May 11 08:14:07 PDT 2012
Hi Yves,
in the image template (im.conf) do PATH = /var/lib/one/Master.raw,
instead of SOURCE = /var/lib/one/Master.raw
The rest looks fine.
cheers,
Jaime
On Fri, May 11, 2012 at 5:10 PM, Vogl, Yves <vogl at adesso-mobile.de> wrote:
> Hi Jamie,
>
> thanks for you patience. I'm still failing :-( I've attached all steps I've done and simplified my setup for this example.
>
> Two servers:
>
> one01 => Running OpenNebula 3.4
> kvm02 => Running Linux KVM
>
> Both systems have are member of an LVM cluster.
>
> Now my steps:
>
> 1. Create a datastore on one01
>
> sudo -uoneadmin onedatastore create ds.conf
>
> NAME = kvm02
> DS_MAD = lvm
> TM_MAD = lvm
> VG_NAME = vg1
> HOST = kvm02
>
>
> $ onedatastore list
> ID NAME CLUSTER IMAGES TYPE TM
> 0 system - 0 fs ssh
> 1 default - 0 fs ssh
> 123 kvm02 - 0 lvm lvm
>
>
> DATASTORE 123 INFORMATION
> ID : 123
> NAME : kvm02
> USER : oneadmin
> GROUP : oneadmin
> CLUSTER : -
> DS_MAD : lvm
> TM_MAD : lvm
> BASE PATH : /var/lib/one/datastores/123
>
> PERMISSIONS
> OWNER : um-
> GROUP : u--
> OTHER : ---
>
> DATASTORE TEMPLATE
> DS_MAD="lvm"
> HOST="kvm02.example.org"
> TM_MAD="lvm"
> VG_NAME="vg1"
>
> IMAGES
> 23
>
>
>
> 2. Create an image template
>
> sudo -uoneadmin oneimage create im.conf -d kvm02
>
>
> im.conf
>
> NAME = "kvm02
> SOURCE = /var/lib/one/Master.raw
> TYPE = OS
> BUS = virtio
> DRIVER = raw
> DESCRIPTION = "CentOS 6.2 64-Bit LVM Snapshot Master"
>
>
> Master.raw exists.
>
>
> $ oneimage list
> ID USER GROUP NAME DATASTORE SIZE TYPE PER STAT RVMS
> 23 oneadmin oneadmin kvm02 kvm02 0M OS No rdy 0
>
>
> $ oneimage show kvm02
> IMAGE 23 INFORMATION
> ID : 23
> NAME : kvm02
> USER : oneadmin
> GROUP : oneadmin
> DATASTORE : kvm02
> TYPE : OS
> REGISTER TIME : 05/11 16:44:10
> PERSISTENT : No
> SOURCE : /var/lib/one/Master.raw
> SIZE : 0
> STATE : rdy
> RUNNING_VMS : 0
>
> PERMISSIONS
> OWNER : um-
> GROUP : ---
> OTHER : ---
>
> IMAGE TEMPLATE
> BUS="virtio"
> DESCRIPTION="CentOS 6.2 64-Bit LVM Snapshot Master"
> DEV_PREFIX="hd"
> DRIVER="raw"
>
>
>
> At this point, nothing has happened so far.
> OpenNebula did neither create a volume nor it dumped the image. Eventhough the image is show as ready.
>
> Is that the correct behaviour?
>
> By the way... the same thing is true for virtual networks. When I created a virtual network in OpenNebula I also had to create the corresponding virtual network on the KVM host manually.
>
> Maybe there's something wrong at this point?
>
> Anyway... I tried to go on and created an VM image like this:
>
> sudo -uoneadmin onetemplate create vm.conf
>
> vm.conf
>
> CPU="100"
> DISK=[
> BUS="virtio",
> DRIVER="raw",
> IMAGE="kvm02",
> IMAGE_UNAME="oneadmin" ]
> FEATURES=[
> PAE="no" ]
> MEMORY="1024"
> NAME="kvm02"
> NIC=[
> MODEL="virtio",
> NETWORK="kvm02",
> NETWORK_UNAME="oneadmin" ]
> OS=[
> ARCH="x86_64",
> BOOT="hd" ]
> RAW=[
> TYPE="kvm" ]
> VCPU="1"
>
>
> $ onetemplate list
> ID USER GROUP NAME REGTIME
> 27 oneadmin oneadmin kvm02 05/11 16:59:15
>
> $ onetemplate show kvm02
> TEMPLATE 27 INFORMATION
> ID : 27
> NAME : kvm02
> USER : oneadmin
> GROUP : oneadmin
> REGISTER TIME : 05/11 16:59:15
>
> PERMISSIONS
> OWNER : um-
> GROUP : ---
> OTHER : ---
>
> TEMPLATE CONTENTS
> CPU="100"
> DISK=[
> BUS="virtio",
> DRIVER="raw",
> IMAGE="kvm02",
> IMAGE_UNAME="oneadmin" ]
> FEATURES=[
> PAE="no" ]
> MEMORY="1024"
> NAME="kvm02"
> NIC=[
> MODEL="virtio",
> NETWORK="kvm02",
> NETWORK_UNAME="oneadmin" ]
> OS=[
> ARCH="x86_64",
> BOOT="hd" ]
> RAW=[
> TYPE="kvm" ]
> TEMPLATE_ID="27"
> VCPU="1"
>
>
> Next I try to instantiate a vm with this:
>
> $ onetemplate instantiate kvm02
> VM ID: 440
>
> $ onevm list
> ID USER GROUP NAME STAT CPU MEM HOSTNAME TIME
> 440 oneadmin oneadmin one-440 pend 0 0K 0d 00:00
>
>
> $ onevm show 440
> VIRTUAL MACHINE 440 INFORMATION
> ID : 440
> NAME : one-440
> USER : oneadmin
> GROUP : oneadmin
> STATE : PENDING
> LCM_STATE : LCM_INIT
> START TIME : 05/11 17:03:11
> END TIME : -
> DEPLOY ID : -
>
> VIRTUAL MACHINE MONITORING
> USED CPU : 0
> NET_RX : 0
> USED MEMORY : 0
> NET_TX : 0
>
> PERMISSIONS
> OWNER : um-
> GROUP : ---
> OTHER : ---
>
> VIRTUAL MACHINE TEMPLATE
> CPU="100"
> DISK=[
> BUS="virtio",
> CLONE="YES",
> DATASTORE="kvm02",
> DATASTORE_ID="123",
> DISK_ID="0",
> DRIVER="raw",
> IMAGE="kvm02",
> IMAGE_ID="23",
> IMAGE_UNAME="oneadmin",
> READONLY="NO",
> SAVE="NO",
> SOURCE="/var/lib/one/Master.raw",
> TARGET="hda",
> TM_MAD="lvm",
> TYPE="DISK" ]
> FEATURES=[
> PAE="no" ]
> MEMORY="1024"
> NAME="one-440"
> NIC=[
> BRIDGE="br0",
> IP="176.1.1.1",
> MAC="02:00:b0:02:a3:01",
> MODEL="virtio",
> NETWORK="kvm02",
> NETWORK_ID="10",
> NETWORK_UNAME="oneadmin",
> VLAN="NO" ]
> OS=[
> ARCH="x86_64",
> BOOT="hd" ]
> RAW=[
> TYPE="kvm" ]
> TEMPLATE_ID="27"
> VCPU="1"
> VMID="440"
>
>
>
>
> Now deploy:
>
> $ onevm deploy 440 kvm02.example.org
>
>
> It fails instantly:
>
> MESSAGE="Error executing image transfer script: Error cloning /dev//var/lib/one/Master/raw to /dev//var/lib/one/Master/raw-440-0"
>
>
> That's the log file:
>
> Fri May 11 17:04:41 2012 [DiM][I]: New VM state is ACTIVE.
> Fri May 11 17:04:42 2012 [LCM][I]: New VM state is PROLOG.
> Fri May 11 17:04:42 2012 [VM][I]: Virtual Machine has no context
> Fri May 11 17:04:42 2012 [TM][I]: Command execution fail: /var/lib/one/remotes/tm/lvm/clone one01:/var/lib/one/Master.raw kvm02.example.org:/var/lib/one//datastores/0/440/disk.0
> Fri May 11 17:04:42 2012 [TM][I]: /var/lib/one/remotes/tm/lvm/../../datastore/xpath.rb: unrecognized option `--stdin'
> Fri May 11 17:04:42 2012 [TM][E]: clone: Command " set -e
> Fri May 11 17:04:42 2012 [TM][I]: mkdir -p /var/lib/one/datastores/0/440
> Fri May 11 17:04:42 2012 [TM][I]: sudo lvcreate -n raw-440-0 -L40960 -s /dev//var/lib/one/Master/raw
> Fri May 11 17:04:42 2012 [TM][I]: ln -s "/dev//var/lib/one/Master/raw-440-0" "/var/lib/one/datastores/0/440/disk.0"" failed: "/dev//var/lib/one/Master/raw": Invalid path for Logical Volume
> Fri May 11 17:04:42 2012 [TM][I]: The origin name should include the volume group.
> Fri May 11 17:04:42 2012 [TM][I]: Run `lvcreate --help' for more information.
> Fri May 11 17:04:42 2012 [TM][E]: Error cloning /dev//var/lib/one/Master/raw to /dev//var/lib/one/Master/raw-440-0
> Fri May 11 17:04:42 2012 [TM][I]: ExitCode: 3
> Fri May 11 17:04:42 2012 [TM][E]: Error executing image transfer script: Error cloning /dev//var/lib/one/Master/raw to /dev//var/lib/one/Master/raw-440-0
> Fri May 11 17:04:42 2012 [DiM][I]: New VM state is FAILED
> [oneadmin at one01 ~]$
>
>
>
> First thing that's wrong:
>
> # sudo lvcreate -n raw-440-0 -L40960 -s /dev//var/lib/one/Master/raw
>
>
> It should be:
>
> lvcreate -n raw-440-0 -L40960 -s /dev/vg1/master
>
>
> The next issue:
>
> # ln -s "/dev//var/lib/one/Master/raw-440-0" "/var/lib/one/datastores/0/440/disk.0""
>
>
> It should be:
>
> ln -s /dev/vg1/raw-440-0 /var/lib/one/datastores/0/440/disk.0
>
>
>
>
>
> Cheers, Yves
>
>
>
>
> On 11.05.2012, at 14:19, Jaime Melis wrote:
>
>> Hi Yves,
>>
>> no sorry, I didn't explain myself correctly. The LVM workflow is as follows:
>>
>> You have an already existing file with an image (in your case Master.qcow2, although for these drivers it needs to be in RAW format). When you do 'oneimage create' with PATH (instead of SOURCE) pointing to the file, the drivers will do automatically what you did manually: create a new LV of the appropriate size, and dump it (using 'dd') to the new LV.
>>
>> Once it's created, you can instantiante vms with that image. If the image is persistent, the VM will access the LV directly. If it's not persistent, the drivers will create a new LV, a snapshot of the original image, and the VM will access it. Thus creating a copy almost instantaneously. If you execute saveas on that image, it will be saved to a new image so that you don't lose your changes.
>>
>> I hope I explained it better this time.
>>
>> Cheers,
>> Jaime
>>
>> On Fri, May 11, 2012 at 1:37 PM, Vogl, Yves <vogl at adesso-mobile.de> wrote:
>> Hi Jamie,
>>
>> thanks for pointing out a solution to the sudo error. This was clear to me because of the well documented instructions - I think there's no need to improve it. I just forgot to do this step.
>>
>> On 11.05.2012, at 13:31, Jaime Melis wrote:
>>
>>> About the way you registered the image, it's not usually the way it's meant to be done. You should use PATH=/path/to/Master.raw
>>> instead of using directly the SOURCE.
>>
>> So if I do not want to deal with images at all I've to create a "pure snapshot" driver by myself?
>>
>> The idea is to populate a master image as clustered LVM volume and to have faster deployment by just snapshotting the logical volume.
>> If I have to use an image after creating a logical volume - there's no need to snapshot anything before.
>>
>> Yves
>>
>>
>>
>>
>>
>>
>> --
>> Jaime Melis
>> Project Engineer
>> OpenNebula - The Open Source Toolkit for Cloud Computing
>> www.OpenNebula.org | jmelis at opennebula.org
>
--
Jaime Melis
Project Engineer
OpenNebula - The Open Source Toolkit for Cloud Computing
www.OpenNebula.org | jmelis at opennebula.org
More information about the Users
mailing list