<div>Taylor,<br><br>I am adding some IBMers who are also looking into making this work.  PowerVC has a solution hacked into place but we are working on getting a more general solution implemented for Mitaka.  Hoping we can all work together to get a solution in place.<br><br>Will you be in Tokyo?  If so, it would be good to have a plan together to discuss there.<br><br>Gerald and Sam,<br><br>Can you guys join the OpenStack dev mailing list and continue the discussion?<br><br>Thanks!<br>Jay</div><br><div class="gmail_quote"><div dir="ltr">On Fri, Aug 21, 2015 at 8:20 PM <<a href="mailto:Taylor.Bertie@solnet.co.nz">Taylor.Bertie@solnet.co.nz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">For RBDs it IS as simple as making calls to virsh after an attached volume is extended. I've done it half a dozen time with no intermediate steps and it works. I'd love to test it more robustly, obviously, but unfortunately I got bigger fish to fry with BAU.<br>
<br>
iSCSI might involve more work, I acknowledge that, but there is nothing wrong with putting the framework in place now and throwing an "unsupported volume type" error message if we haven't worked out the best method for doing this for a particular type.<br>
<br>
The way I see it, the only ones that are going to cause us problems are ones that require the host to suspend the disk prior to operating on it. In other words if the notification to the host can't be done atomically, that could definitely cause issues.<br>
<br>
However, all the examples I have seem implemented in OpenStack volumes thus far (iSCSI, RDB) are either atomic or no notification required (in the case of RBD). Even Multipath is atomic (granted, it's multiple chained atomic operations, but still, they won't be left in an irrecoverable failure state).<br>
<br>
Yes, the page you linked does warn about the issue when there is no path the device, however I think that if you're trying to resize a volume the compute node can't connect to, you got bigger problems (that is to say, throwing an error here is perfectly reasonable).<br>
<br>
Regards,<br>
<br>
Taylor Bertie<br>
Enterprise Support Infrastructure Engineer<br>
<br>
Mobile +64 27 952 3949<br>
Phone +64 4 462 5030<br>
Email <a href="mailto:taylor.bertie@solnet.co.nz" target="_blank">taylor.bertie@solnet.co.nz</a><br>
<br>
Solnet Solutions Limited<br>
Level 12, Solnet House<br>
70 The Terrace, Wellington 6011<br>
PO Box 397, Wellington 6140<br>
<br>
<a href="http://www.solnet.co.nz" rel="noreferrer" target="_blank">www.solnet.co.nz</a><br>
<br>
<br>
-----"Walter A. Boring IV" <<a href="mailto:walter.boring@hp.com" target="_blank">walter.boring@hp.com</a>> wrote: -----<br>
To: <a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a><br>
From: "Walter A. Boring IV" <<a href="mailto:walter.boring@hp.com" target="_blank">walter.boring@hp.com</a>><br>
Date: 2015-08-22 7:13<br>
Subject: Re: [openstack-dev] [nova][cinder] Extending attached disks<br>
<br>
This isn't as simple as making calls to virsh after an attached volume<br>
is extended on the cinder backend, especially when multipath is involved.<br>
You need the host system to understand that the volume has changed size<br>
first, or virsh will really never see it.<br>
<br>
For iSCSI/FC volumes you need to issue a rescan on the bus (iSCSI<br>
session, FC fabric),  and then when multipath is involved, it gets quite<br>
a bit more complex.<br>
<br>
This lead to one of the sticking points with doing this at all, is<br>
because when cinder extends the volume, it needs to tell nova that it<br>
has happened, and the nova (or something on the compute node), will have<br>
to issue the correct commands in sequence for it all to work.<br>
<br>
You'll also have to consider multi-attached volumes as well, which adds<br>
yet another wrinkle.<br>
<br>
A good quick source of some of the commands and procedures that are<br>
needed you can see here:<br>
<a href="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Online_Storage_Reconfiguration_Guide/online-logical-units.html" rel="noreferrer" target="_blank">https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Online_Storage_Reconfiguration_Guide/online-logical-units.html</a><br>
<br>
<br>
You can see that volumes with multipath requires a lot of hand holding<br>
to be done correctly.  It's non trivial.  I see this as being very error<br>
prone, and any failure<br>
in the multipath process could lead to big problems :(<br>
<br>
Walt<br>
> Hi everyone,<br>
><br>
> Apologises for the duplicate send, looks like my mail client doesn't create very clean HTML messages. Here is the message in plain-text. I'll make sure to send to the list in plain-text from now on.<br>
><br>
> In my current pre-production deployment we were looking for a method to live extend attached volumes to an instance. This was one of the requirements for deployment. I've worked with libvirt hypervisors before so it didn't take long to find a workable solution. However I'm not sure how transferable this will be across deployment models. Our deployment model is using libvirt for nova and ceph for backend storage. This means obviously libvirt is using rdb to connect to volumes.<br>
><br>
> Currently the method I use is:<br>
><br>
> - Force cinder to run an extend operation.<br>
> - Tell Libvirt that the attached disk has been extended.<br>
><br>
> It would be worth discussing if this can be ported to upstream such that the API can handle the leg work, rather than this current manual method.<br>
><br>
> Detailed instructions.<br>
> You will need: volume-id of volume you want to resize, hypervisor_hostname and instance_name from instance volume is attached to.<br>
><br>
> Example: extending volume f9fa66ab-b29a-40f6-b4f4-e9c64a155738 attached to instance-00000012 on node-6 to 100GB<br>
><br>
> $ cinder reset-state --state available f9fa66ab-b29a-40f6-b4f4-e9c64a155738<br>
> $ cinder extend f9fa66ab-b29a-40f6-b4f4-e9c64a155738 100<br>
> $ cinder reset-state --state in-use f9fa66ab-b29a-40f6-b4f4-e9c64a155738<br>
><br>
> $ssh node-6<br>
> node-6$ virsh qemu-monitor-command instance-00000012 --hmp "info block" | grep f9fa66ab-b29a-40f6-b4f4-e9c64a155738<br>
> drive-virtio-disk1: removable=0 io-status=ok file=rbd:volumes-slow/volume-f9fa66ab-b29a-40f6-b4f4-e9c64a155738:id=cinder:key=<keyhere>==:auth_supported=cephx\\;none:mon_host=10.1.226.64\\:6789\\;10.1.226.65\\:6789\\;10.1.226.66\\:6789 ro=0 drv=raw encrypted=0 bps=0 bps_rd=0 bps_wr=0 iops=0 iops_rd=0 iops_wr=0<br>
><br>
> This will get you the disk-id, which in this case is drive-virtio-disk1.<br>
><br>
> node-6$ virsh qemu-monitor-command instance-00000012 --hmp "block_resize drive-virtio-disk1 100G"<br>
><br>
> Finally, you need to perform a drive rescan on the actual instance and resize and extend the file-system. This will be OS specific.<br>
><br>
> I've tested this a few times and it seems very reliable.<br>
><br>
> Taylor Bertie<br>
> Enterprise Support Infrastructure Engineer<br>
><br>
> Mobile +64 27 952 3949<br>
> Phone +64 4 462 5030<br>
> Email <a href="mailto:taylor.bertie@solnet.co.nz" target="_blank">taylor.bertie@solnet.co.nz</a><br>
><br>
> Solnet Solutions Limited<br>
> Level 12, Solnet House<br>
> 70 The Terrace, Wellington 6011<br>
> PO Box 397, Wellington 6140<br>
><br>
> <a href="http://www.solnet.co.nz" rel="noreferrer" target="_blank">www.solnet.co.nz</a><br>
><br>
> Attention:<br>
> This email may contain information intended for the sole use of<br>
> the original recipient. Please respect this when sharing or<br>
> disclosing this email's contents with any third party. If you<br>
> believe you have received this email in error, please delete it<br>
> and notify the sender or <a href="mailto:postmaster@solnetsolutions.co.nz" target="_blank">postmaster@solnetsolutions.co.nz</a> as<br>
> soon as possible. The content of this email does not necessarily<br>
> reflect the views of Solnet Solutions Ltd.<br>
><br>
><br>
> __________________________________________________________________________<br>
> OpenStack Development Mailing List (not for usage questions)<br>
> Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br>
Attention:<br>
This email may contain information intended for the sole use of<br>
the original recipient. Please respect this when sharing or<br>
disclosing this email's contents with any third party. If you<br>
believe you have received this email in error, please delete it<br>
and notify the sender or <a href="mailto:postmaster@solnetsolutions.co.nz" target="_blank">postmaster@solnetsolutions.co.nz</a> as<br>
soon as possible. The content of this email does not necessarily<br>
reflect the views of Solnet Solutions Ltd.<br>
<br>
<br>
__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
</blockquote></div>