[one-users] Set root disk size at runtime

Jaime Melis jmelis at opennebula.org
Tue Sep 25 02:32:04 PDT 2012


Hi Ricardo,

in case you did want to resize the main OS disk, you need to do a tiny bit
of coding. Let me walk you through it.

You will need to edit the "clone" script located in
"/var/lib/one/remotes/tm/<your_tm>/clone" where <your_tm> will be either
"shared","ssh", or whatever TM_MAD you're using in your datastores.

In that file you will need to grab the SIZE attribute of the disk. You can
grab that bit of code from tm/lvm/clone [1]. Be careful because
DEFAULT_SIZE won't be declared, so you will need to hardcode it.

After this step you will need to resize the image to the specified SIZE:

"tm/ssh/clone" [2]:
Right after line 66 add something like:
ssh_exec_and_log "$DST_HOST" "qemu-img resize $DST_PATH $SIZE" "Error:
could not resize"

"tm/shared/clone" [3]:
Substitute line 67 with:
    "cd $DST_DIR; cp -r $SRC_PATH $DST_PATH; qemu-img resize $DST_PATH
$SIZE" \

Once you have implemented this, you will be able to do in your VM/templates:
DISK = [ IMAGE_ID = <ID>, SIZE = <NEW_SIZE> ]

Keep the following things in mind though:
 - There might be a errors, this has not been tested, written off the top
of my head
- Quotas and accounting won't be aware of the dynamic resizing
- You will need to use images understood by qemu-img. Of course you can
substitute that command for whatever you like.

[1] https://github.com/OpenNebula/one/blob/master/src/tm_mad/lvm/clone#52 lines
52-62
[2] https://github.com/OpenNebula/one/blob/one-3.6/src/tm_mad/ssh/clone#L66
[3]
https://github.com/OpenNebula/one/blob/one-3.6/src/tm_mad/shared/clone#L67

regards,
Jaime

On Mon, Sep 24, 2012 at 1:01 PM, Ricardo Duarte <rjtd21 at hotmail.com> wrote:

> Hi there,
>
> I had a look at cloud-init, and also other cloud softwares, and this is
> what they do:
>
> - The images themselves are very small in size
> - The size of the root disk is selected when launching a instance, and as
> so, it can be part of the service offering (ex.: small 8GB, medium 10GB,
> etc).
> - The virtual disk is grown to the size selected when launching the
> instance. Partition size inside is kept.
> - Cloud-init, inside the guest, resizes the partition on first boot, by
> using resize2fs. This is just a small command, so it could be done without
> cloud-init quite easily
>
> Is this currently possible to do with existing OpenNebula functionality?
>
> Thanks,
> Ricardo
>
> _______________________________________________
> Users mailing list
> Users at lists.opennebula.org
> http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
>
>


-- 
Jaime Melis
Project Engineer
OpenNebula - The Open Source Toolkit for Cloud Computing
www.OpenNebula.org | jmelis at opennebula.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opennebula.org/pipermail/users-opennebula.org/attachments/20120925/848f2a10/attachment-0002.htm>


More information about the Users mailing list