| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2023-06-06 | |||
| 17:13:52 | geguileo | I created this LP bug for that one https://bugs.launchpad.net/nova/+bug/2023079 | |
| 17:13:56 | sean-k-mooney | ok then we can add that as a new feature if you can explain what it is | |
| 17:14:06 | sean-k-mooney | that is not a bug it woudl be a new feature | |
| 17:14:19 | sean-k-mooney | a small one but its still a feature | |
| 17:14:39 | geguileo | sean-k-mooney: https://paste.openstack.org/show/brFgX6MgBlxjgCrE3rbg/ | |
| 17:14:52 | sean-k-mooney | geguileo: what do you mean by volume in https://bugs.launchpad.net/nova/+bug/2023079 | |
| 17:14:55 | geguileo | sean-k-mooney: but that's not the right code | |
| 17:14:59 | geguileo | it's what I used to test | |
| 17:15:27 | sean-k-mooney | oh "When doing a live volume migration " | |
| 17:15:32 | geguileo | but that has CPU implications when running, so it's best only to change it when the block migration is going to happen | |
| 17:15:44 | sean-k-mooney | geguileo: we have a differnt concept called block-migration in the context of live migrating a vm | |
| 17:15:53 | dansmith | ...yeah | |
| 17:16:03 | geguileo | sean-k-mooney: yes, I mean block live migration, I've updated the bug name, thanks | |
| 17:16:04 | dansmith | I was going to say, we should never be block migrating a volume | |
| 17:16:25 | geguileo | sean-k-mooney: ooooh, then soooooooorry for mixing terms (/me facepalms) | |
| 17:16:27 | sean-k-mooney | geguileo: block live migratin in nova mean live migrate a vm with local raw/qcow storage | |
| 17:16:43 | dansmith | it means we literally move all the data | |
| 17:16:56 | dansmith | (all the disk data) | |
| 17:17:03 | geguileo | my bad, I've updated the LP bug | |
| 17:17:10 | geguileo | dansmith: we are currently moving ALL the data | |
| 17:17:23 | sean-k-mooney | geguileo: ya so i know knwo what your trying to fix | |
| 17:17:27 | geguileo | that's why the detect_zeroes would be good for volume live migration | |
| 17:17:43 | geguileo | sean-k-mooney: thanks for you patience in understanding my ramblings :-) | |
| 17:17:43 | sean-k-mooney | so we expect this to be done by cider using the driver assited migration feature | |
| 17:17:57 | sean-k-mooney | however you want nova ot be intelegent enough | |
| 17:18:07 | sean-k-mooney | so that when we fallback to nova doing the volume migration | |
| 17:18:15 | sean-k-mooney | that we also preseve the sparceness | |
| 17:18:23 | geguileo | sean-k-mooney: problem is that driver assisted migration cannot work between different backends (and afaik it doesn't work for any driver even between volumes of the same array) | |
| 17:18:41 | geguileo | sean-k-mooney: afaik today all online volume migrations are done by nova | |
| 17:18:51 | dansmith | wait what? | |
| 17:18:54 | geguileo | I don't think any cinde driver supports it | |
| 17:19:00 | opendevreview | Amit Uniyal proposed openstack/nova master: Delete dangling bdms https://review.opendev.org/c/openstack/nova/+/882284 | |
| 17:19:00 | opendevreview | Amit Uniyal proposed openstack/nova master: Reproducer for dangling bdms https://review.opendev.org/c/openstack/nova/+/881457 | |
| 17:19:13 | dansmith | why would we ever want to do that? unless you're crossing AZs or something | |
| 17:19:13 | sean-k-mooney | geguileo: i was pretty sure you fixed at least one vendor driver last year | |
| 17:19:14 | geguileo | dansmith: all volumes that are attached to now are migrated by nova | |
| 17:19:27 | geguileo | s/now/nova | |
| 17:19:32 | sean-k-mooney | geguileo: if you change backend right | |
| 17:19:38 | sean-k-mooney | not just retype | |
| 17:19:45 | sean-k-mooney | within the same backend | |
| 17:19:59 | dansmith | retype is a different thing right? | |
| 17:20:16 | sean-k-mooney | yes | |
| 17:20:20 | dansmith | I'm talking about you live migrate from one server to the next one in the rack, we should not be moving all the volume data to a *new* volume... | |
| 17:20:28 | geguileo | dansmith: retype is a different think, but many times it triggers a migration | |
| 17:20:40 | geguileo | dansmith: oh, yeah, not a nova live migration | |
| 17:20:45 | geguileo | dansmith: it's a volume live migration | |
| 17:20:57 | sean-k-mooney | retypes can be within hte same backend (just different qos policy) or to a diffent backend | |
| 17:20:58 | geguileo | basically when you mirror the data from one volume to another | |
| 17:21:00 | dansmith | okay, I guess we're confusing too many things | |
| 17:21:10 | geguileo | sean-k-mooney: correct! | |
| 17:21:49 | geguileo | dansmith: what's the right term for moving data from one attached volume to another while the instance is running? | |
| 17:21:49 | sean-k-mooney | so i remmeber a custoemr issue like 4-6 months ago where i tought wew fixed scalio or one of the other driver to explcitly preserve sparcens when doign a driver assited voluem migration | |
| 17:22:04 | dansmith | swap volume I think? | |
| 17:22:14 | geguileo | sean-k-mooney: I fixed for offline and to report the value to Nova | |
| 17:22:17 | dansmith | that's the action we see, AFAIK | |
| 17:22:28 | sean-k-mooney | on the nova side its the swap volume is what is called yes | |
| 17:22:29 | geguileo | dansmith: ok, I'll try to talk about swap volume | |
| 17:22:48 | sean-k-mooney | well no volume migration is fine | |
| 17:23:05 | dansmith | geguileo: not trying to make you use our language, I just need to know that a bunch of terms have been re-used :) | |
| 17:23:19 | sean-k-mooney | but you are asserting that the driver asseited path never works for an online volume migration | |
| 17:23:22 | geguileo | dansmith: oh, I prefer to use the right language | |
| 17:23:41 | geguileo | sean-k-mooney: I don't think we have any cinder driver capable of doing it... | |
| 17:24:01 | sean-k-mooney | i see... | |
| 17:24:15 | sean-k-mooney | that kind of suck since you have to transet all the data via the compute node then | |
| 17:24:35 | dansmith | I just don't understand where that happens | |
| 17:24:48 | geguileo | maybe RBD can... | |
| 17:24:50 | dansmith | if the instance is running but nova is transferring the data between volumes.. where in nova is that happening? | |
| 17:24:58 | geguileo | sean-k-mooney: agreed, it sucks | |
| 17:25:20 | geguileo | dansmith: libvirt/QEMU supports that | |
| 17:25:25 | geguileo | by adding a mirror to the disk | |
| 17:25:38 | geguileo | and once the volumes are mirrored | |
| 17:25:44 | geguileo | nova removes the old volume | |
| 17:25:46 | dansmith | ah, okay and is that what we're poking via swap? | |
| 17:25:56 | geguileo | I think so | |
| 17:26:02 | geguileo | I believe that's the swap volume | |
| 17:26:13 | dansmith | okay I thought our swap was just "pause, change the connection, unpause" | |
| 17:26:30 | sean-k-mooney | https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#LL2241C16-L2241C16 | |
| 17:26:32 | sean-k-mooney | there i think | |
| 17:27:02 | dansmith | oh okay so it really is us blocking on that action, interesting | |
| 17:27:04 | geguileo | sean-k-mooney: sounds about right | |
| 17:27:27 | sean-k-mooney | i dug into this a few months ago but i have mostly purged that info | |
| 17:27:29 | dansmith | man, that sucks :) | |
| 17:27:43 | sean-k-mooney | its actully libvirt doing this | |
| 17:27:48 | sean-k-mooney | but there are a few flags we can pass | |
| 17:27:54 | geguileo | yeah, Nova just waits for the job to complete | |
| 17:27:56 | sean-k-mooney | to have it sparify the zeors | |
| 17:28:11 | geguileo | yeah, it's the detect_zeroes option from https://paste.openstack.org/show/brFgX6MgBlxjgCrE3rbg/ | |
| 17:28:20 | geguileo | well, that's the brute force approach for my tests | |
| 17:28:27 | geguileo | because that enables them ALL the time | |
| 17:28:30 | geguileo | which sucks | |
| 17:28:41 | geguileo | but I was able to confirm that it works for NFS/qcow2 and RBD | |
| 17:28:48 | geguileo | doesn't work for SCSI devices though | |
| 17:28:50 | sean-k-mooney | well it depens on if there is any perfornace overhead to it normally | |
| 17:29:00 | geguileo | sean-k-mooney: there is performance overhead | |
| 17:29:15 | dansmith | definitely | |
| 17:29:18 | geguileo | so I think it only makes sense when you are going to be reading the whole thing | |
| 17:29:24 | geguileo | and then you save on network + writes | |
| 17:29:54 | geguileo | so only enable it during the volume swap operation | |
| 17:29:55 | sean-k-mooney | well we cant really change this in responce to a volume migration api request | |
| 17:29:56 | geguileo | then disable it | |