[Libguestfs] [PATCH virt-v2v] v2v: Allow temporary directory to be set on a global basis.

Pino Toscano ptoscano at redhat.com
Thu Apr 2 13:21:14 UTC 2020


On Thursday, 2 April 2020 14:49:18 CEST Richard W.M. Jones wrote:
> Previously we placed large files in g#get_cachedir () (usually
> /var/tmp).  However the problem is this ties the libguestfs appliance
> and the virt-v2v overlay files to the same location.
> 
> When virt-v2v is run in a container, or any other situation where
> local storage is limited, it's helpful to be able to put the overlay
> files on an externally mounted PVC, which might be using NFS and
> shared between containers.  But putting the libguestfs appliance on
> NFS in a shared location is certainly not recommended.
> 
> This allows the two locations to be set separately:
> 
>   VIRT_V2V_TMPDIR - location of large temporary files, can use NFS
>                     and may be shared
> 
>   LIBGUESTFS_CACHEDIR - location of libguestfs appliance
> 
> Another motivation for this patch is to allow more reliable cleanup of
> temporary files by an external process, as described in the updated
> documentation.
> ---

I do not understand the motivation behind this, which adds yet another
location with temporary files in addition to:
- LIBGUESTFS_TMPDIR - $TMPDIR by default (which itself is /tmp by
  default)
- LIBGUESTFS_CACHEDIR - /var/tmp by default (with a .guestfs-$UID
  subdirectory for the appliance)

Before this patch, almost all the temporary files are stored directly
or in subdirectories of $TMPDIR, except big files such as overlays and
OVA extracted content that are in CACHEDIR. With the proposed changes,
_all_ the temporary files will be in CACHEDIR, so there are the
following problems:
- this directory will be cluttered with a lot more files than before
- if it is shared, then other places where it is mounted will see the
  same files
- if it is shared, then creating temporary files will possibly mean
  doing network I/O
- if virt-v2v exits uncleantly, there will be a lot more files to
  cleanup than now
- even without being shared, /var/tmp is persistent unlike /tmp (which
  can be tmpfs-backed on some distros/setups), meaning old temporary
  files will linger way more

That said, it is not clear to me why /var/tmp should be shared among
containers.

> diff --git a/docs/virt-v2v.pod b/docs/virt-v2v.pod
> index ed95fdc8e..dbfd10cad 100644
> --- a/docs/virt-v2v.pod
> +++ b/docs/virt-v2v.pod
> @@ -1206,8 +1206,9 @@ possible.
>  
>  =head3 Disk space
>  
> -Virt-v2v places potentially large temporary files in C<$TMPDIR> (which
> -is F</var/tmp> if you don't set it).  Using tmpfs is a bad idea.

Regardless of this patch, this bit is not correct:
- libguestfs does not places large files in $TMPDIR (but in CACHEDIR)
- $TMPDIR is not /var/tmp by default, but /tmp

-- 
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20200402/73ea0b15/attachment.sig>


More information about the Libguestfs mailing list