On Mon, Apr 24, 2023 at 12:08:57PM +0200, Laszlo Ersek wrote:
> On 4/24/23 10:46, Richard W.M. Jones wrote:
> > On Fri, Apr 21, 2023 at 09:01:40PM +0300, Andrey Drobyshev wrote:
> >> This patch effectively limits the number of cases when we would want to
> >> do a complete SELinux relabeling on Linux guest conversion.
> >>
> >> This was brought to my attention as we've recently had a support case
> >> when the conversion was taking too much time mostly because of
> >> relabeling performed with "setfiles -F".
> >>
> >> Although this patch might be worthy of taking as it is, I'd also like to
> >> clarify, do we really need relabeling of the entire file system during
> >> conversion?  What exactly might go wrong here if we don't do that?
> >> Since this process might take hours on VMs big enough, it would be
> >> beneficial to be able to limit number of such cases even further, if
> >> possible. Unfortunately I couldn't find any hints in the libguestfs commit
> >> history as the relabeling code goes back to 0131d6f666 ("New tool: 
> >> virt-v2v.").
> > 
> > Relabelling is generally needed because we may have modified or
> > created files during the conversion.  These will not be labelled
> > correctly by the libguestfs appliance (as would happen when the guest
> > runs normally) because whatever SELinux mechanism that does this isn't
> > running.
> > 
> > If SELinux is enforcing this can and will stop services from starting
> > up at boot (you will see permission errors), and can even prevent a
> > guest from booting at all.
> > 
> > Note we don't even have a list of possible files affected because we
> > run stuff like dracut & rpm.
> > 
> > We should probably only need to relabel over "system directories"
> > (whatever that means), but we currently relabel over everything
> > mounted (basically everything mentioned in /etc/fstab) because that's
> > easier.  The alternate path if setfiles doesn't work touches
> > /.autorelabel, but that just moves the same work to boot time.
> > 
> > I don't think we've seen a case of labelling taking a long time, but
> > it could happen.
> 
> (1) In "daemon/selinux-relabel.c", we have this comment:
> 
>   /* If setfiles takes an excessively long time to run (but still
>    * completes) then removing .../contexts/files/file_contexts.bin
>    * appears to help.  If you find any such cases, please add
>    * observations to the bug report:
>    * https://bugzilla.redhat.com/show_bug.cgi?id=1396297
>    */
> 
> Perhaps it still applies.
> 
> (2) We've touched on passing "--smp N" with N>1 to virt-customize.
> Recent versions of the selinux library can utilize multiple threads for
> relabeling. For example, the "restorecon" and "setfiles" utilities
> gained the "-T nthreads" option a while ago.
> 
> Unfortunately, the default is "-T 1"; we should modify libguestfs to
> pass "-T 0", whenever "-T" is recognized.
> 
> http://mid.mail-archive.com/20220719192112.GO21552@redhat.com
> 
> AFAICT, virt-v2v would immediately benefit from this (even without an
> --smp switch); see commit d2b64ecc6701 ("v2v: Set the number of vCPUs to
> same as host number of pCPUs.", 2020-12-01).
> 
> Andrey, how do you feel about contributing the "-T 0" extension to
> libguestfs? :)
> 
> In "daemon/selinux-relabel.c", the setfiles_has_option() function should
> be usable for detecting whether "-T" is supported in the appliance.

Yes this would be a good idea.  Note that virt-v2v already enables smp
(see convert/convert.ml call to g#set_smp) so it could benefit
immediately.  virt-builder & virt-customize let you set --smp on the
command line but default it to 1.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html
_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to