Statistics
| Branch: | Tag: | Revision:

root / doc / design-ovf-support.rst @ 3fc210de

History | View | Annotate | Download (9.8 kB)

1 b3e3813e Agata Murawska
==============================================================
2 b3e3813e Agata Murawska
Ganeti Instance Import/Export using Open Virtualization Format
3 b3e3813e Agata Murawska
==============================================================
4 b3e3813e Agata Murawska
5 b3e3813e Agata Murawska
Background
6 b3e3813e Agata Murawska
==========
7 b3e3813e Agata Murawska
8 b3e3813e Agata Murawska
Open Virtualization Format is an open standard for packaging
9 b3e3813e Agata Murawska
information regarding virtual machines. It is used, among other, by
10 b3e3813e Agata Murawska
VMWare, VirtualBox and XenServer. OVF allows users to migrate between
11 b3e3813e Agata Murawska
virtualization software without the need of reconfiguring hardware,
12 b3e3813e Agata Murawska
network or operating system.
13 b3e3813e Agata Murawska
14 b3e3813e Agata Murawska
Currently, exporting instance in Ganeti results with a configuration
15 b3e3813e Agata Murawska
file that is readable only for Ganeti. It disallows the users to
16 b3e3813e Agata Murawska
change the platform they use without loosing all the machine's
17 b3e3813e Agata Murawska
configuration.  Import function in Ganeti is also currently limited to
18 b3e3813e Agata Murawska
the previously prepared instances.
19 b3e3813e Agata Murawska
20 b3e3813e Agata Murawska
Implementation of OVF support allows users to migrate to Ganeti from
21 b3e3813e Agata Murawska
other platforms, thus potentially increasing the usage. It also
22 b3e3813e Agata Murawska
enables virtual machine end-users to create their own machines
23 b3e3813e Agata Murawska
(e.g. in VirtualBox or SUSE Studio) and then add them to Ganeti
24 b3e3813e Agata Murawska
cluster, thus providing better personalization.
25 b3e3813e Agata Murawska
26 b3e3813e Agata Murawska
Overview
27 b3e3813e Agata Murawska
========
28 b3e3813e Agata Murawska
29 b3e3813e Agata Murawska
Open Virtualization Format description
30 b3e3813e Agata Murawska
--------------------------------------
31 b3e3813e Agata Murawska
32 b3e3813e Agata Murawska
According to the DMTF document introducing the standard: "The Open
33 b3e3813e Agata Murawska
Virtualization Format (OVF) Specification describes an open, secure,
34 b3e3813e Agata Murawska
portable, efficient and extensible format for the packaging and
35 b3e3813e Agata Murawska
distribution of software to be run in virtual machines."  OVF supports
36 b3e3813e Agata Murawska
both single and multiple- configurations of VMs in one package, is
37 b3e3813e Agata Murawska
host- and virtualization platform-independent and optimized for
38 b3e3813e Agata Murawska
distribution (e.g. by allowing usage of public key infrastructure and
39 b3e3813e Agata Murawska
providing tools for management of basic software licensing).
40 b3e3813e Agata Murawska
41 b3e3813e Agata Murawska
There are no limitations regarding hard drive images used, as long as
42 b3e3813e Agata Murawska
the description is provided. Any hardware described in a proper
43 b3e3813e Agata Murawska
i.e. CIM - Common Information Model) format is accepted, although
44 b3e3813e Agata Murawska
there is no guarantee that every virtualization software will support
45 b3e3813e Agata Murawska
all types of hardware.
46 b3e3813e Agata Murawska
47 75932bcf Agata Murawska
OVF package should contain one file with ``.ovf`` extension, which is an
48 b3e3813e Agata Murawska
XML file specifying the following (per virtual machine):
49 b3e3813e Agata Murawska
50 b3e3813e Agata Murawska
- virtual disks
51 b3e3813e Agata Murawska
- network description
52 b3e3813e Agata Murawska
- list of virtual hardware
53 b3e3813e Agata Murawska
- operating system, if any
54 b3e3813e Agata Murawska
55 75932bcf Agata Murawska
Each of the elements in ``.ovf`` file may, if desired, contain a
56 b3e3813e Agata Murawska
human-readable description to every piece of information given.
57 b3e3813e Agata Murawska
58 b3e3813e Agata Murawska
Additionally, the package may have some disk image files and other
59 b3e3813e Agata Murawska
additional resources (e.g. ISO images).
60 b3e3813e Agata Murawska
61 b3e3813e Agata Murawska
Supported disk formats
62 b3e3813e Agata Murawska
----------------------
63 b3e3813e Agata Murawska
64 b3e3813e Agata Murawska
Although OVF is claimed to support 'any disk format', what we are
65 b3e3813e Agata Murawska
interested in is which of the formats are supported by VM managers
66 b3e3813e Agata Murawska
that currently use OVF.
67 b3e3813e Agata Murawska
68 b3e3813e Agata Murawska
- VMWare: ``.vmdk`` (which comes in at least 3 different flavours:
69 b3e3813e Agata Murawska
  ``sparse``, ``compressed`` and ``streamOptimized``)
70 b3e3813e Agata Murawska
- VirtualBox: ``.vdi`` (VirtualBox's format), ``.vmdk``, ``.vhd``
71 b3e3813e Agata Murawska
  (Microsoft and XenServer); export disk format is always ``.vmdk``
72 b3e3813e Agata Murawska
- XenServer: ``.vmdk``, ``.vhd``; export disk format is always
73 b3e3813e Agata Murawska
  ``.vhd``
74 b3e3813e Agata Murawska
- Red Hat Enterprise Virtualization: ``.raw`` (raw disk format),
75 b3e3813e Agata Murawska
  ``.cow`` (qemu's ``QCOW2``)
76 b3e3813e Agata Murawska
- other: AbiCloud, OpenNode Cloud, SUSE Studio, Morfeo Claudia,
77 b3e3813e Agata Murawska
  OpenStack
78 b3e3813e Agata Murawska
79 b3e3813e Agata Murawska
In our implementation of the OVF we plan to allow a choice between
80 b3e3813e Agata Murawska
raw, cow and vmdk disk formats for both import and export. The
81 b3e3813e Agata Murawska
justification is the following:
82 b3e3813e Agata Murawska
83 b3e3813e Agata Murawska
- Raw format is supported as it is the main format of disk images used
84 b3e3813e Agata Murawska
  in Ganeti, thus it is effortless to provide support for this format
85 b3e3813e Agata Murawska
- Cow is used in Qemu, [TODO: ..why do we support it, again? That is,
86 b3e3813e Agata Murawska
  if we do?]
87 b3e3813e Agata Murawska
- Vmdk is most commonly supported in virtualization software, it also
88 b3e3813e Agata Murawska
  has the advantage of producing relatively small disk images, which
89 b3e3813e Agata Murawska
  is extremely important advantage when moving instances.
90 b3e3813e Agata Murawska
91 b3e3813e Agata Murawska
The conversion between RAW and the other formats will be done using
92 b3e3813e Agata Murawska
qemu-img, which transforms, among other, raw disk images to monolithic
93 b3e3813e Agata Murawska
sparse vmdk images.
94 b3e3813e Agata Murawska
95 75932bcf Agata Murawska
Import and export - the closer look
96 75932bcf Agata Murawska
===================================
97 75932bcf Agata Murawska
98 75932bcf Agata Murawska
This section contains an overview of how different parts of
99 75932bcf Agata Murawska
Ganeti's export info are included in ``.ovf`` configuration file.
100 75932bcf Agata Murawska
It also explains how import is designed to work with incomplete
101 75932bcf Agata Murawska
information.
102 75932bcf Agata Murawska
103 75932bcf Agata Murawska
Ganeti's backup format vs OVF
104 75932bcf Agata Murawska
-----------------------------
105 75932bcf Agata Murawska
.. highlight:: xml
106 75932bcf Agata Murawska
107 75932bcf Agata Murawska
The basic structure of Ganeti ``.ovf`` file is the following::
108 75932bcf Agata Murawska
109 75932bcf Agata Murawska
    <Envelope>
110 75932bcf Agata Murawska
        <References></References>
111 75932bcf Agata Murawska
        <DiskSection></DiskSection>
112 75932bcf Agata Murawska
        <NetworkSection></NetworkSection>
113 75932bcf Agata Murawska
        <VirtualSystem>
114 75932bcf Agata Murawska
            <Name></Name>
115 75932bcf Agata Murawska
            <OperatingSystemSection></OperatingSystemSection>
116 75932bcf Agata Murawska
            <VirtualHardwareSection><VirtualHardwareSection>
117 75932bcf Agata Murawska
        </VirtualSystem>
118 75932bcf Agata Murawska
        <gnt:GanetiSection>
119 75932bcf Agata Murawska
            <gnt:VersionId/>
120 75932bcf Agata Murawska
            <gnt:AutoBalance/>
121 75932bcf Agata Murawska
            <gnt:Tags></gnt:Tags>
122 75932bcf Agata Murawska
            <gnt:OSParameters></gnt:OSParameters>
123 75932bcf Agata Murawska
            <gnt:Hypervisor>
124 75932bcf Agata Murawska
                <gnt:HypervisorParameters>
125 75932bcf Agata Murawska
                </gnt:HypervisorParameters>
126 75932bcf Agata Murawska
            </gnt:Hypervisor>
127 75932bcf Agata Murawska
        </gnt:GanetiSection>
128 75932bcf Agata Murawska
    </Envelope>
129 75932bcf Agata Murawska
130 75932bcf Agata Murawska
.. note ::
131 75932bcf Agata Murawska
    Tags with ``gnt:`` prefix are Ganeti-specific and are not a part of
132 75932bcf Agata Murawska
    OVF standard.
133 75932bcf Agata Murawska
134 75932bcf Agata Murawska
.. highlight:: text
135 75932bcf Agata Murawska
136 75932bcf Agata Murawska
Whereas Ganeti's export info is of the following form, ``=>`` showing
137 75932bcf Agata Murawska
where will the data be in OVF format::
138 75932bcf Agata Murawska
139 75932bcf Agata Murawska
  [instance]
140 75932bcf Agata Murawska
      disk0_dump = filename     => References
141 75932bcf Agata Murawska
      disk0_ivname = name       => ignored
142 75932bcf Agata Murawska
      disk0_size = size_in_mb   => DiskSection
143 75932bcf Agata Murawska
      disk_count = number       => ignored
144 75932bcf Agata Murawska
      disk_template = disk_type => References
145 75932bcf Agata Murawska
      hypervisor = hyp-name     => gnt:HypervisorSection
146 75932bcf Agata Murawska
      name = inst-name          => Name in VirtualSystem
147 75932bcf Agata Murawska
      nic0_ip = ip              => Item in VirtualHardwareSection
148 75932bcf Agata Murawska
      nic0_link = link          => Item in VirtualHardwareSection
149 75932bcf Agata Murawska
      nic0_mac = mac            => Item in VirtualHardwareSection
150 75932bcf Agata Murawska
      nic0_mode = mode          => Network in NetworkSection
151 75932bcf Agata Murawska
      nic_count = number        => ignored
152 75932bcf Agata Murawska
      tags                      => gnt:Tags
153 75932bcf Agata Murawska
154 75932bcf Agata Murawska
  [backend]
155 75932bcf Agata Murawska
      auto_balanced             => gnt:AutoBalance
156 75932bcf Agata Murawska
      memory = mem_in_mb        => Item in VirtualHardwareSection
157 75932bcf Agata Murawska
      vcpus = number            => Item in VirtualHardwareSection
158 75932bcf Agata Murawska
159 75932bcf Agata Murawska
  [export]
160 75932bcf Agata Murawska
      compression               => DiskSection
161 75932bcf Agata Murawska
      os                        => OperatingSystemSection
162 75932bcf Agata Murawska
      source                    => ignored
163 75932bcf Agata Murawska
      timestamp                 => ignored
164 75932bcf Agata Murawska
      version                   => gnt:VersionId
165 75932bcf Agata Murawska
166 75932bcf Agata Murawska
  [os]                          => gnt:OSParameters
167 75932bcf Agata Murawska
168 75932bcf Agata Murawska
  [hypervisor]                  => gnt:HypervisorParameters
169 75932bcf Agata Murawska
170 75932bcf Agata Murawska
In case of multiple networks/disks used by an instance, they will
171 75932bcf Agata Murawska
all be saved in appropriate sections as specified above for the first
172 75932bcf Agata Murawska
network/disk.
173 75932bcf Agata Murawska
174 75932bcf Agata Murawska
Import from other virtualization software
175 75932bcf Agata Murawska
-----------------------------------------
176 75932bcf Agata Murawska
In case of importing to Ganeti OVF package generated in other software,
177 75932bcf Agata Murawska
e.g. VirtualBox, some fields required for Ganeti to properly handle
178 75932bcf Agata Murawska
import may be missing. Most often it will happen that such OVF package
179 75932bcf Agata Murawska
will lack the ``gnt:GanetiSection``.
180 75932bcf Agata Murawska
181 75932bcf Agata Murawska
If this happens, the tool will simply ask for all the necessary
182 75932bcf Agata Murawska
information or otherwise you can specify all the missing parameters in
183 75932bcf Agata Murawska
the command line. For the latter, please refer to [TODO: reference to
184 75932bcf Agata Murawska
command line options]
185 75932bcf Agata Murawska
186 75932bcf Agata Murawska
Export to other virtualization software
187 75932bcf Agata Murawska
---------------------------------------
188 75932bcf Agata Murawska
When exporting to other virtualization software, you may notice that
189 75932bcf Agata Murawska
there is a section ``gnt:GanetiSection``, containing Ganeti-specific
190 75932bcf Agata Murawska
information. This may on **rare** cases cause trouble in importing your
191 75932bcf Agata Murawska
instance. If that is the case please do one of the two:
192 75932bcf Agata Murawska
193 75932bcf Agata Murawska
1. Export from Ganeti to OVF with ``--external`` option - this will
194 75932bcf Agata Murawska
cause to skip the non-standard information.
195 75932bcf Agata Murawska
196 75932bcf Agata Murawska
2. Manually remove the gnt:GanetiSection from the ``.ovf`` file. You
197 75932bcf Agata Murawska
will also have to recompute sha1 sum (``sha1sum`` command) and update
198 75932bcf Agata Murawska
your ``.mf`` file with new value.
199 75932bcf Agata Murawska
200 75932bcf Agata Murawska
.. note::
201 75932bcf Agata Murawska
    Manual change option is only recommended when you have exported your
202 75932bcf Agata Murawska
    instance with ``-format`` option other that ``raw`` or selected
203 75932bcf Agata Murawska
    ``--compress``. It saves you the time of converting or compressing
204 75932bcf Agata Murawska
    the disk image.
205 b3e3813e Agata Murawska
206 b3e3813e Agata Murawska
Planned limitations
207 b3e3813e Agata Murawska
===================
208 b3e3813e Agata Murawska
209 b3e3813e Agata Murawska
The limitations regarding import of the OVF instances generated
210 b3e3813e Agata Murawska
outside Ganeti will be (in general) the same, as limitations for
211 b3e3813e Agata Murawska
Ganeti itself.  The desired behavior in case of encountering
212 b3e3813e Agata Murawska
unsupported element will be to ignore this element's tag and inform
213 b3e3813e Agata Murawska
the user on console output, if possible - without interruption of the
214 b3e3813e Agata Murawska
import process.
215 b3e3813e Agata Murawska
216 b3e3813e Agata Murawska
Package
217 b3e3813e Agata Murawska
-------
218 b3e3813e Agata Murawska
219 b3e3813e Agata Murawska
There are no limitations regarding support for multiple files in
220 75932bcf Agata Murawska
package or packing the OVF package into one OVA (Open Virtual
221 75932bcf Agata Murawska
Appliance) file. As for certificates and licenses in the package,
222 b3e3813e Agata Murawska
their support will be under discussion after completion of the basic
223 b3e3813e Agata Murawska
features implementation.
224 b3e3813e Agata Murawska
225 b3e3813e Agata Murawska
Multiple Virtual Systems
226 b3e3813e Agata Murawska
------------------------
227 b3e3813e Agata Murawska
228 b3e3813e Agata Murawska
At first only singular instances (i.e. VirtualSystem, not
229 b3e3813e Agata Murawska
VirtualSystemCollection) will be supported. In the future multi-tiered
230 b3e3813e Agata Murawska
appliances containing whole nodes (or even clusters) are considered an
231 b3e3813e Agata Murawska
option.
232 b3e3813e Agata Murawska
233 b3e3813e Agata Murawska
Disks
234 b3e3813e Agata Murawska
-----
235 b3e3813e Agata Murawska
236 b3e3813e Agata Murawska
As mentioned, Ganeti will allow exporting only ``raw``, ``cow`` and
237 b3e3813e Agata Murawska
``vmdk`` formats.  As for import, we will support all that
238 b3e3813e Agata Murawska
``qemu-img`` can convert to raw format. At this point this means
239 b3e3813e Agata Murawska
``raw``, ``cow``, ``qcow``, ``qcow2``, ``vmdk`` and ``cloop``.  We do
240 b3e3813e Agata Murawska
not plan for now to support ``vdi`` or ``vhd``.
241 b3e3813e Agata Murawska
242 75932bcf Agata Murawska
We plan to support compression both for import and export - in tar.gz
243 75932bcf Agata Murawska
format. There is also a possibility to provide virtual disk in chunks
244 75932bcf Agata Murawska
of equal size.
245 b3e3813e Agata Murawska
246 b3e3813e Agata Murawska
When no ``ovf:format`` tag is provided during import, we assume that
247 b3e3813e Agata Murawska
the disk is to be created on import and proceed accordingly.
248 b3e3813e Agata Murawska
249 b3e3813e Agata Murawska
Network
250 b3e3813e Agata Murawska
-------
251 b3e3813e Agata Murawska
252 b3e3813e Agata Murawska
There are no known limitations regarding network support.
253 b3e3813e Agata Murawska
254 b3e3813e Agata Murawska
Hardware
255 b3e3813e Agata Murawska
--------
256 b3e3813e Agata Murawska
257 b3e3813e Agata Murawska
TODO
258 b3e3813e Agata Murawska
259 b3e3813e Agata Murawska
Operating Systems
260 b3e3813e Agata Murawska
-----------------
261 b3e3813e Agata Murawska
262 b3e3813e Agata Murawska
TODO
263 b3e3813e Agata Murawska
264 b3e3813e Agata Murawska
Other
265 b3e3813e Agata Murawska
-----
266 b3e3813e Agata Murawska
267 75932bcf Agata Murawska
268 b3e3813e Agata Murawska
Implementation details
269 b3e3813e Agata Murawska
======================
270 b3e3813e Agata Murawska
271 b3e3813e Agata Murawska
TODO
272 b3e3813e Agata Murawska
273 b3e3813e Agata Murawska
.. vim: set textwidth=72 :
274 b3e3813e Agata Murawska
.. Local Variables:
275 b3e3813e Agata Murawska
.. mode: rst
276 b3e3813e Agata Murawska
.. fill-column: 72
277 b3e3813e Agata Murawska
.. End: