KVM命令使用
convirt 的创建虚拟机命令:
kvm -hda /nfs/rhel_150.disk.xm -cdrom /nfs/rhel-server-6.0-x86_64-dvd.iso -net nic,vlan=0,macaddr=00:16:3e:11:64:7f,model=rtl8139 -net tap,vlan=0,script=/etc/kvm/qemu-ifup-br0 -net nic,vlan=1,macaddr=00:16:3e:4a:3b:b0,model=rtl8139 -net tap,vlan=1,script=/etc/kvm/qemu-ifup-br0 -usb -boot c -m 2048 -vnc :20 -name rhel_150 -usbdevice tablet -smp 4 -monitor unix:/var/run/kvm/monitors/rhel_150,server,nowait -pidfile /var/run/kvm/pids/rhel_150 -daemonize
-hda /nfs/rhel_150.disk.xm 使用的硬盘镜像
-cdrom /nfs/rhel-server-6.0-x86_64-dvd.iso 挂载的光盘镜像
-net nic,vlan=0,macaddr=00:16:3e:11:64:7f,model=rtl8139 虚拟网卡0的网卡选项
创建一个新的网卡并与VLAN n(在默认的情况下n=0)进行连接.在PC机上,NIC当前为NE2000.作为可选项的项目,MAC地址可以进行改变.如果没有指定-net选项,则会创建一个单一的NIC.
-net tap,vlan=0,script=/etc/kvm/qemu-ifup-br0
将TAP网络接口name与VLAN n进行连接,并使用网络配置脚本file进行配置.默认的网络配置脚本为/etc/qemu-ifup.如果没有指定name,OS 将会自动指定一个.fd=h可以用来指定一个已经打开的TAP主机接口的句柄.
tap类型网络,相当于“桥模式”
-net nic,vlan=1,macaddr=00:16:3e:4a:3b:b0,model=rtl8139 虚拟网卡1的网卡选项
-net tap,vlan=1,script=/etc/kvm/qemu-ifup-br0
-usb 支持usb设备 很快将变成默认的选项
-boot c 启动顺序 c表示 光盘硬盘
-m 2048 内存2048M
-vnc :20 这里是在5920端口。client可用IP:20连接??
-name rhel_150 虚拟机的别名,便于识别
-usb -usbdevice tablet 启用usb设备中的tablet功能。开启该功能可使虚拟机内外的鼠标同步。
-smp 4 vcpu个数为4个
-monitor unix:/var/run/kvm/monitors/rhel_150,server,nowait
重定向临视器到主机的设备dev(与串口相同的设备)。在图形模式下的默认设备为vc,而在非图形模式下为stdio
-pidfile /var/run/kvm/pids/rhel_150
在file文件中存许Qemu的进程PID.如果我们是由脚本启动的,这个选项是相当有用的.
-daemonize
守护进程化
创建一个Win7的虚拟主机
# qemu-kvm -m 1024 -localtime -M pc -smp 1 -drive file=Windows7_x86.img,cache=writeback,boot=on -net nic,macaddr=52:54:00:12:34:80 -net tap -cdrom Windows7.iso -boot d -name kvm-win7,process=kvm-win7 -vnc :2 -usb -usbdevice tablet
s
使用vnc
# qemu-kvm -m 512 -hda xp.img -net nic,macaddr=00:00:11:33:02:02 /
-net tap,ifname=tap2,script=/etc/init.d/qemu-ifup /
-localtime -vnc 172.16.70.30:2 --daemonize
上面让kvm虚拟机在后台运行,并启动vnc服务器,这样我们可以用vnc客户端链接172.16.70.30:5092这个地址。
QEMU选项:
一般选项
- -M machine
- 选择模拟的机器(我们可以输入-M?提到一个模拟的机器列表)
- -fda file
- -fdb file
- 使用file作为软盘镜像.我们也可以通过将/dev/fd0作为文件名来使用主机软盘.
- -hda file
- -hdb file
- -hdc file
- -hdd file
- 使用file作为硬盘0,1,2,3的镜像.
- -cdrom file
- 使用文件作为CD-ROM镜像(但是我们不可以同时使用'-hdc'和'-cdrom').我们可以通过使用'/dev/cdrom'作为文件名来使用主机的CD-ROM.
- -boot [a|c|d]
- 由软盘(a),硬盘(c)或是CD-ROM(d).在默认的情况下由硬盘启动.
- -snapshot
- 写入临时文件而不是写入磁盘镜像文件.在这样的情况下,并没有写回我们所使用的磁盘镜像文件.然而我们却可以通过按下C-a s来强制写回磁盘镜像文件.
- -m megs
- 设置虚拟内存尺寸为megs M字节.在默认的情况下为128M.
- -smp n
- 模拟一个有n个CPU的SMP系统.为PC机为目标,最多可以支持255个CPU.
- -nographic
- 在通常情况下,Qemu使用SDL来显示VGA输出.使用这个选项,我们可以禁止所有的图形输出,这样Qemu只是一个简单的命令行程序.模拟的串口将会重定向到命令行.所以,我们仍然可以在Qemu平台上使用串口命令来调试Linux内核.
- -k language
- 使用键盘布局语言(例如fr为法语).这个选项只有在不易得到PC键盘的情况下使用.我们在PC/Linux或是PC/Windows主机不需要使用这个选项.默认的为en-us,可用的布局如下:
ar de-ch es fo fr-ca hu ja mk no pt-br sv
da en-gb et fr fr-ch is lt nl pl ru th
de en-us fi fr-be hr it lv nl-be pt sl tr
- -audio-help
- 这个选项将会显示声音子系统的帮助:驱动列表以及可调用的参数.
- -soundhw card1,card2 .... or -soundhw all
- 允许声音并选择声音硬件.使用?可以列出所有可用的声音硬件
qemu -soundhw sb16,adlib hda
qemu -soundhw es1370 hda
qemu -soundhw all hda
qemu -soundhw ?
- -localtime
- 设置时钟为本地时间(默认为UTC时间).如果在MS-DOS或是Windows上这个选项则需要正确的日期.
- -full-screen
- 以全屏方式启动.
- -pidfile file
- 在file文件中存许Qemu的进程PID.如果我们是由脚本启动的,这个选项是相当有用的.
- -win2k-hack
- 当安装Windows 2000时可以使用这个选项来避免磁盘错误.在安装上 Windows 2000系统,我们就不再需要这个选项(这个选项降低IDE的传输速度).
USB选项
- -usb
- 允许USB驱动(很快就将成为默认的选项)
- -usbdevice devname
- 添加USB设备名.我们可以查看监视器命令usb_add来得到更为详细的信息.
网络选项
- -net nic[,vlan=n][,macaddr=addr]
- 创建一个新的网卡并与VLAN n(在默认的情况下n=0)进行连接.在PC机上,NIC当前为NE2000.作为可选项的项目,MAC地址可以进行改变.如果没有指定-net选项,则会创建一个单一的NIC.
- -net user[,vlan=n]
- 使用用户模式网络堆栈,这样就不需要管理员权限来运行.如果没有指定-net选项,这将是默认的情况.
- -net tap[,vlan=n][,fd=h][,ifname=name][,script=file]
- 将TAP网络接口name与VLAN n进行连接,并使用网络配置脚本file进行配置.默认的网络配置脚本为/etc/qemu-ifup.如果没有指定name,OS 将会自动指定一个.fd=h可以用来指定一个已经打开的TAP主机接口的句柄.例如:
qemu linux.img -net nic -net tap
下面的是一个更为复杂的例子(两个NIC,每一个连接到一个TAP设备):
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 /
-net nic,vlan=1 -net tap,vlan=1,ifname=tap1
- -net socket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port]
- 使用TCP socket 将VLAN n与远程的另一个Qemu虚拟机的VLAN进行连接.如果指定了listen,Qemu将在port端口监听连入请求(host是可选的), connect可以用来使用listen选项与另一个Qemu实例进行连接.fd=h指定了一个已经打开的TCP socket.例如:
# launch a first QEMU instance
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234
# connect the VLAN 0 of this instance to the VLAN 0 of the first instance
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net
socket,connect=127.0.0.1:1234
- -net socket[,vlan=n][,fd=h][,mcast=maddr:port]
- 创建一个VLAN n,并使用UDP 多址通信套掊口与其他的QEMU虚拟机进行共享,尤其是对于每一个使用多址通信地址和端口的QEMU使用同一个总线. 在这里我们要注意以下几点:
- 几个QEMU可以运行在不同的主机上但却使用同一个总线(在这里假设为这些主机设置了正确的多址通信)
- mcast支持是与用户模式Linux相兼容的.
- 使用fd=h指定一个已经打开的UDP 多址通信套接口.
例如:
# launch one QEMU instance
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net
socket,mcast=230.0.0.1:1234
# launch another QEMU instance on same "bus"
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net
socket,mcast=230.0.0.1:1234
# launch yet another QEMU instance on same "bus"
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 -net
socket,mcast=230.0.0.1:1234
下面的为用户模式Linux的例子:
# launch QEMU instance (note mcast address selected is UML's default)
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net
socket,mcast=239.192.168.1:1102
# launch UML
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
- -net none
- 表明没有网络设备需要进行配置.如果没有指定-net选项,则会用来覆盖活跃的默认配置.
- -tftp prefix
- 当使用用户模式网络堆栈,激活一个内置的TFTP服务器.所有的以 prefix开始的文件将会使用一个TFTP客户端从主机下载到本地.在本地的TFTP客户端必须以二进制模式进行配置(使用Unix的TFTP客户端的bin命令).在客户机上的主机IP地址如通常的10.0.2.2.
- -smb dir
- -redir [tcp|udp]:host-port:[guest-host]:guest-port
- 当使用用户模式网格栈,将连接到主机端口host-port的TCP或是UDP 连接重定向到客户机端口guest-port上。如果没有指定客户机端口,他的值为10.0.2.15(由内建的DHCP服务器指定默认地址)。例如:要重定向从screen 1到客户机screen 0的X11连接,我们可以使用下面的方法:
# on the host
qemu -redir tcp:6001::6000 [...]
# this host xterm should open in the guest X11 server
xterm -display :1
To redirect telnet connections from host port 5555 to telnet port on
the guest, use the following:
# on the host
qemu -redir tcp:5555::23 [...]
telnet localhost 5555
然后当我们在主机telnet localhost 5555上使用时,我们连接到了客户机的telnet服务器上。