<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.5pt;
        font-family:"Calibri","sans-serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:black;}
span.EmailStyle23
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:black;}
span.EmailStyle24
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:black;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:31730263;
        mso-list-type:hybrid;
        mso-list-template-ids:-148206944 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1
        {mso-list-id:43918237;
        mso-list-type:hybrid;
        mso-list-template-ids:-1964095278 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:1.0in;
        text-indent:-.25in;}
@list l1:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2
        {mso-list-id:481852466;
        mso-list-type:hybrid;
        mso-list-template-ids:-787331006 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:38.25pt;
        text-indent:-.25in;
        font-family:Symbol;}
@list l2:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3
        {mso-list-id:500511687;
        mso-list-type:hybrid;
        mso-list-template-ids:712549218 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l3:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4
        {mso-list-id:1028095642;
        mso-list-type:hybrid;
        mso-list-template-ids:-1555138036 67698689 -1562708602 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l4:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l4:level2
        {mso-level-number-format:bullet;
        mso-level-text:\00AD;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l4:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>A discussion in order to set a common understanding of supported image formats in OpenStack and how the project can approach the issues surrounding various hypervisors, cross-cloud interoperability, and potentially setting some necessary development work items. Once the community has reached consensus the Project Oversight Committee should consider and set a clear project set of guidelines.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Image Formats and workload portability in OpenStack and public and/or private cloud deployments.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The key point of the discussion: Virtual Image Formats matter. As the longer term vision for OpenStack Compute and the cloud computing industry is formulated it is becoming clear that over the next few years the issues of portable workloads, federated cloud deployments, and seamless operations across multi-hypervisor systems (whether they are inside a single DC or federated across two or more deployments) will be a key element of success. OpenStack Compute will form the technological basis for achieving this.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>However, stating that Image Formats matter does not imply that there will be a “winner” in the marketplace or that a singular format is pushed via the OpenStack project. In order to achieve the goals stated above surrounding workload portability the key element will be not the actual virtual disk formats; but rather a standard VM interchange standard and the ability to easily re-purpose the VM image to the target environment (whether it be a public cloud or a private instance).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Today we are seeing most, if not all, of the popular virtualization systems branching to support alternate VM image formats beyond what they consider “native”, either through conversion tools or the ability to natively mount and run the alternative formats. This demonstrates that the market understands the importance of being able to be somewhat image format agnostic and that there is no value in trying to lock-in customers through proprietary formats.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The Virtual Disk Format playing field today looks like:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoListParagraphCxSpFirst style='margin-left:38.25pt;text-indent:-.25in;line-height:115%;mso-list:l2 level1 lfo7'><![if !supportLists]><span style='font-size:12.0pt;line-height:115%;font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>         </span></span></span><![endif]><span style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>VHD – Citrix XenServer and Microsoft Hyper-V<o:p></o:p></span></p><p class=MsoListParagraphCxSpMiddle style='margin-left:38.25pt;text-indent:-.25in;line-height:115%;mso-list:l2 level1 lfo7'><![if !supportLists]><span style='font-size:12.0pt;line-height:115%;font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>         </span></span></span><![endif]><span style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>VMDK – VMWare ESX<o:p></o:p></span></p><p class=MsoListParagraphCxSpMiddle style='margin-left:38.25pt;text-indent:-.25in;line-height:115%;mso-list:l2 level1 lfo7'><![if !supportLists]><span style='font-size:12.0pt;line-height:115%;font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>         </span></span></span><![endif]><span style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>VDI – Oracle VirtualBox<o:p></o:p></span></p><p class=MsoListParagraphCxSpLast style='margin-left:38.25pt;text-indent:-.25in;line-height:115%;mso-list:l2 level1 lfo7'><![if !supportLists]><span style='font-size:12.0pt;line-height:115%;font-family:Symbol'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>         </span></span></span><![endif]><span style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>QCOW2 – KVM and QEMU<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>All the hypervisors also support Raw Disk Images. Additionally, deployments can combine a disk partitioning and file-system (usually via LVM) to get more direct control of Raw Images and to provide some additional features, such as Snapshot with Coalesce (as Rackspace does on the current Linux Cloud Servers product).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>These disk formats are not too complicated, and there are free and cheap tools that allow conversions between the various formats. As stated above, there is a movement within all of these projects to reduce the friction in moving VM images into their environment that were created by someone else.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Proposal for comment:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>OpenStack has, at its core, a mission to provide widespread ubiquity of Virtual/Cloud Computing and also has taken a hypervisor-agnostic approach. In order to foster this and to move the project to a world where workloads can be easily moved between installations that are running different underlying virtualization systems the following should occur:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoListParagraph style='text-indent:-.25in;line-height:115%;mso-list:l1 level1 lfo8'><![if !supportLists]><span style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>      </span></span></span><![endif]><span style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>A standardized VM Image exchange format should be described. The DMTF already has a specification that is useful here, OVF. OVF is a specification that provides for an exchange container that will include standardized mechanisms to describe meta-data and also to encapsulate one or more VM images or .ISO files. OVF does not dictate any particular VM Image format, and hence is ideal for our purposes.<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'>An OpenStack VM interchange specification should be drafted and reviewed by the OpenStack community.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoListParagraph style='text-indent:-.25in;line-height:115%;mso-list:l1 level1 lfo8'><![if !supportLists]><span style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>      </span></span></span><![endif]><span style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>OpenStack should *not* specify a “preferred” or “default” virtual disk format. Just as a core tenet is hypervisor agnosticism another key position will be VM Image agnosticism. The message is that each deployment should choose the best hypervisor and image format for their particular goals. This allows companies like Rackspace or others to choose the systems and formats that best support the features they want to take to the market.<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'>This also sidesteps the potentially divisive topic of support for VHD and the Microsoft Open Promise licensing. Since support will be optional for all formats if someone is adamant about not supporting VHD in their OpenStack deployment they are free to not include it. Others, including Rackspace, may choose to support VHD for the features it provides.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoListParagraph style='text-indent:-.25in;line-height:115%;mso-list:l1 level1 lfo8'><![if !supportLists]><span style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'><span style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>      </span></span></span><![endif]><span style='font-size:12.0pt;line-height:115%;font-family:"Times New Roman","serif"'>The OpenStack Image Repository project (“Glance”) should be extended to provide native image conversion capabilities. This will hide the differences in formats from the deployment and operational decisions and allow workloads to easily be imported and exported between both OpenStack installations, and also to/from native virtualization installations (such as VMware).<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'>A blueprint and initial vision specification should be drafted and submitted to the OpenStack Launchpad repository. This will trigger a discussion amongst the OpenStack community and the Glance committers specifically.<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p><p class=MsoNormal>Comments welcome.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John<o:p></o:p></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div></body></html>