KVM的qemu-kvm使用

Posted benjamin77

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KVM的qemu-kvm使用相关的知识,希望对你有一定的参考价值。

 
KVM:
    kvm,x86支持硬件辅助虚拟化技术(hvm)
grep -E "(vmx|svm)" /proc/cpuinfo
[[email protected] ~]# ll /dev/kvm
crw-rw-rw- 1 root kvm 10, 232 Dec  4 19:14 /dev/kvm
查看内核模块信息
modinfo kvm
modinfo kvm-intel
装载模块并查看(装载kvm模块就会顺带装载kvm-intel模块)
[[email protected] ~]# modprobe kvm
[[email protected] ~]# lsmod |grep kvm
kvm_intel             174841  0
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm
    管理工具栈:
        qemu-kvm
        libvirt (通用工具)
    管理Kvm虚拟的方案:
        qemu::由于这个工具不是红帽推荐使用的支持力度比较小,安装了qemu-kvm后,它的默认路径/usr/libexec/  (使用需要创建链接)
        libvirt::
            安装工具
                virt-install (命令行安装)
                virt-manager(图形安装)
            管理工具:
                virsh
                virt-manager
                virt-viewer 
 
使用qemu管理虚机 更接近底层管理。
 安装qemu-kvm
yum install qemu-kvm qemu-img -y
创建链接指向到默认路径
[[email protected] ~]# ln -sv /usr/libexec/qemu-kvm /usr/bin/
‘/usr/bin/qemu-kvm’ -> ‘/usr/libexec/qemu-kvm’
查看qemu的使用帮助
qemu-kvm -h
qemu-kvm :
qemu-kvm 【options】 【disk_image】
qemu-kvm使用文档
 
1.使用qemu-kvm管理kvm虚拟机
qemu是一个广泛使用的开源计算机仿真器和虚拟机,当作为仿真器时,可以再一种架构(如PC机)下运行另一种架构(如RAM)下的
操作系统和程序,而通过动态转换,其可以获得很高的运行效率,当作为一个虚拟机时,qemu可以通过直接使用真机的系统资源,
让虚拟系统能够获得物理机的性能表现,qemu支持xen或者kvm模式下的虚拟化,当用kvm时,qemu可以虚拟x86,服务器和嵌入式
powerpc,以及s390的系统。
 
qemu当运行于主机架构相同的目标架构时可以使用kvm,例如,当在一个x86兼容处理器上运行qemu-system-x86时,
可以利用KVM加速为宿主机和客户机提供更好的性能。
 
2.qemu有如下几个部分组成
  • 处理器模拟器(x86,PowerPC和Sparac)
  • 仿真设备(显卡,网卡,硬盘,鼠标等)
  • 用于将仿真设备连接至主机设备(真实设备)的通用设备
  • 模拟机的描述信息
  • 调试器
  • 与模拟器交互的用户接口
 
3.使用qemu-kvm安装guest
基于libvirt的工具如virt-manager和virt-install 提供了非常便捷的虚拟机管理接口,但他们事实上经二次开发后又封装了qemu-kvm的工具,因此,直接使用qemu-kvm命令也能够完成此前的任务。
 
Standard options: 标准选项(虚拟机自身,名字 cpu 内存)
  • -name 设定虚拟机的名称
  • -M machine: 指定要模拟的主机类型,如standard PC,ISA-only,PC或Intel-Mac等  可以使用 qemu-kvm -M ? 查看支持的类型
  • -cpu  指定的不是cpu的颗数,而是指定cpu的类型,可以使用qemu-kvm -cpu ? 查看支持的cpu类型
    • -smp  设定模拟器的SMP架构中CPU的个数等,每个cou的核心数及cpu的socket数目等,pc机上最多可以模拟255颗cpu,maxcpus用于指定热插入的cpu个数上限
  •  -numa opts: 指定模拟多结点的numa设备
  •  -fda file
  •  -fdb file  使用指定文件(file)作为软盘镜像,file为/dev/fd0 表示使用物理软驱:
  •  -hda file
  •  -hdb file
  •  -hdc file
  •  -hdd file
  •  -cdrom file : 使用指定file作为CD-ROM镜像,需要注意的是-cdrom和-hdc不能同时使用:将file指定为/dev/cdrom可以直接使用物理光驱
  •  -drive option[,option[,option[....]]]:定义一个硬盘设备:可用子选项有很多。
            file=/path/to/somefile :硬盘映像文件路径
            if=interface: 指定硬盘设备所连接的接口类型,即控制器类型,如ide,scsi,sd,mtd,floppy,pflash及virtio等:
            index=index:设定同一种控制器类型中不通设备的索引号,即标识号:
            media=media:定义介质类型为硬盘(disk)还是光盘(cdrom)
            snapshot=snapshot:指定当前硬盘设备是否支持快照功能:on或off
            cache=cache:定义如何使用物理机缓存来访问块数据,其可用值有none,writeback,unsafe和writethrough(通写)
            format=format:指定映像文件的格式,具体格式可参见qemu-img命令
  •  -boot [order=drivers][,once=drives][,menu=on|off] :定义设备的引导次序,每种设备使用一个字符表示,不通的架构所支持的设备及其表示字符不尽相同,在x86PC架构上,a、b表示软驱,c表示第一块硬盘,d表示第一个罐区设备,n-p表示网络适配器,默认为硬盘设备。
 
Block device options: 块设备选项  (磁盘)
USB options:  USB选项
Display options:  显示选项  
  • -nographic:默认情况下,qemu使用SDL来显示VGA输出,而此选项用于禁止图形接口,此时qemu类似一个简单的命令行程序,其仿真串口设备将被重定向到控制台。
  • -curses:禁止图形接口,并使用curses/ncurses作为交互接口
  • -alt-grab:使用ctrl+alt+shift组合键释放鼠标键
  • -sdl: 启用SDL  sdl:Simple DriectMeadia Layer: c语言开发,跨平台且开源多媒体程序库文件:在qemu 中使用 -sdl 即可
  • -spice option[,option[...]]:启用spice远程桌面协议:其有许多子选项,具体请参照qemu-kvm手册
  • -vga type:指定要仿真的VGA接口类型常见的类型有:
                cirrus: cirrus logic GD5446显示卡
                    std: 带有bochs VBI扩展的标准VGA显示卡:
                vmware: VMware SVGA-II 兼容的显示适配器:
                qxl:QXL半虚拟化显示卡:与VGA兼容,在GUEST中安装qxl驱动后能以很好的方式工作,在使用spice协议时推荐使用此类型
                none: 禁用VGA卡;
  • -vnc display[,option[,....]]:默认情况下,qemu使用SDL显示VGA输出:使用-vnc选线,可以让qemu监听在vnc上,并将VGA输出重定向到VNC会话,使用此选项时,必须使用-k选项指定键盘布局类型,其有许多子选项,具体参考qemu-kvm的手册
        display:
            1)host:N
                172.16.100.7:1,监听于172.16.100.7主机的5900+N的端口上
            2)unix:/path/to/socket_file
            3)none
        options:
            password:连接时需要验证密码:设定密码通过monitor接口使用change
            reverse:“反向”连接至某处于监听状态的vncview上:
        -monitor stdio:表示在表输入输出上显示monitor界面
        -nographic
            ctrl-a,c:在console和monitor之间切换
            ctrl-a,h:显示帮助信息
i386 target only:    x86平台上的专用选项
  • -no-acpi:禁用ACPI功能GuestOS与ACPI出现兼容问题时使用此选项
  • -balloon none:禁用balloon设备
  • -balloon virtio[,addr=addr]:启用virtio balloon设备
Network options:    网络选项
网络属性相关选项用于定义网络设备接口类型及其相关的各属性等信息,这里只介绍nic,tap和user三种类型网络接口的属性,其他类型参考kvm-qemu手册
  • -net nic[,vlan=n][,macaddr=mac][,model=type][,name=name][,addr=addr][,vectors=v]:
创建一个新的网卡设备并连接至vlan n中,pc架构上默认的NIC为e1000,macaddr用于为其制定MAC地址,name用于指定一个在监控时显示的网上设备名称:emu可以模拟多个类型的网卡设备,如virtio,i82551,i82557b,i82559er,ne2k_isa,pcnet,rtl18139,e1000,smc91c111,lance及macf_fec等:不过,不同平台架构上,其支持的类型可能只包含前述列表的一部分,可以使用“qemu-kvm -net nic,model=?”来获取当前平台支持的类型:
  • -net tap[,vlan=n][,name=name][,fd=h][,ifname=name][,script=file][,downscript=dfile]:通过物理机的TAP网络接口连接至vlan n中,使用script=file指定的脚本(默认为/etc/qemu-ifup)来配置当前网络接口,并使用downscript=file指定的脚本(默认为/etc/qemu-ifdown)来撤销接口配置:使用script=no和downscript=no可分别用来禁止执行脚本:
  • -net user[,option][,option][,...]:在用户模式配置网络栈:其不依赖于管理权限:有效选项有:
            vlan=n:连接至vlan n,默认n=0
            name=name:指定接口的显示名称,常用语监控模式中:
            net=addr[/mask]:设定GusetOS可见的IP网络,掩码可选,默认为10.0.2.0/8;
            host=addr:指定GuestOS中看到的物理机的IP地址,默认为网络中的第二个,即x.x.x.2
            dhcpstart=addr:指定DHCP服务地址池中16个地址的起始IP,默认为第16个第31个,即x.x.x.16-x.x.x.31
            dns=addr:指定GuestOS可见的dns服务器地址,默认为GuestOS网络中的第三个地址,即x.x.x.3
            tftp=dir:激活内置的tftp服务器,并使用指定的dir作为tftp服务器的默认根目录
            bootfile=file  BOOTP文件名称,用于实现网络引导GuestOS,如:qemu -hda linux.img -boot n -net user,tftp=/tftpserver/pub,bootfile=/pxelinux.0
 
Character device options: 字符设备选项(鼠标键盘)
Device URL Syntax:     基于iscsi的方式加载一个iscsi设备如何使用url指明
Bluetooth(R) options:    蓝牙设备选项(桌面虚拟化可能用到,服务器虚拟化用不到)
Linux/Multiboot boot specific: linux多启动特殊设备选项
Debug/Expert options:    专家模式专用选项
 
快捷键
ctrl-alt-f      toggle full screen   
ctrl-alt-n      switch to virtual console ‘n‘
ctrl-alt        toggle mouse and keyboard grab
 
cirros project:为cloud换将测试vm提供的微缩版Linux:
    启动一个虚拟:
qemu-kvm -m 128 -smp 2 -name test -hda /images/kvm/cirros-0.3.4-x86_64-disk.img
用-driver指定磁盘映像文件
qemu-kvm -m 128 -smp 2 -name "test" -drive file=cirros-0.3.4-x86_64-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback
通过cdrom启动winxp的 安装
qemu-kvm -name winxp -smp 4,sockets=1,croes=2,threads=2 -m 512 -drive file=/images/kvm/winxp.img,if=ide,media=disk,cache=writeback,format=qcow2 -drive file=/root/winxp_ghost.iso,media=cdrom
指定使用桥接网络接口
qemu-kvm -m 128 -name test -smp 2 -drive file=/images/kvm/cirros-0.3.4-i386-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2 -net nic -net tap,script=/etc/if-up,downscript=no -nographic
创建磁盘格式
qemu-img create -o ? -f qcow2 /images/window/winxp.qcow2
qemu-img create -o size=20G,preallocation=metadata -f qcow2 /images/window/win10.qcow2
 
 
选项说明:
    -smp 对称多处理器
    if   块设备的虚拟化方式,virtio 为半虚拟化
    media 介质设备类型
    cache 指定缓存类型
    format 磁盘映像的格式
    
查看镜像信息
[[email protected] kvm]# qemu-img info cirros-0.3.4-x86_64-disk.img
image: cirros-0.3.4-x86_64-disk.img
file format: qcow2
virtual size: 39M (41126400 bytes)
disk size: 13M
cluster_size: 65536
Format specific information:
    compat: 0.10
 
kvm创建虚机报错
[[email protected] kvm]# qemu-kvm -m 128 -smp 2 -name "test" -hda cirros-0.3.4-x86_64-disk.img
qemu: could not load PC Bios ‘bios-256k.bin‘
技术分享图片
解决方法:
[[email protected] kvm]# cd /usr/share/seabios
[[email protected] seabios]# ls
bios.bin
[[email protected] seabios]# cp bios.bin bios-256k.bin
[[email protected] seabios]# ls
bios-256k.bin  bios.bin
设置一下xshell的隧道转发
 技术分享图片
再次创建
[[email protected] kvm]# qemu-kvm -m 128 -smp 2 -name "test" -hda cirros-0.3.4-x86_64-disk.img
VNC server running on `::1:5900‘
::1 表示只能监听本机的连接
 
安装vnc客户端
技术分享图片

[[email protected] ~]# yum install tigervnc -y

技术分享图片

切换到管理员用户

 技术分享图片

查看虚机地址

 技术分享图片

ctl+alt+2 切换到监控视图下 ctl+alt+1切换到命令行视图
info命令

 技术分享图片

开启一个虚拟机实际是在宿主机上创建了一个qemu-kvm进程 ,关闭虚机只需要杀死对应的进程
 
使用 -hda指定的磁盘太垃圾,所以出现 -driver file=磁盘镜像  用逗号隔开可以指定一堆选项
 
 

以上是关于KVM的qemu-kvm使用的主要内容,如果未能解决你的问题,请参考以下文章

KVM的qemu-kvm使用

KVM虚拟化:使用qemu-kvm创建和管理虚拟机

qemu-kvm部署虚拟机

51 kvm技术基础使用qemu-kvm管理kvm虚拟机

CentOS 7.3 中使用qemu-kvm创建虚拟机

Qemu-kvm的网络模式