Linux下虚拟机qemu的使用,kvm虚拟化技术【美高梅
分类:关于美高梅

制作KVM-qemu调试平台的步骤:

NOTE:我的主机是Ubuntu 12.04 Desktop i386 我想安装KVM Qemu 然后新建虚拟主机Ubuntu 12.04 Server x86_64

虚拟机qemu的使用

一.虚拟化技术的介绍

1.解压缩新版kvm:tar -xzvf qemu-kvm-0.13.0.tar.gz

1)查看cpu是否支持。

Redflag Workstation 下已经带了qemu

(1)虚拟化技术类型:

1.主机虚拟化:xen,kvm.virtualbox.openv
2.系统虚拟化:wine
3.容器(用户隔离空间):lxc(Linux container),openv
4.应用程序级虚拟化:jvm,pvm
5.模拟器:qemu

2.解决依赖sudo apt-get build-dep qemu-kvm

www.linuxidc.com @linuxidc:/opt$ grep vmx /proc/cpuinfo

#qemu-img create windows.img 2G #这个就是创建虚拟机磁盘,2G大小

(2)主机虚拟化

3.配置安装路径:./configure—prefix=/usr/local/kvm

flags标记中存在vmx即可

#qemu -hda windows.img -cdrom /dev/acd0 -boot d -m 512 -enable-audio -localtime

1.CPU:

模拟:emulation, 虚拟机的arch与物理平台的arch可以不相同;qemu;
虚拟:virtualization
完全虚拟化(full-virt)
BT: 二进制转换 (软件)
HVM:硬件辅助的虚拟化(硬件)
半(准)虚拟化 (para-virt)
GuestOS得明确知道自己运行于虚拟化技术

make

2)安装kvm+qemu

-hda 是指定硬盘

2.cpu环的概念

cpu环0,cpu环1,cpu环2,cpu环3

搜狗截图20171202162920.png

解释:cpu从里到外分为环0,环1,环2,环3,一般情况下环和环2不进行工作,环3会执行一些简单的普通命令,而环0则执行一些特殊命令。例如执行一个计算命令2*3,该命令就会直接在环3上执行,但是一旦关机后该结果就会消失,如果想要执行io读写命令,此时环0就会工作,将计算结果存储到磁盘上,这一过程的实现是通过环0能够执行特殊指令去调用内核空间实现存储。,而用户空间没有权限执行。
注意:对此引入了cpu级别的硬件虚拟化概念,就是在环0内又加入了环-1,环0用来运行虚拟机的操作系统,而环-1则运行宿主机的操作系统。因此常常以cpu环是否存在环-1来判断该系统是否支持虚拟化

sudo make install

www.linuxidc.com @linuxidc:/opt$ sudo apt-get install kvm qemu libvirt-bin virtinst virt-manager virt-viewer

-cdrom 指定使用光驱,这个参数后面必须要跟个文件名,可以是物理光驱/dev/hda,可以使用ISO文件,为文件的路径

3.主机虚拟化类型

  • TYPE-I:基于硬件级别直接运行hypervisor
    例: xen,vmware,ESX/ESXI
    Hypervisor:是一种运行在物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享一套基础物理硬件,因此也可以看作是虚拟环境中的"元"操作系统,它可以协调访问服务器上的所有物理设备和虚拟机,也叫虚拟机监视器(Virtual Machine Monitor)。Hypervisor是所有虚拟化技术的核心。非中断地支持多工作负载迁移的能力是Hypervisor的基本功能。当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。
  • TYPE-II:
    于硬件级别运行一个OS(Host OS),而此OS上运行一个VMM;
    例:vmware workstation, virtualbox, kvm
  • Linux目前流行的开源虚拟化技术解决方案:
    主机虚拟化:xen, kvm, virtualbox
    容器级:lxc, libcontainer, runC, openvz
    模拟器:qemu
  • KVM的组件:
    kvm.ko:模块
    API:系统应用接口,系统留给应用程序的一个调用接口
    qemu-kvm:用户空间的工具程序
    qemu-kvm是一个开源仿真器,为kvm虚拟机监控程序提供了硬件仿真
    libvirt:是一套免费的,开源的支持linux系统的主流虚拟化工具的C函数库,其为包括xen,kvm等各种虚拟化工具提供一套方便的可靠的编程接口,本身属于工具,而是一种可以建立工具来管理客户操作系统的API

4.安装好后,加载模块

3) 查看kvm是否安装成功。

-m 是指定虚拟机使用的内存大小,如512M

4.快速使用kvm技术

  • 首先yum install libvirt-daemonize-kvm qemu-kvm virt-manager

    搜狗截图20171202170555.png

  • 此时加载kvm模块,modprobe kvm

  • systemctl start libvirtd.service
  • grep -i -E '(vmx|svm|lm)' /proc/cpuinfo——cpu是否支持虚拟化

    搜狗截图20171202171118.png

  • lsmod |grep kvm——查看kvm类型

    搜狗截图20171202171426.png

  • 创建一个物理网桥
    拓扑图解释原理:

    搜狗截图20171202174517.png

    因此在创建虚拟机之前要先创建一个虚拟网卡(物理网桥),这是因为在安装虚拟机操作系统时,需要安装PXE系统,那么就需要该虚拟机具有外部通讯的功能,只有这样才能DhCP获取ip地址从而实现自动化安装,物理网桥的作用就是一个虚拟网卡,通过物理交换机和外部进行信息的交换与通讯

  • cd /etc/sysconfig/network-scripts
    vim ifcfg-ens37
    NAME=ens37
    DEVICE=ens37
    ONBOOT=yes
    IPADDR=172.18.250.223——将该地址删除,没有ip地址就相当于一个交换机/
    BRIDGE=br0——网桥为br0

  • Vim ifcfg-br0——创建物理网桥
    NAME=br0
    DEVICE=br0
    ONBOOT=yes
    IPADDR=172.18.250.223
    DNS=172.18.0.1
    PREFIX=16
    此时br0被设置成物理网桥(虚拟网卡)
  • 重启network
    ip a

    搜狗截图20171202175618.png

    brctl show

    搜狗截图20171202175749.png

  • 在 VMware Workstation上
    virt-manager

    搜狗截图20171202180152.png

    创建虚拟机

    搜狗截图20171202200739.png


    选择内存大小和cpu数量

    搜狗截图20171202200839.png


    选择虚拟机磁盘大小

    搜狗截图20171202200931.png

    配置主机名,选择网桥

    搜狗截图20171202201041.png


    开始安装

    搜狗截图20171202201118.png


    实现快速安装

5.总结

虚拟化技术的分类:
(1) 模拟:Emulation
Qemu, PearPC, Bochs, ...
(2) 完全虚拟化:Full Virtualization,Native Virtualization
BT/hvm
VMWare Workstation, VirtualBox, VMWare Server, Parallels Desktop, KVM(hvm), XEN(hvm)
(3) 半虚拟化:Para-Virutalization
特点:GuestOS(运行在虚拟机上的操作系统)明确知道自己运行虚拟机之上;
xen, UML(user-mode linux)
(4) 容器级虚拟化:
LXC, OpenVZ, libcontainer, runC, rkt, Linux V Servers, Virtuozzo, ...
(5) 库级别虚拟化:
wine
(6) 程序级虚拟化
jvm, pvm, ...

sudo modprobe kvm

www.linuxidc.com @linuxidc:/opt$ sudo virsh -c qemu:///system list

-boot 指定虚拟机启动用的设备,-boot后可以选择的参数是 a ,c ,d .其中a 是指从软盘启动,c 就是用硬盘启动,d 是光驱启动。

二.通过磁盘镜像文件实现虚拟机的下载

(1)镜像文件的下载地址:https://launchpad.net/cirros/
下载的镜像文件:http://download.cirros-cloud.net/0.3.0/cirros-0.3.0-x86_64-disk.img
(2)在宿主机上执行qemu-img -h来查看磁盘镜像文件的格式及创建选项,一般使用qcow2格式。其中co=copy,w=write.是一种非常高级的格式,支持镜像文件的压缩加密及快照等功能
(3)开始创建
mkdir -pv /app/vm/images,cd到该目录下
开始执行qemu-img create -f qcow2 -o ? /app/vmtest.qcow2
解释上述命令:创建磁盘镜像文件时需要的选项并且如何查询帮助,-f代表文件的格式类型,-o代表选项并且后面要加?,后面要接preallocation,表示有关镜像文件的分配,其中off表示不分配内容,使用时再分配,而metadata表示只分配元数据,full表示指定分配多大空间。一般情况下选择metadata
具体的命令操作: qemu-img create -f qcow2 -0 size=120G,preallocation=metadata /app/vmtest.qcow2
创建成功后执行ll -h来查看

搜狗截图20171202211151.png


(4)开始图形化安装虚拟机
virt-manager
其他选择与之前快速安装虚拟机类似,只是在选择磁盘大小时选择第二个select or create cutom storage
然后加入路径 /app/vmtest.qcow2
然后其他选项不变进行安装即可
(5)以上方式是人为自创建得一个镜像文件,接下来通过下载的镜像的文件来实现
(6)mkdir /app/vm/iamges2,将cirros-0.3.0-x86_64-disk.img镜像文件下载当前目录下,并且 cp cirros-0.3.0-x86_64-disk.img
c1.img 和c2.img
通过qemu-img info c1.img来查看信息

搜狗截图20171202213331.png


在物理机上执行virt-manager

搜狗截图20171202213446.png


选择虚拟机镜像文件路径

搜狗截图20171202213546.png


配置内存大小和cpu数量

搜狗截图20171202213605.png


修改主机名,选择网桥等选项后开始安装
出现如图选项后根据默认的用户名和密码进行登录

搜狗截图20171202214114.png


进行sudo su -切换成root用户
ip a 发现已经配置好网址,此时可以利用c2.img再创建一个虚拟机进行相互之间的通讯

sudo modprobe kvm-intel / kvm-amd,以CPU类型为准

4)创建 kvm文件夹。

-enable-audio

三.使用qemu-kvm来手动安装虚拟机

5./usr/local/kvm/bin/qemu-imgcreate -f qcow2 name.img 10G

www.linuxidc.com @linuxidc:/opt$ sudo mkdir /opt/kvm

-localtime 使用实际主板bios上的时间。

(1)使用qemu-kvm管理vms:

Qemu:
处理器模拟器
仿真各种IO设备
将仿真设备连接至主机的物理设备
提供用户接口

//-fqcow2的意思是创造一个文件,最大大小是10G
//create意思是创建一个新的磁盘,-f指定该磁盘的类型,可以创建raw的,也可以创建vmware兼容的, //这里选择qcow2,qemu自己的类型来安装系统,接下里的参数就是虚拟磁盘的文件名,可以放在你喜欢的 //任何地方,然后就是磁盘初始大小,一般5G,10G
//都可以,qemu的磁盘大小是随着需要可以自动的增大的,所以初始可以选择小点。

5)用qemu-img命令创建一个虚拟磁盘。

应该可以顺利的进入虚拟机了,并开始安装了。

(2)标准选项的介绍

qemu-kvm命令语法:
qemu-kvm [options] [disk_image]
选项有很多类别:
标准选项、块设备相关选项、显示选项、网络选项、...

  • 标准选项:
    -machine [type=]name:-machine help来获取列表,用于指定模拟的主机类型;
    -cpu cpu:-cpu help来获取列表;用于指定要模拟的CPU型号;
    -smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]:指明虚拟机上vcpu的数量及拓扑;
    -boot [order=drives][,once=drives][,menu=on|off] [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]
    order:各设备的引导次序:c表示第一块硬盘,d表示第一个光驱设备;-boot order=dc,once=d
    -m megs:虚拟机的内存大小;
    -name NAME:当前虚拟机的名称,要惟一;
  • 块设备相关的选项:
    -hda/-hdb file:指明IDE总线类型的磁盘映射文件路径;第0和第1个;
    -hdc/-hdd file:第2和第3个;
    -cdrom file:指定要使用光盘映像文件;
    -drive [file=file][,if=type][,media=d][,index=i] [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]:
    file=/PATH/TO/SOME_IMAGE_FILE:映像文件路径;
    if=TYPE:块设备总线类型,ide, scsi, sd, floppy, virtio,...
    media=TYPE:介质类型,cdrom和disk;
    index=i:设定同一类型设备多个设备的编号;
    cache=writethrough|writeback|none|directsync|unsafe:缓存方式;
    format=f:磁盘映像文件的格式;
  • 显示选项:
    -display type:显示的类型,sdl, curses, none和vnc;
    -nographic:不使用图形接口;
    -vga [std|cirrus|vmware|qxl|xenfb|none]:模拟出的显卡的型号;
    -vnc display[,option[,option[,...]]]]:启动一个vnc server来显示虚拟机接口; 让qemu进程监听一个vnc接口;
    display:
    (1) HOST:N
    在HOST主机的第N个桌面号输出vnc;
    5900+N
    (2) unix:/PATH/TO/SOCK_FILE
    (3) none
    options:
    password:连接此服务所需要的密码
    -monitor stdio:在标准输出上显示monitor界面;
    Ctrl-a, c:在console和monitor之间切换;
    Ctrl-a, h

//name.img中name是虚拟磁盘名字

www.linuxidc.com @linuxidc:/opt$ qemu-img create -f qcow2 kvm/ubuntu1204.img 10G

Redflag Workstation 下已经带了qemu

(3)qemu-kvm的使用

1.首先如果要执行qemu-kvm命令时,要先执行 in -sv /usr/libexec/qemu-kvm /usr/bin/,链接到/usr/bin/的path路径,可以让qemu-kvm命令生效
2.开始执行命令
qemu-kvm -name c2 -m 64 -smp 2,cores=1(内核数),sockets=1(槽数) -drive file=/vm/images2/c2.img,if=virtio(半虚拟化),media=disk -nographic(不启用图形)
开启之后会进行30多次的连接失败后,才能成功登陆,然后进入虚拟机状态
执行ctrl -a x:退出模拟器状态
ctrl -a h :查看帮助
ctrl -a c :宿主机与虚拟机之间进行切换
3.针对上述情况如果想要快速登录,则要在ftp上下载cirros-0.3.0-i386-disk.img(经过处理后的镜像)
mkdir -pv /app/vm/images3/,并cd 该目录下
cp cirros-0.3.0-i386-disk.img c1.img c2.img
4.yum install tigervnc
执行命令:qemu-kvm -name c1 -smp 2 -m 64 -drive file=/app/vm/images3/c1.img,if=virtio,media=disk -vnc :0(代表vnc监听的端口默认为5900,其中最后一个0代表第一个终端) -daemonize

搜狗截图20171202221302.png

在物理机上执行vncviewer :0,虚拟机登陆成功

6.虚拟磁盘创建好了,我们就可以安装系统了。在name.img中安装操作系统

NOTE:create意思是创建一个新的磁盘,-f指定该磁盘的类型,可以创建raw的,也可以创建vmware兼容的,这里选择qcow2,qemu自己的类型来安装ubuntu,接下里的参数就是虚拟磁盘的文件名,可以放在你喜欢的任何地方,然后就是磁盘初始大小,一般5G,10G都可以,qemu的磁盘大小是随着需要可以自动的增大的,所以初始可以选择小点。

#qemu-img create windows.img 2G #这个就是创建虚拟机磁盘,2G大小

四.网络选项的设置

首先,打开在bios的advance中的VT技术,有的机器CPU没有VT技术。从kvm的官方网站上可知,无论386还是64位的机器都用qemu-system-x86_64,接下来:

6 ) 下载镜像包并且安装虚拟机操作系统。

#qemu -hda windows.img -cdrom /dev/acd0 -boot d -m 512 -enable-audio -localtime

(1)网络选项:

-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
为虚拟机创建一个网络接口,并将其添加至指定的VLAN;model=type:指明模拟出的网卡的型号,ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio;
-net nic,model=?
macaddr=mac:指明mac地址;52:54:00:
-net tap[,vlan=n][,name=str][,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile]:
通过物理的TAP网络接口连接至vlan n;
script=file:启动虚拟机时要执行的脚本,默认为/etc/qemu-ifup
downscript=dfile:关闭虚拟机时要执行的脚本,/etc/qemu-ifdown
ifname=NAME:自定义接口名称;
/etc/qemu-ifup

#!/bin/bash
#
bridge=br0
if [ -n "$1" ];then
ip link set $1 up
sleep 1
brctl addif $bridge $1
[ $? -eq 0 ] && exit 0 || exit 1
else
echo "Error: no interface specified."
exit 1
fi  

其它选项:
-daemonize:以守护进程运行;

sudo/usr/local/kvm/bin/qemu-system-x86_64-hda ./name.img -cdrom ./Ubuntu.iso -boot d -m 1024-no-acpi
//-hda指定了ubuntu的硬盘是那个虚拟磁盘,这里用我们刚刚创建的name.img
//-cdrom指定cdrom是那一个,可以用iso文件,也可以用机器的光驱,我们选择用iso文件,如果用光驱尝试-//cdrom/dev/cdrom
//-boot指定ubuntu启动的时候从磁盘、硬盘,光驱还是网路上启动,我们安装的时候选择从光盘启动,所以用d
//-m虚拟机使用的内存大小,单位是MB,默认是128mb,我用的是1024
//-no-acpi由于qemu支持不太好会导致系统很慢,所以我们暂时禁止掉。
//具体的其他参数可以用man来查看qemu-system-x86_64的说明

www.linuxidc.com @linuxidc:/opt/kvm$ wget -c

-hda 是指定硬盘

(2)通过网络选项实现创建虚拟机

也可以尝试:

#

-cdrom 指定使用光驱,这个参数后面必须要跟个文件名,可以是物理光驱/dev/hda,可以使用ISO文件,为文件的路径

1.cd /app/vm/images3 cp c2.img c3.img

vim /etc/qemu-ifup

#!/bin/bash
#
 bridge=vnet0
 if [ -n "$1" ];then
 ip link set $1 up
  sleep 1
  brctl addif $bridge $1
  [ $? -eq 0 ]&& exit 0 || exit 1
  else
  echo "Error: no interface specified."
  exit 2
  fi

安装系统img,斜体字部分要根据自己情况改:

www.linuxidc.com @linuxidc:/opt/kvm$ sudo qemu-system-x86_64 -hda /opt/kvm/ubuntu1204.img -cdrom /opt/kvm/ubuntu-12.04-server-amd64.iso -boot d -m 1024 -no-acpi

-m 是指定虚拟机使用的内存大小,如512M

2.创建物理网桥(虚拟网卡)

brctl addbr vnet0
ip link set vnet0 up

搜狗截图20171202222550.png

vim /etc/qemu-ifdown——拆除网卡

#!/bin/bash
#
 bridge=vnet0
 if [ -n "$1" ];then


  brctl delif $bridge $1
  [ $? -eq 0 ]&& exit 0 || exit 1
  else
  echo "Error: no interface specified."
  exit 2
  fi

注意:两个脚本都要加执行权限

sudo/usr/local/kvm/bin/qemu-system-x86_64

-hda指定了硬盘是那个虚拟磁盘,这里用我们刚刚创建的ubuntu1204.img

-boot 指定虚拟机启动用的设备,-boot后可以选择的参数是 a ,c ,d .其中a 是指从软盘启动,c 就是用硬盘启动,d 当然就是光驱启动了。

3.执行命令

  • qemu-kvm -name c1 -m 64 -smp 2 -drive file=/app/vm/images3/c1.img,if=virtio,media=disk -vnc :0 -daemonize -net nic,model=e1000,macaddr=52:54:00:00:00:10(mac地址52:54:00:00为固定的) -net tap,script=/etc/qemu-ifup
  • qemu-kvm -name c2 -m 64 -smp 2 -drive file=/app/vm/images3/c2.img,if=virtio,media=disk -vnc :0 -daemonize -net nic,model=e1000,macaddr=52:54:00:00:00:11(mac地址要改变)-net tap,script=/etc/qemu-ifup
    在物理机上执行vncviewer :0

    搜狗截图20171202223736.png

    为了实现通讯为该虚拟机配置ip地址
    ifconfig eth0 10.1.0.1/24 up
    在另一台虚拟机上 ifconfig eth0 10.1.0.2/24 up
    此时两台虚拟机可以进行Ping命令

4.为vnet0配置ip地址

ifconfig vnet0 10.1.0.254/24 up
此时vnet0网卡既可以作为交换机,也可以作为虚拟网卡
拓扑图解释:

搜狗截图20171202224837.png

在宿主机上创建了一个网桥(vnet0),如果不给这个网桥配置ip地址,那就相当于一个交换机,两个虚拟机通过交换机可以进行ping命令,但是不能和宿主机进行通讯,因此为网桥配置ip地址后就可以实现虚拟机与宿主机之间的通讯了,此时就相当于一个仅主机模式,如果通过iptables策略开启snat策略实现跳转的话,就可以和外部进行通讯,此环境就相当于nat模式

-drivefile=./ubuntu.img,cache=writeback,aio=native #指定硬盘,优

-cdrom指定cdrom是那一个,可以用iso文件,也可以用机器的光驱,我们选择用iso文件,如果用光驱尝试-cdrom /dev/cdrom

-enable-audio

5在虚拟机上分别将网关指向虚拟网卡的ip地址

ip route add default via 10.1.0.254/24
此时虚拟机和宿主机就可以实现ping命令,此时相当于一个仅主机模式,如果想要实现nat模式就要设置ipatbles策略
开启宿主机的路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
添加iptables的snat规则
iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -j SNAT --to-source 172.18.250.223
此时在虚拟机上ping 172.18.0.1可以Ping通

化性能

-boot指定启动的时候从磁盘,硬盘,光驱还是网路上启动,我们安装的时候选择从光盘启动,所以用d

-localtime 使用实际主板bios上的时间。

五.实现虚拟机的自动分配地址

(1)首先查看netns帮助
ip netns help

搜狗截图20171203151626.png

netns主要是可以创建一个新的空间,创建一个新的网络环境
例: ip netns add router0——创建一个名为router0的网络空间,和宿主机无关系
使用ip netns exec router0 ifconfig -a来查看新创建的空间

搜狗截图20171203152136.png


(2)为router0添加虚拟网卡
ip linkn add myeth1 type veth peer name myeth2
创建的网卡是成对出现

ip a查看

搜狗截图20171203152629.png


(3)将其中一个网卡添加到router0的网络空间中
ip link add myeth2 netns router0

搜狗截图20171203152808.png


(4)修改网卡名
ip netns exec router0 ip link set dev myeth2 name eth0 ——将router0中的myeth2改名为eth0

搜狗截图20171203153213.png


(5)为网卡配置ip地址
ip netns exec router0 ifconfig eth0 10.2.0.253/24 up
ifconfig myeth1 10.2.0.252/24 up

搜狗截图20171203153718.png


ping命令测试

搜狗截图20171203153755.png

以上操作属于容器类型的虚拟化,作为了解,下面介绍虚拟机的自动获取ip地址的方式

-cdrom~/Backup/ubuntu-10.10-desktop-i386.iso #光驱加载镜像

-m虚拟机使用的内存大小,单位是MB,默认是128mb,我用的是1024。

应该可以顺利的进入虚拟机了,并开始安装了。

dnsmasq

通过dnsmasq实现自动获取ip地址
yum install dnsmasq
命令: dnsmasq --listen-address 10.2.0.253,127.0.0.1 --dhcp-range=10.1.0.11,10.1.0.50,24h(地址有效时间) --dhcp-option=3(就是网关的意思),10.2.0.253
qemu-kvm -name c1 -m 64 -smp 2 -drive file=/app/vm/images3/c1.img,if=virtio,media=disk -vnc :0 -daemonize -net nic,model=e1000,macaddr=52:54:00:00:00:10 -net tap,script=/etc/qemu-ifup
在物理机执行vncviewer :0
就会发现ip地址已经自动获取
如果将 /etc/qemu-ifup脚本中的bridge=vnet0改为br0,再执行 qemu-kvm -name c1 -m 64 -smp 2 -drive file=/app/vm/images3/c1.img,if=virtio,media=disk -vnc :0 -daemonize -net nic,model=e1000,macaddr=52:54:00:00:00:10 -net tap,script=/etc/qemu-ifup,会发现虚拟机地址是172范围内的

搜狗截图20171203160127.png

-bootd #从光驱启动

-no-acpi由于qemu支持不太好会导致系统很慢,所以我们暂时禁止掉。

安装过程中,要求换盘: 在qemu中按ctrl+alt+2切换到qemu monitor模式 输入?或help可以查看可用命令及使用说明。 (在其他版本的qemu中,运行qemu加载OS后,这个shell就会自动变成qemu monitor模式)

六.virsh命令的应用

(1)虚拟机的生成需要依赖于预定义的xml格式的配置文件
生成工具: virt-manager,virt-install
因此要安装 yum install virt-install virt-manager
cd /etc/libvirt/qemu/——查看xml格式的配置文件
(2)创建新的虚拟机,使用

搜狗截图20171203161017.png

重新创建一个名为c2的虚拟机,方式同之前的方式一样
此时在/etc/libvirt/qemu/下会有一个c2.xml配置文件
(3)通过已有的.xml文件来生成一个新的虚拟机
使用virsh命令实现
首先来介绍virsh命令的使用

搜狗截图20171203161515.png


list --all

搜狗截图20171203161730.png


destroy c2:执行该命令就可以将c2虚拟机关闭
start c2:执行start命令就会重新开启虚拟机
virsh console c2:直接连到虚拟机

搜狗截图20171203162329.png

执行ctrl ]就会剥离终端(注意是剥离终端,但是虚拟机还在运行)

搜狗截图20171203162602.png


(4)开始手动创建xml配置文件
cd /etc/libvirt/qemu
cp c2.xml template.xml
vim template.xml

搜狗截图20171203163042.png


virsh create template.xml --console 创建并登录
创建并登录成功后退出并进入virsh中,执行all --list发现没有template虚拟机,因此要将名字改为c3后再加入进来
cp template.xml c3.xml
virsh define /etc/libvirt/qemu/c3.xml
再次list --all查看

搜狗截图20171203163530.png


创建成功,这样就不需要每次都执行qemu-kvm -name等操作来开启虚拟机了,只需要进入visrh,执行start name 和destroy name来实现开启和关闭命令
(5)其他常用命令介绍
dumpxml c2

搜狗截图20171203163921.png


save:挂起
suspend:暂停(暂时存储到内存中),如果关机内容就会丢失
resume:重新运行
例:suspend c2

resume c2

搜狗截图20171203164406.png


使用save命令
开启另一个终端
virsh console c2
执行ping 172.18.0.1,然后ctrl ]退出虚拟机终端
此时在原终端上执行 save c2 /tmp/c2.dump --running——将ping命令的状态保存的路径
之后只要执行restore /tmp/c2.dump --running就可以恢复之前的状态

搜狗截图20171203165014.png


setvcpu——增加虚拟机数量
例 setvcpu c2 2,但是并不是想设置几个都可以,这是和之前的创建时就固定好的,使用setvcpu只是要开启几个cpu的意思
dominfo c2

搜狗截图20171203165415.png


实现热插拔设备的命令操作
在正在运行的c2虚拟机上再加入一个.img的镜像文件,打开另一个终端
cd /app/vm/images3
qemu-img create -f qcow2 -o size=20G,preallocation=metada ./test.img
回到之前的终端 执行domblklist c2
domblkinfo c2 vda——查看磁盘信息

搜狗截图20171203170706.png


attach-disk c2 /app/vm/images3/test.img vdb

搜狗截图20171203170717.png


执行detach-disk c2 vdb拆除该磁盘

搜狗截图20171203170742.png


网卡热插拔
attach-interface c2 bridge vnet0 --model virto
detach-interface bridge --mac——根据指定的mac地址来进行拆除
注意:
hda /app/c1.img #hda时IDE硬盘,在这里不支持热插拔
vda /app/c4.img #注意vda格式的是半虚拟化的支持热插拔

-netnic,vlan=0,model=rtl8139,macaddr=52-54-00-12-34-01 #配置一

具体的其他参数可以用man来查看qemu-system-x86_64的说明。

change device filename — change a removable media

块网卡,设置参数

由于加了-no-acpi所以安装中每次的reboot都需要自己关掉kvm然后再用上诉的命令运行,安装完后也是用上述命令运行,这个时候你可以去掉-cdrom参数如果你不再需要的话。

如change cdrom /tmp/xp1.iso

-nettap,vlan=0,ifname=tap0,script=no 设置tap0网络接口给虚拟机用,将涉及到搭建网桥,虚拟网桥接口名/////要和这里的tap0匹配

7)安装Ubuntu Server 12.04 教程 http://www.linuxidc.com/Linux/2012-04/59368.htm 与 http://www.linuxidc.com/Linux/2012-05/60147.htm

常用的快捷键:

-m512

8)启动虚拟机。

ctrl+alt+F 全屏切换

-usb

www.linuxidc.com @linuxidc:/opt/kvm$ sudo qemu-system-x86_64 kvm/ubuntu1204.img -m 1024

ctrl+alt 鼠标在虚拟机和主机间切换
虚拟机上网设置两种方式:

例如我的机器安装脚本为:

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

  1. user mode network :
    这种方式实现虚拟机上网很简单,类似vmware里的nat,qemu启动时加入-user-net参数,虚拟机里使用dhcp方式,即可与互联网通信,但是这种方式虚拟机与主机的通信不方便。

  2. tap/tun network :
    这种方式要比user mode复杂一些,但是设置好后 虚拟机互联网 虚拟机主机 通信都很容易
    这种方式设置上类似vmware的host-only,qemu使用tun/tap设备在主机上增加一块虚拟网络设备(tun0),然后就可以象真实网卡一样配置它.

#!/bin/sh

美高梅网址 1

前提:

sudo/usr/local/kvm/bin/qemu-system-x86_64 -drivefile=./ms-10-10-i386.img,cache=writeback,aio=native -cdrom~/Study/大四/软件收集/ubuntun.iso/ubuntu-10.10-desktop-i386.iso-boot d -net nic,vlan=0,model=rtl8139,macaddr=52-54-00-12-34-01 -nettap,vlan=0,ifname=kvm0,script=no -m 512 -usb

首先内核中支持tap/tuns设备:
Device Drivers —>
Networking support —>
[M] Universal TUN/TAP device driver support

7.等待系统安装

在Redflag Workstation中已经有了支持

8.配置网络

如果没有编译内核模块:make modules

(1).设置主机网络环境

将它cp到当前内核的模块目录的相应位置:
cp /usr/src/linux/drivers/net/tun.ko /lib/modules/`uname -r`/kernel/drivers/net
重新建立模块依赖关系:
depmod

安装所需包

再加载就OK了

apt-get install bridge-utils,用于网桥配置

如果成功了应该存在设备文件 /dev/net/tun

sudo apt-get install uml-utilities,用于tap配置

若使用这种方式需要以下几步:
a.需要一个tun/tap的初始化脚本 :
/etc/qemu-ifup :
#!/bin/sh
/sbin/ifconfig $1 172.20.0.1

打开/etc/network/interfaces文件,根据自己的情况增加如下内容

再给予qemu-ifup x执行权限放在/etc下就可以了,这是有qemu自动执行的
这个脚本只能root用户执行,如果需要普通用户使用qemu,就需要改成sudo /sbin/ifconfig …..再设置sudo相关权限。 启动qemu后,它会在主机上增加一块虚拟网络设备(tun0)

auto tap0 //虚拟网络接口

b.设置虚拟机网络参数

iface tap0 inet manual //建立一个网络接口tap0,指定inet类型,manual表

和vmware host-only一样:
ip与tun0相同网段,gateway为tun0 ip 其余参数与tun0相同,dns与主机相同:
tun0 : ip :172.20.0.1 broadcast:172.20.255.255 netmask :255.255.0.0
qemu : ip :172.20.0.100 broadcast:172.20.255.255 netmask :255.255.0.0 gateway:172.20.0.1

示参数不在这设置,还可以用static,dhcp

与host-only一样,这样只实现了虚拟机主机间通信,还需要设置router,nat才可以连上互联网
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -s 172.20.0.0/24 -j MASQUERADE

upifconfig $IFACE 0.0.0.0 up //指定当ifconfigtap0 up 时,执行命令ifconfig

图形界面的使用:

tap 0 0.0.0.0 up

首先安装qemu
我使用Debian, 一句apt-get install qemu命令即可安装, 或者你使用其它的方法.

down ifconfig $IFACE down

安装qemu的图形界面前端qemu-laucher
因为我也不是完全的命令行爱好者, 所以我安装qemu-laucher来启动运行qemu. 见截图:

tunctl_user wokao \wokao是我主机的用户名,在这里换为你的用户名,将

设置qemu, 安装WinXP
从桌面菜单启动qemu-launcher后, 1. 取消Snapshot Mode, 因为这个选项表示只有你按Ctrl+a s后才将虚拟机的运行结果写入虚拟机的磁盘文件.

设备使用权附给用户。

2.选中Use CD-ROM, 因为我们需要光驱安装操作系统.

auto br0 //网桥br0

  1. 在Hard Disk 0 一栏里填入你的虚拟磁盘在Linux下的文件, 只需要填入, qemu自会创建.

  2. 默认内存为128MB, 你可以设置为192MB. 太大了qemu会无法运行虚拟机.

  3. CPU, 声卡, 显卡等设置美高梅网址 2

iface br0 inet static//建立网桥,static表示在这里配置参数

bridge_ports eth0 tap0 //桥接网卡和虚拟网络接口

address1.0.0.155 //我主机的ip地址

netmask 255.255.255.0

gateway 1.0.0.3 //网关

(2).启用设备

sudo/sbin/ifup tap0

sudo/sbin/ifup br0

此时再执行ifconfig,这时应该能看到多了br0和tap0这2个设备,其中br0

的ip地址就是主机的ip地址。

这里启动时有一个顺序,必须先启动tap0,再启动br0,并且启动完执行

ifconfig命令 时 ,eth0的信 息 中 不 能 有ip地址 。 如 果 此 时 使 用 network-

manager,即窗口右上的网络连接工具重新连接eth0,那么eth0将又会有ip

地址,此时就会出现ping内网可以,但是访问不了外网的问题(IP地址冲突,

内网ping用mac地址没问题)。解决方法是按br0,tap0, eth0 顺序关闭,再打

开eth0,tap0,br0就可以了。

安装kgdb调试环境,请看http://www.linuxidc.com/Linux/2011-12/49116.htm。

美高梅网址 3

本文由美高梅网址发布于关于美高梅,转载请注明出处:Linux下虚拟机qemu的使用,kvm虚拟化技术【美高梅

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文