On 11/06/2015 05:08 PM, Richard W.M. Jones wrote:
On Fri, Nov 06, 2015 at 04:16:21PM +0300, Maxim Perevedentsev wrote:
> Hello everyone!
>
> I have to implement the functionality of mounting all VM disks/partitions.
>
> E.g. if a VM has 2 disks of 2 partitions each (I get it from
> virt-filesystems), I want to get the following structure on host
> node after mount:
> mnt/
> ------hdd0/
> -------------volume1/
> -------------volume2/
> ------hdd1/
> -------------volume1/
> -------------volume2/
>
> I'd like to use guestmount due to syntax simplicity, but I found out
> that it's impossible to call e.g.
> guestmount -a disk.qcow2 -m /dev/sda1:/hdd0/volume1 -m
> /dev/sda2:/hdd0/volume2 mnt/
>
> So I came to only two possible options:
> 1)
> mkdir -p mnt/hdd0/volume1
> guestmount -a disk.qcow2 -m /dev/sda1 mnt/hdd0/volume1
> ....
> (Is it safe to use the same disk from multiple guestmounts?)
>
> 2)
> guestfish -a disk.qcow2 "
> run :
> mkmountpoint /hdd0 :
> mkmountpoint /hdd0/volume1 :
> ... :
> mount /dev/sda1 /hdd0/volume1 :
> ... :
> mount-local mnt/ :
> mount-local-run"
>
> kill -TERM `pidof guestfish`
> guestunmount mnt/
>
>
> Is any of these options safe enough/preferred? Or, maybe, other options?
> I'd like to avoid guestfs API, threading and so on, and confine
> myself to command-line.
The mount-local APIs don't require threads, although they can use
them.
A Perl script should be fairly simple, and is a lot easier to automate
that guestfish and much more flexible than guestmount.
Have a look at the attached file. In case it's not clear, you have to
do 'guestunmount <MOUNTPOINT>' to exit the main program.
Rich.
Thank you very much!
I've rewritten this script in C, and it works just as expected.
The only problem is that for unmount, we cannot reuse the same handle,
and have to call guestunmount.
There's a dim place:
what is the difference between guestunmount and guestfs_umount_local?
As I understood, guestunmount does need guestfs handle, launch etc.
Does umount_local need it?
If yes, how should this command be used (assumed that the handle is
already used in mount_local_run)?
These questions confuse me a little :-s
--
Your sincerely,
Maxim Perevedentsev