[fedora-virt] libguestfs best practices: Exposing files from the host for the duration of a session

Charles Duffy charles at dyfis.net
Fri May 29 00:19:06 UTC 2009


I have a rather large set of RPMs and such on my host I want to install 
on my guest using libguestfs. The normal way to do this would be to 
upload the package(s), install them, then (optionally) remove the RPMs.

However, I don't particularly want to bloat the qcow2 file with the 
changes made via uploading files which are only going to be deleted when 
no longer in use. Someday (*sigh*) we'll have 9p-over-virtio support 
built into qemu; until then, a few ways to get around this present 
themselves:


- Add a temporary file as a disk to the guestfs session on startup; 
within the guest, create a new filesystem there, transfer temporary 
files to it, and delete when done.

Pro: No external dependencies.
Con: Not sure of a safe and correct way to find the name of the 
temporary disk [to ensure that the mkfs operation being scripted refers 
only to it], particularly when trying to script everything into a single 
guestfish invocation with a variable number of other disks exposed (ie. 
using a command line generated by virt-inspect). Upload needs to be 
file-by-file (or have everything bundled in a tarball beforehand).


- Run a tmpfs mount on the guest; upload RPMs there.

Pro: Fast. No need to worry about device names.
Con: Potential for running out of memory. Upload needs to be 
file-by-file (or have everything bundled in a tarball beforehand).


- Stuff the files to be added into a cramfs filesystem, running mkcramfs 
on the host.

Pro: Relatively fast. Easy to transfer a full directory structure to the 
guest at one stroke.
Con: Device names an issue. Requires cramfs.ko to be added to the 
whitelist in appliance/update-initramfs.sh.in.


- Support a FUSE-based mechanism for exporting files, ie. 
ccgfs-over-vmchannel

Pro: Potential to be the cleanest approach from an end-user perspective.
Con: Implementation difficulty; no Fedora or EPEL packages are available 
for ccgfs.




More information about the Fedora-virt mailing list