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: |