group.of.nepali.translators team mailing list archive
-
group.of.nepali.translators team
-
Mailing list archive
-
Message #20212
[Bug 1738864] Re: libvirt updates all iSCSI targets from host each time a pool is started
Hi Laz,
thank you for your report.
Thanks for the log, I mostly looked at the condensed version like:
$ awk '/iscsiadm/ {gsub("[0-9]*: debug : virCommandRunAsync:2429 :",""); gsub("+0000",""); gsub("^2017-12-18 ",""); print $0}' 20171218-libvirt.txt | pastebinit
=> http://paste.ubuntu.com/26214102/
The version in 17.10 is libvirt 3.6.
So something between 1.3.1 (Xenial) and 3.6 (Artful) must have fixed it upstream according to your report.
I think what you are seeing is the effect of [3] that is active and essentially iterates to set "node.startup=>manual" on all targets.
The fix for that came in 1.3.5 via [4] which makes use of iscsiadm option "nonpersistent" to get the same done in a better way.
That would mean for a fix in Xenial backporting [4], but I'm not sure if backporting those changes in newer libvirt would not impose too much general regression risk for an SRU [1].
I agree it is uncomfortably slow in your case, but the change is a rather big behavioral change (wanted in your case I totally agree), but I'm always afraid of [5] as I ran into issues almost like it.
And since it is "only slow" (I hate saying that being a performance engineer in the past) the severity isn't as high as if it is broken.
OTOH the code seems to apply and the option on iscsiadm is available
even in trusty (important for backports).
I wonder if instead of taking the risk of changing that in an SRU for
you the best option might be via [2] Ubuntu Cloud Archive which would
allow you to stick to 16.04 but at the same time get a supported newer
virtualization stack?
I'm tagging up the bug tasks accordingly and look forward to a
discussion about the best but also safe way for you and other Ubuntu
users overall.
[1]: https://wiki.ubuntu.com/StableReleaseUpdates
[2]: https://wiki.ubuntu.com/OpenStack/CloudArchive
[3]: https://libvirt.org/git/?p=libvirt.git;a=commit;h=3c12b654
[4]: https://libvirt.org/git/?p=libvirt.git;a=commit;h=56057900
[5]: https://xkcd.com/1172/
** Also affects: libvirt (Ubuntu Trusty)
Importance: Undecided
Status: New
** Also affects: libvirt (Ubuntu Xenial)
Importance: Undecided
Status: New
** Changed in: libvirt (Ubuntu Trusty)
Status: New => Won't Fix
** Changed in: libvirt (Ubuntu Xenial)
Status: New => Confirmed
** Changed in: libvirt (Ubuntu)
Status: New => Fix Released
--
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1738864
Title:
libvirt updates all iSCSI targets from host each time a pool is
started
Status in libvirt package in Ubuntu:
Fix Released
Status in libvirt source package in Trusty:
Won't Fix
Status in libvirt source package in Xenial:
Confirmed
Bug description:
Hello everyone, I'm a little confused about the behavior of libvirt in
Ubuntu 16.04.3.
We have up to 140 iSCSI targets on a single storage host, and all of
these are made available to our VM hosts. If I stop one of the iSCSI
pools through virsh ("virsh pool-destroy iscsipool1") and start it
back up again while running libvirt in debug, I see that it runs a
discovery and proceeds to go through and update every single target
available on that host -- even targets that we do not use, instead of
simply connecting to that target.
This turns a <1 second process into a minimum of 30 seconds, and I
just ran it with the stopwatch and clocked it at 64 seconds. So if we
are doing maintenance on these hosts and go for a reboot, it takes
90-120+ minutes to finish auto starting all of the iSCSI pools. And of
course, during this period of time, the server is completely worthless
as a VM host. Libvirt is just stuck until it finishes connecting
everything. Manually connecting to the targets using iscsiadm without
doing all the same hubbub that libvirt is doing connects these targets
immediately, as I would expect from libvirt.
And for each of the 140 iSCSI targets, it goes through and runs an
iscsiadm sendtargets and then updates every single target before
finally connecting the respective pool.
We also noticed that libvirt in Ubuntu 17.10 does not have this
behavior. Well maybe it does, but it connects the iSCSI targets
immediately. It is a much different process than Ubuntu 16.04.3.
Any help would be greatly appreciated. Thank you so much.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1738864/+subscriptions