kvm创建虚拟机

来源:互联网 发布:狸窝mp4视频转换器mac 编辑:程序博客网 时间:2024/05/16 19:26

此博客最终目标是实现两个自建虚拟机通过自建网桥互通

实验整体框架:

效果图

实现步骤:
先关机,然后看下图:

这里写图片描述

启动虚拟机
yum install qemu-kvm
modprobe kvm
看是否有/dev/kvm,如果有,什么成功装载kvm模块

创建物理桥,使用内核自带的桥接模块实现,桥接口配置文件保留地址信息;
物理网卡配置文件,删除地址、掩码和网关等相关的配置,添加 BRIDGE=BRIDGE_NAME
配置文件如下:

# ens33配置文件TYPE="Ethernet"BOOTPROTO=noneDEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens33"UUID="ee2f7d77-75b9-47a4-b495-9b2ecc911cab"DEVICE="ens33"ONBOOT="yes"BRIDGE=br0
# br0配置文件TYPE="Bridge"BOOTPROTO=noneDEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="br0"DEVICE="br0"ONBOOT="yes"DNS1=172.18.0.1IPADDR=172.18.253.7PREFIX=16GATEWAY=172.18.0.1

重启网卡,运行命令

[root@master network-scripts]# brctl showbridge name bridge id       STP enabled interfacesbr0     8000.000c299d270e   no      ens33

如果没有这个命令可以安装 bridge-utils-1.5-9.el7.x86_64

下面来运行一个虚拟机示例:

所需原料:
1、cos-i386.qcow2 文件下载

2、/etc/qemu-ifup 如下:

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

记得加上脚本执行权限

执行命令:

[root@master ~]# qemu-kvm -name c1 -smp 1,maxcpus=1,sockets=1,cores=1 -m 128 -drive file=/images/kvm/cos-i386.qcow2,if=virtio -vnc  :0 -daemonize -net nic,model=e1000,macaddr=52:54:00:00:00:11 -net tap,script=/etc/qemu-ifup[root@master ~]# vncviewer :5900

安装tigervnc-1.3.1-9.el7.x86_64软件,用于连接显示虚拟机终端
如果使用xshell连接的话有xmanager,直接运行命令,否则到虚拟机上执行命令

以下是用到的选项说明:

标准选项:
-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不写代表当前所有IP
在HOST主机的第N个桌面号输出vnc,5900+N
(2) unix:/PATH/TO/SOCK_FILE
(3) none
网络选项:
-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:自定义接口名称;