| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2023-06-06 | |||
| 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 | sean-k-mooney | so we expect this to be done by cider using the driver assited migration feature | |
| 17:17:43 | geguileo | sean-k-mooney: thanks for you patience in understanding my ramblings :-) | |
| 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: Reproducer for dangling bdms https://review.opendev.org/c/openstack/nova/+/881457 | |
| 17:19:00 | opendevreview | Amit Uniyal proposed openstack/nova master: Delete dangling bdms https://review.opendev.org/c/openstack/nova/+/882284 | |
| 17:19:13 | sean-k-mooney | geguileo: i was pretty sure you fixed at least one vendor driver last year | |
| 17:19:13 | dansmith | why would we ever want to do that? unless you're crossing AZs or something | |
| 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 | 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:21:49 | geguileo | dansmith: what's the right term for moving data from one attached volume to another while the instance is running? | |
| 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 | |
| 17:30:00 | dansmith | you're trading cpu for disk | |
| 17:30:22 | sean-k-mooney | even if we coudl im not sure if we should | |
| 17:30:29 | geguileo | dansmith: in volume swap, we are trading cpu for network + disk + time | |
| 17:30:47 | dansmith | yeah I meant if it's enabled all the time | |
| 17:31:04 | dansmith | and yeah, network too | |
| 17:31:17 | sean-k-mooney | well it would only have an effect on livemigration and on the intal disk creation | |
| 17:31:23 | geguileo | dansmith: I don't think we should enable it all the time, because if the storage supports discard, then the disk will be recovered by periodically calling fstrimg like some OSs do | |
| 17:31:35 | dansmith | yeah | |
| 17:31:54 | geguileo | but I think this can greatly improve some volume swap cases | |
| 17:31:59 | sean-k-mooney | well discard is off by default | |
| 17:32:12 | sean-k-mooney | and currently only works if you use virtio-scsi which is not our default | |
| 17:32:23 | geguileo | sean-k-mooney: yeah, but that's something we have to improve on the cinder side | |
| 17:32:32 | sean-k-mooney | no i mean in the nova side | |
| 17:32:33 | geguileo | so we properly report the value | |
| 17:32:43 | sean-k-mooney | we have a config option to opt into allowing discard | |
| 17:32:47 | sean-k-mooney | and by default we dont | |
| 17:32:48 | geguileo | yeah, but if cinder reports it is supported then nova does the right thing | |