kvm创建虚拟机
程序员文章站
2022-06-21 18:39:50
...
此博客最终目标是实现两个自建虚拟机通过自建网桥互通
实验整体框架:
实现步骤:
先关机,然后看下图:
启动虚拟机
yum install qemu-kvm
modprobe kvm
看是否有/dev/kvm,如果有,什么成功装载kvm模块
创建物理桥,使用内核自带的桥接模块实现,桥接口配置文件保留地址信息;
物理网卡配置文件,删除地址、掩码和网关等相关的配置,添加 BRIDGE=BRIDGE_NAME
配置文件如下:
# ens33配置文件
TYPE="Ethernet"
BOOTPROTO=none
DEFROUTE="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=none
DEFROUTE="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.1
IPADDR=172.18.253.7
PREFIX=16
GATEWAY=172.18.0.1
重启网卡,运行命令
[root@master network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c299d270e no ens33
如果没有这个命令可以安装 bridge-utils-1.5-9.el7.x86_64
下面来运行一个虚拟机示例:
所需原料:
1、cos-i386.qcow2 文件下载
2、/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
记得加上脚本执行权限
执行命令:
[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:自定义接口名称;