[libvirt] libvirt / virt-manager issue with NFS share as storage plus a philosophy question - resend w/subject
by mike.hinz@yr20.com
I had originally posted a plea for help on the virt-manager related list, but the same issue exists with virsh and this list seems to have higher traffic. I'd been chatting on the irc channel with various people about this, but wanted to put this on the mail list for the record and to also raise a philosophical question.
First, we've confirmed that Fedora 11 preview (fully updated) has an issue with properly mounting NFS shares without the noacl option. Fedora 10 works fine with regard to mounting NFS shares. That issue causes problems when attempting to write files to an NFS share and more importantly, for this group, causes problems when attempting to create an NFS based storage pool and then subsequently creating volumes on said NFS share. That bug is 499178. This was all figured out with Openfiler support and with the support of the fine folks working on libvirt and virt-manager. There is a somewhat ugly workaround for this and I can describe it in case anyone is interested.
Now comes the philosophy piece: It seems like that the way that libvirt and virt-manager want to handle storage is to be able to fully control the mounting process. That seems to me to be a very nice thing as you have a single way to manage storage along with your VMs. However, at least with respect to NFS, there are a number of parameters that people might need to give to the mount command for things like performance optimization and who knows what else. Note that this is a consideration completely aside from the bug issue above. It seems to me that either you have to just use the user created mount points, either manually or by fstab OR you have to allow all the possible options to be passed if you want to fully control the process. Right now, it's tricky to do, if you want to get paras passed for tuning or whatever and requires some tricky handwork to get it done.
One way to accomplish this from the user input perspective would be to add an 'options' input field that could take multiple parameters on the step 2 of 2 page of the 'add storage pool' function.
So, is my thinking all screwed up about this or is there merit to this concept? I tend to think, at least right now, that the logical thing is to either have the user create the mount points through the normal mechanisms that have in place roughly forever and then you just ask for what these are with respect to the NFS pools or you have to allow for user to pass the required parameters via your mechanism, although there are certainly many, many options when it comes to NFS.
Thanks for all the help to date! I hope the above is helpful!
Regards,
Mike Hinz
President
YR20
1718 Fry Road, Suite 440
Houston, TX 77084
mike.hinz(a)yr20.com
832-225-1293 (o)
713-594-3095 (m)
832-550-2657 (f)
Regards,
Mike Hinz
President
YR20
1718 Fry Road, Suite 440
Houston, TX 77084
mike.hinz(a)yr20.com
832-225-1293 (o)
713-594-3095 (m)
832-550-2657 (f)
15 years, 6 months
[libvirt] Cannot determine QEMU argv syntax with KVM 85
by Frederik Himpe
With KVM 85, it is impossible to start domains with libvirtd anymore (I
tried both libvirtd 0.6.1 and 0.6.3):
# virsh start Cooker
error: Failed to start domain Cooker
error: internal error Cannot determine QEMU argv syntax /usr/bin/qemu-kvm
When I downgrade to KMV 84, everything is working again.
KVM 85's output of qemu --help:
# LC_ALL=C /usr/bin/qemu-kvm --help
QEMU PC emulator version 0.10.0 (kvm-85), Copyright (c) 2003-2008 Fabrice Bellard
usage: qemu [options] [disk_image]
'disk_image' is a raw hard image image for IDE hard disk 0
Standard options:
-h or -help display this help and exit
-M machine select emulated machine (-M ? for list)
-cpu cpu select CPU (-cpu ? for list)
-smp n set the number of CPUs to 'n' [default=1]
-fda/-fdb file use 'file' as floppy disk 0/1 image
-hda/-hdb file use 'file' as IDE hard disk 0/1 image
-hdc/-hdd file use 'file' as IDE hard disk 2/3 image
-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
[,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
[,cache=writethrough|writeback|none][,format=f][,serial=s]
[,boot=on|off]
use 'file' as a drive image
-mtdblock file use 'file' as on-board Flash memory image
-sd file use 'file' as SecureDigital card image
-pflash file use 'file' as a parallel flash image
-boot [a|c|d|n] boot on floppy (a), hard disk (c), CD-ROM (d), or network (n)
-snapshot write to temporary files instead of disk image files
-m megs set virtual RAM size to megs MB [default=128]
-k language use keyboard layout (for example 'fr' for French)
-audio-help print list of audio drivers and their options
-soundhw c1,... enable audio support
and only specified sound cards (comma separated list)
use -soundhw ? to get the list of supported cards
use -soundhw all to enable all of them
-usb enable the USB driver (will be the default soon)
-usbdevice name add the host or guest USB device 'name'
-name string set the name of the guest
-uuid %08x-%04x-%04x-%04x-%012x
specify machine UUID
Display options:
-nographic disable graphical output and redirect serial I/Os to console
-curses use a curses/ncurses interface instead of SDL
-no-frame open SDL window without a frame and window decorations
-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
-no-quit disable SDL window close capability
-sdl enable SDL
-portrait rotate graphical output 90 deg left (only PXA LCD)
-vga [std|cirrus|vmware|none]
select video card type
-full-screen start in full screen
-vnc display start a VNC server on display
i386 target only:
-win2k-hack use it when installing Windows 2000 to avoid a disk full bug
-rtc-td-hack use it to fix time drift in Windows ACPI HAL
-no-fd-bootchk disable boot signature checking for floppy disks
-no-acpi disable ACPI
-no-hpet disable HPET
-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...]
ACPI table description
Network options:
-net nic[,vlan=n][,macaddr=addr][,model=type][,name=str]
create a new Network Interface Card and connect it to VLAN 'n'
-net user[,vlan=n][,name=str][,hostname=host]
connect the user mode network stack to VLAN 'n' and send
hostname 'host' to DHCP clients
-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile]
connect the host TAP network interface to VLAN 'n' and use the
network scripts 'file' (default=/etc/qemu-ifup)
and 'dfile' (default=/etc/qemu-ifdown);
use '[down]script=no' to disable script execution;
use 'fd=h' to connect to an already opened TAP interface
-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]
connect the vlan 'n' to another VLAN using a socket connection
-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port]
connect the vlan 'n' to multicast maddr and port
-net vde[,vlan=n][,name=str][,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]
connect the vlan 'n' to port 'n' of a vde switch running
on host and listening for incoming connections on 'socketpath'.
Use group 'groupname' and mode 'octalmode' to change default
ownership and permissions for communication port.
-net none use it alone to have zero network devices; if no -net option
is provided, the default is '-net nic -net user'
-tftp dir allow tftp access to files in dir [-net user]
-bootp file advertise file in BOOTP replies
-smb dir allow SMB access to files in 'dir' [-net user]
-redir [tcp|udp]:host-port:[guest-host]:guest-port
redirect TCP or UDP connections from host to guest [-net user]
-bt hci,null dumb bluetooth HCI - doesn't respond to commands
-bt hci,host[:id]
use host's HCI with the given name
-bt hci[,vlan=n]
emulate a standard HCI in virtual scatternet 'n'
-bt vhci[,vlan=n]
add host computer to virtual scatternet 'n' using VHCI
-bt device:dev[,vlan=n]
emulate a bluetooth device 'dev' in scatternet 'n'
Linux boot specific:
-kernel bzImage use 'bzImage' as kernel image
-append cmdline use 'cmdline' as kernel command line
-initrd file use 'file' as initial ram disk
Debug/Expert options:
-serial dev redirect the serial port to char device 'dev'
-parallel dev redirect the parallel port to char device 'dev'
-monitor dev redirect the monitor to char device 'dev'
-pidfile file write PID to 'file'
-singlestep always run in singlestep mode
-S freeze CPU at startup (use 'c' to start execution)
-gdb dev wait for gdb connection on 'dev'
-s shorthand for -gdb tcp::1234
-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items)
-hdachs c,h,s[,t]
force hard disk 0 physical geometry and the optional BIOS
translation (t=none or lba) (usually qemu can guess them)
-L path set the directory for the BIOS, VGA BIOS and keymaps
-bios file set the filename for the BIOS
-no-reboot exit instead of rebooting
-no-shutdown stop before shutdown
-loadvm [tag|id]
start right away with a saved state (loadvm in monitor)
-daemonize daemonize QEMU after initializing
-option-rom rom load a file, rom, into the option ROM space
-clock force the use of the given methods for timer alarm.
To see what timers are available use -clock ?
-localtime set the real time clock to local time [default=utc]
-startdate select initial date of the clock
-icount [N|auto]
enable virtual instruction counter with 2^N clock ticks per
instruction
-echr chr set terminal escape character instead of ctrl-a
-virtioconsole c
set virtio console
-show-cursor show cursor
-tb-size n set TB size
-incoming p prepare for incoming migration, listen on port p
-chroot dir Chroot to dir just before starting the VM.
-runas user Change to user id user just before starting the VM.
-no-kvm disable KVM hardware virtualization
-no-kvm-irqchip disable KVM kernel mode PIC/IOAPIC/LAPIC
-no-kvm-pit disable KVM kernel mode PIT
-no-kvm-pit-reinjection disable KVM kernel mode PIT interrupt reinjection
-pcidevice host=bus:dev.func[,dma=none][,name=string]
expose a PCI device to the guest OS.
dma=none: don't perform any dma translations (default is to use an iommu)
'string' is used in log output.
-enable-nesting enable support for running a VM inside the VM (AMD only)
-cpu-vendor STRING override the cpuid vendor string
-nvram FILE provide ia64 nvram contents
-tdf enable guest time drift compensation
-kvm-shadow-memory MEGABYTES
allocate MEGABYTES for kvm mmu shadowing
-mempath FILE provide backing storage for guest RAM
-mem-prealloc preallocate guest memory (use with -mempath)
During emulation, the following keys are useful:
ctrl-alt-f toggle full screen
ctrl-alt-n switch to virtual console 'n'
ctrl-alt toggle mouse and keyboard grab
When using -nographic, press 'ctrl-a h' to get some help.
The working KVM 84 gives this:
# LC_ALL=C /usr/bin/qemu-kvm --help
QEMU PC emulator version 0.9.1 (kvm-84), Copyright (c) 2003-2008 Fabrice Bellard
usage: qemu [options] [disk_image]
'disk_image' is a raw hard image image for IDE hard disk 0
Standard options:
-h or -help display this help and exit
-M machine select emulated machine (-M ? for list)
-cpu cpu select CPU (-cpu ? for list)
-smp n set the number of CPUs to 'n' [default=1]
-fda/-fdb file use 'file' as floppy disk 0/1 image
-hda/-hdb file use 'file' as IDE hard disk 0/1 image
-hdc/-hdd file use 'file' as IDE hard disk 2/3 image
-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
[,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
[,cache=writethrough|writeback|none][,format=f][,serial=s]
[,boot=on|off]
use 'file' as a drive image
-mtdblock file use 'file' as on-board Flash memory image
-sd file use 'file' as SecureDigital card image
-pflash file use 'file' as a parallel flash image
-boot [a|c|d|n] boot on floppy (a), hard disk (c), CD-ROM (d), or network (n)
-snapshot write to temporary files instead of disk image files
-m megs set virtual RAM size to megs MB [default=128]
-k language use keyboard layout (for example "fr" for French)
-audio-help print list of audio drivers and their options
-soundhw c1,... enable audio support
and only specified sound cards (comma separated list)
use -soundhw ? to get the list of supported cards
use -soundhw all to enable all of them
-usb enable the USB driver (will be the default soon)
-usbdevice name add the host or guest USB device 'name'
-name string set the name of the guest
-uuid %08x-%04x-%04x-%04x-%012x
specify machine UUID
Display options:
-nographic disable graphical output and redirect serial I/Os to console
-curses use a curses/ncurses interface instead of SDL
-no-frame open SDL window without a frame and window decorations
-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
-no-quit disable SDL window close capability
-sdl enable SDL
-portrait rotate graphical output 90 deg left (only PXA LCD)
-vga [std|cirrus|vmware|none]
select video card type
-full-screen start in full screen
-vnc display start a VNC server on display
-name string set the name of the guest
-uuid %08x-%04x-%04x-%04x-%012x specify machine UUID
Network options:
-net nic[,vlan=n][,macaddr=addr][,model=type][,name=str]
create a new Network Interface Card and connect it to VLAN 'n'
-net user[,vlan=n][,name=str][,hostname=host]
connect the user mode network stack to VLAN 'n' and send
hostname 'host' to DHCP clients
-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile]
connect the host TAP network interface to VLAN 'n' and use the
network scripts 'file' (default=/etc/qemu-ifup)
and 'dfile' (default=/etc/qemu-ifdown);
use '[down]script=no' to disable script execution;
use 'fd=h' to connect to an already opened TAP interface
-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]
connect the vlan 'n' to another VLAN using a socket connection
-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port]
connect the vlan 'n' to multicast maddr and port
-net vde[,vlan=n][,name=str][,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]
connect the vlan 'n' to port 'n' of a vde switch running
on host and listening for incoming connections on 'socketpath'.
Use group 'groupname' and mode 'octalmode' to change default
ownership and permissions for communication port.
-net none use it alone to have zero network devices; if no -net option
is provided, the default is '-net nic -net user'
-tftp dir allow tftp access to files in dir [-net user]
-bootp file advertise file in BOOTP replies
-smb dir allow SMB access to files in 'dir' [-net user]
-redir [tcp|udp]:host-port:[guest-host]:guest-port
redirect TCP or UDP connections from host to guest [-net user]
-bt hci,null dumb bluetooth HCI - doesn't respond to commands
-bt hci,host[:id]
use host's HCI with the given name
-bt hci[,vlan=n]
emulate a standard HCI in virtual scatternet 'n'
-bt vhci[,vlan=n]
add host computer to virtual scatternet 'n' using VHCI
-bt device:dev[,vlan=n]
emulate a bluetooth device 'dev' in scatternet 'n'
i386 target only:
-win2k-hack use it when installing Windows 2000 to avoid a disk full bug
-rtc-td-hack use it to fix time drift in Windows ACPI HAL
-no-fd-bootchk disable boot signature checking for floppy disks
-no-acpi disable ACPI
-no-hpet disable HPET
Linux boot specific:
-kernel bzImage use 'bzImage' as kernel image
-append cmdline use 'cmdline' as kernel command line
-initrd file use 'file' as initial ram disk
Debug/Expert options:
-serial dev redirect the serial port to char device 'dev'
-parallel dev redirect the parallel port to char device 'dev'
-monitor dev redirect the monitor to char device 'dev'
-pidfile file write PID to 'file'
-S freeze CPU at startup (use 'c' to start execution)
-s wait gdb connection to port
-p port set gdb connection port [default=1234]
-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items)
-hdachs c,h,s[,t]
force hard disk 0 physical geometry and the optional BIOS
translation (t=none or lba) (usually qemu can guess them)
-L path set the directory for the BIOS, VGA BIOS and keymaps
-bios file set the filename for the BIOS
-no-kvm disable KVM hardware virtualization
-no-kvm-irqchip disable KVM kernel mode PIC/IOAPIC/LAPIC
-no-kvm-pit disable KVM kernel mode PIT
-no-kvm-pit-reinjection disable KVM kernel mode PIT interrupt reinjection
-enable-nesting enable support for running a VM inside the VM (AMD only)
-pcidevice host=bus:dev.func[,dma=none][,name=string]
expose a PCI device to the guest OS.
dma=none: don't perform any dma translations (default is to use an iommu)
'string' is used in log output.
-no-reboot exit instead of rebooting
-no-shutdown stop before shutdown
-loadvm [tag|id]
start right away with a saved state (loadvm in monitor)
-daemonize daemonize QEMU after initializing
-tdf inject timer interrupts that got lost
-kvm-shadow-memory megs set the amount of shadow pages to be allocated
-mem-path set the path to hugetlbfs/tmpfs mounted directory, also
enables allocation of guest memory with huge pages
-mem-prealloc toggles preallocation of -mem-path backed physical memory
at startup. Default is enabled.
-option-rom rom load a file, rom, into the option ROM space
-clock force the use of the given methods for timer alarm.
To see what timers are available use -clock ?
-localtime set the real time clock to local time [default=utc]
-startdate select initial date of the clock
-icount [N|auto]
enable virtual instruction counter with 2^N clock ticks per instruction
-echr chr set terminal escape character instead of ctrl-a
-virtioconsole c
set virtio console
-show-cursor show cursor
-tb-size n set TB size
-incoming p prepare for incoming migration, listen on port p
During emulation, the following keys are useful:
ctrl-alt-f toggle full screen
ctrl-alt-n switch to virtual console 'n'
ctrl-alt toggle mouse and keyboard grab
When using -nographic, press 'ctrl-a h' to get some help.
Packages installed:
libvirt-debug-0.6.3-1mdv2009.1
python-virtinst-0.400.3-1mdv2009.1
libvirt-utils-0.6.3-1mdv2009.1
virt-manager-0.7.0-2mdv2009.1
virt-viewer-0.0.3-2mdv2009.0
python-libvirt-0.6.3-1mdv2009.1
lib64virt0-0.6.3-1mdv2009.1
What could be wrong here?
--
Frederik Himpe
15 years, 6 months
[libvirt] [PATCH 1/2] Support for 'hostonly' and 'internal' network in VirtualBox
by Pritesh Kothari
Hi All,
I have added the support for hostonly and internal network as suggested on irc
and list and am attaching the patch for same.
PATCH 1/2: contains changes in the xml parsing/formatting on libvirt side
namely adding a mode attribute to <source> tag in domain/interface xml
PATCH 2/2: contains changes in the vbox driver itself.
Regards,
Pritesh
15 years, 6 months
[libvirt] USB pass-through only works after many disconnects at the beginning
by Felix Schwarz
Hi,
I want to pass through a USB device to a KVM guest (Windows 2000). My host OS
is a standard Fedora 10, 64 bit. However, the device is only passed to the
guest when I use qemu monitor directly and only after several tries...
The device has no Linux drivers ('AVM GmbH ISDN-Controller FRITZ!Card v2.0')
so I think I don't have to tell the kernel not to use it.
I have KVM 74 and tried initially with libvirt 0.5.1 so from what I read this
should be ok.
At first I added this to my domain xml via virsh:
<hostdev mode='subsystem' type='usb'>
<source>
<vendor id='0x....'/>
<product id='0x....'/>
</source>
</hostdev>
However, the device did not turn up in the guest.
Therefore I updated libvirt/-python 0.6.1 and python-virtinst from
updates-testing and recompiled virt-manager 0.7 from F11 because I read that
virt-manager 0.7 had some support for USB pass-through. Now I had some new UI,
but it turned out that using that did not produce better results...
After that I called qemu-kvm directly with '-usb -usbdevice host:...:...'.
qemu produced this output on my terminal:
husb: open device 2.9
husb: config #1 need -1
husb: 1 interfaces claimed for configuration -1
husb: grabbed usb device 2.9
husb: config #1 need 1
USBDEVFS_DISCONNECT: No such device
husb: device 2.9 disconnected
When I used qemu monitor to re-attach the device, something liek that happened
(re-attached multiple times):
husb: open device 2.11
husb: config #1 need -1
husb: 1 interfaces claimed for configuration -1
husb: grabbed usb device 2.11
husb: config #1 need 1
husb: 1 interfaces claimed for configuration 1
husb: config #1 need 1
USBDEVFS_DISCONNECT: No such device
husb: config #1 need 1
USBDEVFS_DISCONNECT: No such device
husb: config #1 need 1
USBDEVFS_DISCONNECT: No such device
husb: device 2.11 disconnected
...
Eventually (after several tries), the device was attached and no more
disconnects happened. After that I could use the device as expected.
However plain qemu is not what I would like to have. I read about 'virsh
attach-device' so I tried to use my usb hostdev snippet but to no avail (even
after 10s of tries).
So how can I use USB pass through? Could this be Windows-related? Judging from
all the other threads (like [1]) it should be really easy to use.
fs
[1] https://www.redhat.com/archives/libvir-list/2009-February/msg00387.html
15 years, 6 months
[libvirt] (no subject)
by mike.hinz@yr20.com
I had originally posted a plea for help on the virt-manager related list, but the same issue exists with virsh and this list seems to have higher traffic. I'd been chatting on the irc channel with various people about this, but wanted to put this on the mail list for the record and to also raise a philosophical question.
First, we've confirmed that Fedora 11 preview (fully updated) has an issue with properly mounting NFS shares without the noacl option. Fedora 10 works fine with regard to mounting NFS shares. That issue causes problems when attempting to write files to an NFS share and more importantly, for this group, causes problems when attempting to create an NFS based storage pool and then subsequently creating volumes on said NFS share. That bug is 499178. This was all figured out with Openfiler support and with the support of the fine folks working on libvirt and virt-manager. There is a somewhat ugly workaround for this and I can describe it in case anyone is interested.
Now comes the philosophy piece: It seems like that the way that libvirt and virt-manager want to handle storage is to be able to fully control the mounting process. That seems to me to be a very nice thing as you have a single way to manage storage along with your VMs. However, at least with respect to NFS, there are a number of parameters that people might need to give to the mount command for things like performance optimization and who knows what else. Note that this is a consideration completely aside from the bug issue above. It seems to me that either you have to just use the user created mount points, either manually or by fstab OR you have to allow all the possible options to be passed if you want to fully control the process. Right now, it's tricky to do, if you want to get paras passed for tuning or whatever and requires some tricky handwork to get it done.
One way to accomplish this from the user input perspective would be to add an 'options' input field that could take multiple parameters on the step 2 of 2 page of the 'add storage pool' function.
So, is my thinking all screwed up about this or is there merit to this concept? I tend to think, at least right now, that the logical thing is to either have the user create the mount points through the normal mechanisms that have in place roughly forever and then you just ask for what these are with respect to the NFS pools or you have to allow for user to pass the required parameters via your mechanism, although there are certainly many, many options when it comes to NFS.
Thanks for all the help to date! I hope the above is helpful!
Regards,
Mike Hinz
President
YR20
1718 Fry Road, Suite 440
Houston, TX 77084
mike.hinz(a)yr20.com
832-225-1293 (o)
713-594-3095 (m)
832-550-2657 (f)
15 years, 6 months
[libvirt] pool default not starting on f10
by Jason Guiditta
Hello, hopefully this is something simple I just don't understand how to
debug, but right now, it is keeping me from creating any new VMs. As
stated in the subject, I am running F10, on x86_64 arch. Libvirt
version is 0.6.1-5.fc10. Using virt-manager to create a new vm, when I
get to the step to create a disk image, I get the error:
'Storage parameter error. internal error storage pool is not active'.
Running
virsh pool-start default
gets me:
error: Failed to start pool default
error: out of memory
Note there is no reason my machine would be out of memory, is has 6GB
and nothing else running (and tried this right after booting)
virsh pool-list --all
shows default is inactive and 'yes' for autostart
I would be happy to file a bug if needed, but thought I would throw this
out to the list first to see if I was just unaware of some simple fix.
Let me know if there are other details I can provide to make this easier
to solve. Thanks,
-j
15 years, 6 months