<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 15 (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:"HP Simplified";
        panose-1:2 11 6 4 2 2 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:391077409;
        mso-list-type:hybrid;
        mso-list-template-ids:-1787104632 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></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="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">This time with a tag in case anyone is filtering…<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b>From:</b> Murray, Paul (HP Cloud) <br>
<b>Sent:</b> 12 February 2016 16:16<br>
<b>To:</b> openstack-dev@lists.openstack.org<br>
<b>Subject:</b> [openstack-dev] Update on live migration priority<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The objective for the live migration priority is to improve the stability of migrations based on operator experience. The high level approach is to do the following:<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo2"><![if !supportLists]><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">      
</span></span><![endif]>Improve CI<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo2"><![if !supportLists]><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">      
</span></span><![endif]>Improve documentation<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo2"><![if !supportLists]><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman"">      
</span></span><![endif]>Improve manageability of migrations<o:p></o:p></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo2"><![if !supportLists]><span style="mso-list:Ignore">4.<span style="font:7.0pt "Times New Roman"">      
</span></span><![endif]>Fix bugs<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">In this cycle we targeted a few immediately implementable features that would help, specifically giving operators commands to allow them to manage migrations (inspect progress, force completion, and cancel) and improve security (split-networks
 and remove ssh-based resize/migration; aka storage pools).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Most of these are on track to be completed in this cycle with the exception of storage pools work which is being deferred. Further details follow.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><u>Expand CI coverage</u> – <b>in progress</b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">There is a job in the experimental queue called: <i>gate-tempest-dsvm-multinode-live-migrationqueued</i>. This will become the job that performs live migration tests; any live migration tests in other jobs will be removed. At present the
 job has been configured to cover different storage configurations including cinder, NFS, ceph. Tests are now being added to the job. Patches are currently up for live migration of instances with swap and instances with ephemeral disks.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Please trigger the experimental queue if your patches touch migrations in some way so we can check the stability of the jobs. Once stable and with sufficient tests we will promote the job from the experimental queue so that it always runs.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">See: <a href="https://review.openstack.org/#/q/topic:lm_test">
https://review.openstack.org/#/q/topic:lm_test</a> <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><u>Improve API docs</u> - <b>done</b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Some changes were made to the API guide for moving servers, including better descriptions for the server actions migrate, live migrate, shelve, resize and evacuate (
<a href="http://developer.openstack.org/api-guide/compute/server_concepts.html#server-actions">
http://developer.openstack.org/api-guide/compute/server_concepts.html#server-actions</a> ) and a section that describes reasons for moving VMs with common use cases outlined (
<a href="http://developer.openstack.org/api-guide/compute/server_concepts.html#moving-servers">
http://developer.openstack.org/api-guide/compute/server_concepts.html#moving-servers</a> )<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><u>Block live migration with attached volumes</u> – <b>done</b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The selective block device migration API in libvirt 1.2.17 is used to allow block migration when volumes are attached. A follow on patch to allow readonly drives to be copied in block migration has not been completed. This patch is required
 to allow iso9600 format config drives to be migrated. Without it only vfat config drives can be migrated. There is still some thought going into that – see:
<a href="https://review.openstack.org/#/c/234659">https://review.openstack.org/#/c/234659</a>
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><u>Force complete</u> – <b>requires python-novaclient change</b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Force-complete forces a live migration to complete  by pausing the VM and restarting it when it has completed migration. This is intended as a brute force way to make a VM complete its migration when it is taking too long. In the future
 auto-converge and post-copy will be looked at. These became available in qemu 2.5.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Force complete is done in nova but still requires a change to python-novaclient to implement the CLI.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><u>Cancel</u> – <b>in progress</b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Cancel stops a live migration, leaving it on the source host with the migration status left as “cancelled”. This is in progress and follows the pattern of force-complete. Unfortunately this needs to be bundled up into one patch to avoid
 multiple API bumps.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Patches for review: <o:p></o:p></p>
<p class="MsoNormal"><a href="https://review.openstack.org/#/q/status:open+topic:bp/abort-live-migration">https://review.openstack.org/#/q/status:open+topic:bp/abort-live-migration</a>
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><u>Progress reporting</u> – <b>in progress </b>(no pun intended)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Progress reporting introduces migrations as a sub-resource of servers and adds progress data to the migration record. There was some debate at the mid cycle and on the mailing list about how to record this transient data. It is a waste
 to keep writing it to the database, but as it is generated at the compute manager but examined at the API it was felt that writing it to the database is necessary to fit the existing architecture. The conclusions was that writing to the database every 5 seconds
 would not cause a significant overhead. Alternatives could be persued later if necessary. For discussion see this ML thread:
<a href="http://lists.openstack.org/pipermail/openstack-dev/2016-February/085662.html">
http://lists.openstack.org/pipermail/openstack-dev/2016-February/085662.html</a> and the IRC meeting transcript here:
<a href="http://eavesdrop.openstack.org/meetings/nova_live_migration/2016/nova_live_migration.2016-02-09-14.01.log.html">
http://eavesdrop.openstack.org/meetings/nova_live_migration/2016/nova_live_migration.2016-02-09-14.01.log.html</a>
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Patches for review: <o:p></o:p></p>
<p class="MsoNormal"><a href="https://review.openstack.org/#/q/status:open+topic:bp/live-migration-progress-report">https://review.openstack.org/#/q/status:open+topic:bp/live-migration-progress-report</a>
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><u>Split networking</u> – <b>done</b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Split networking adds a configuration parameter to specify live_migration_inbound_addr as the ip address or host name to be used as the target for migration traffic. This allows migration traffic to be isolated on a separate network to
 other management traffic, providing an opportunity to islate service levels for the two networks and improve security by moving unencrypted migration traffic to an isolated network.<o:p></o:p></p>
<p class="MsoNormal">                                                                  
<o:p></o:p></p>
<p class="MsoNormal"><u>Resize/cold migrate using storage pools</u> – <b>deferred</b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The objective here was to change the libvirt implementation of migrate and resize to use libvirt storage pools instead of scp/rsync over ssh with passwordless keys. Storage pools are supported in all versions of libvrit supported by nova,
 so it was thought that by changing the implementation it would be possible to drop the ssh based code. However two flaws in this approach arose: the recently added ploop storage device does not work with storage pools in libvirt and the libvirt data copy implementation
 is very inefficient and so slower than scp or rsync.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The guys at Parallels kindly agreed to implement storage pools support for ploop in libvirt and this work is already making progress. Work was also started in libvirt to improve the copy performance. These features will be available in
 a future release, so we will need to maintain old ssh-based migration for libvirt as well as refactor and implement the storage pools based alternative.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Work has started on refactoring the libvirt driver code but the following blueprints will be deferred beyond mitaka:<o:p></o:p></p>
<p class="MsoNormal"><a href="http://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/use-libvirt-storage-pools.html">http://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/use-libvirt-storage-pools.html</a><o:p></o:p></p>
<p class="MsoNormal"><a href="http://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/migrate-libvirt-volumes.html">http://specs.openstack.org/openstack/nova-specs/specs/mitaka/approved/migrate-libvirt-volumes.html</a><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><u>Deprecate migration flags</u> - <b>done</b><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">There are a lot of migration flags used with libvirt that are either redundant or can be inferred from the deployed configuration. These are being deprecated and will be removed in the next cycle.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">See: <o:p></o:p></p>
<p class="MsoNormal"><a href="https://review.openstack.org/#/q/project:openstack/nova+branch:master+topic:deprecate-migration-flags-config">https://review.openstack.org/#/q/project:openstack/nova+branch:master+topic:deprecate-migration-flags-config</a>
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Feel free to respond with corrections or additions.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal">Paul<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:8.0pt;font-family:"HP Simplified",sans-serif;color:gray;mso-fareast-language:EN-GB">Paul Murray<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:8.0pt;font-family:"HP Simplified",sans-serif;color:gray;mso-fareast-language:EN-GB">Technical Lead, HPE Cloud<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:8.0pt;font-family:"HP Simplified",sans-serif;color:gray;mso-fareast-language:EN-GB">Hewlett Packard Enterprise<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span lang="EN-GB" style="font-size:8.0pt;font-family:"HP Simplified",sans-serif;color:gray;mso-fareast-language:EN-GB">+44 117 316 2527</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>