#环境说明:Centos7
CPU开启虚拟化,给宿主机的CPU和内存分配足够多的配置
yum -y install qemu-kvm libvirt virt-manager virt-install virt-viewer
软件包简介:
systemctl start --now libvirtd
在创建之前需要在宿主机上先创建一个存放系统镜像的目录,然后上传至此目录下
mkidr -p /data/isos
#打开图形化需要下载Xmanager,并在Xshell开启下面功能:
#图形化界面如果乱码,修改语言为英文就能解决
输入virt-manager命令打开图形化界面
基于ISO镜像文件创建
浏览
选择镜像
设置虚拟机内存
设置磁盘大小
后面按照安装Centos7系统时进行配置即可
创建前,需要先利用qume-img命令创建虚拟磁盘,如下:
qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.qcow2 20G
然后使用下面命令创建虚拟机:
virt-install --virt-type kvm --name centos7 --ram 1024 --vcpus 2 \
--cdrom=/data/isos/CentOS-7-x86_64-Minimal-2009.iso --disk \
path=/var/lib/libvirt/images/centos7.qcow2 --network=default --graphics \
vnc,listen=0.0.0.0 --noautoconsole --os-variant=centos7.0
选项解析如下:
kvm默认网络模式是NAT,宿主机会充当路由器,为内部的kvm虚拟机做端口映射。如果开启了vnc连接功能,kvm会为每个kvm虚拟机开启一个连接端口。可以访问宿主机的设备,就可以使使用vnc工具来连接kvm虚拟机
下面是宿主机为kvm虚拟机开启的vnc端口:
查看启动的虚拟机:
在创建前还是需要先创建虚拟磁盘,如下:
qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.qcow2 20G
编写应答文件:
#需要自行创建
vim /root/ks.cfg
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted
$6$Dx1M9/RlV5sB0KJv$19AdCxXsCbBnXSrUbYWhHQvKmtgCd0stJSHb3NrMQXZj.OpZWcNGzOROn/tg6fgxU3HYVptC35dgMcg8rpY.61
# 系统语言
#lang zh_CN.UTF-8
lang en_US
# System authorization information
auth --useshadow --passalgo=sha512
# Use CDROM installation media
#cdrom
# Use text mode install
# 使用字符界面安装操作系统
text
# Do not configure the X Window System
# 不配置图形界面系统
skipx
# SELinux configuration
selinux --disabled
# Firewall configuration
firewall --disabled
# 设置动态获取 IP
network --bootproto=dhcp --device=eth0 --onboot=on
#network --hostname=HOSNAME
# 设置静态 IP
# network --bootproto=static --device=eth0 --gateway=192.168.122.1 --ip=192.168.122.100 --nameserver=192.168.122.1 --netmask=255.255.255.0 --activate
# 系统安装完成后 重启系统
#halt
reboot
# System timezone 系统时区
timezone Asia/Shanghai
# System services 系统启动时候自动启动的服务
services --enable="chronyd"
# System bootloader configuration
#系统启动引导方式 vda 是kvm 虚拟机时候的第块磁盘名称
bootloader --location=mbr --boot-drive=vda
# 清除主引导记录
zerombr
# 删除原来的分区和磁盘标签
clearpart --all --initlabel
# 磁盘分区信息,这里采用的是 lvm 自动分区
autopart --type=lvm
# 下面是自定义分区
#part /boot --fstype="xfs" --ondisk=vda --size=200
#part / --fstype="xfs" --ondisk=vda --size=10040
#part /var --fstype="xfs" --ondisk=vda --size=2048
#part /home --fstype="xfs" --ondisk=vda --size=2048
# 安装软件
%packages
@^minimal
@core
chrony
%end
# 禁用 kdump
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end
# 安装系统完成后执行的命令脚本
#%post --interpreter=/bin/bash
#yum install -y epel-release bash-completion vim-enhanced wget
#yum group install "Development Tools" -y
#%end
# 用户密码策略
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
#上文件中rootpw --iscrypted指定的为root账户的密码,如过想修改为其它密码可以用下面命令生成加密字符串,将其替掉即可:
python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
运行下面命令创建虚拟机:
virt-install -v \
--arch x86_64 --virt-type kvm \
--name centos7 \
--memory 1024 \
--vcpus 2 \
--os-type linux \
--location /data/isos/CentOS-7-x86_64-Minimal-2009.iso \
--network default \
--graphics vnc,listen=0.0.0.0 \
--os-variant centos7.0 \
--initrd-inject "/root/ks.cfg" \
--extra-args "ks=file:/ks.cfg \
console=tty0 console=ttyS0,115200n8 \
hostname=centos7" \
--disk /var/lib/libvirt/images/centos7.qcow2,cache=writeback,io=threads,bus=virtio
选项解析如下:
安装完后输入账户密码即可登录kvm虚拟机:
账户:root
密码:123.com
Ctrl+}退出
virt-clone -o centos7 -f /var/lib/libvirt/images/centos7.qcow2 -n centos7-2
选项解析:
qemu-img snapshot -c centos7-snapshot1 /var/lib/libvirt/images/centos7.qcow2
选项解析:
-c:指定快照名称
qemu-img snapshot -l /var/lib/libvirt/images/centos7.qcow2
qemu-img info /var/lib/libvirt/images/centos7.qcow2
#需要关机后进行
qemu-img snapshot -a centos7-snapshot /var/lib/libvirt/images/centos7.qcow2
选项解析:
-a:指定需要恢复的快照名称
#需要关机后进行
qemu-img snapshot -d centos7-snapshot /var/lib/libvirt/images/centos7.qcow2
选项解析:
-d:指定需要删除的快照名称
virsh snapshot-create centos7
virsh snapshot-list centos7
#无须关机
virsh snapshot-revert centos7 --snapshotname 1600593611 --running
选项解析:
--snapshotname:先查看快照确认快照的名称,是一段数字,在--snapshotname后跟上快照名称
--running:恢复后,将状态更改为正在运行
virsh snapshot-delete centos7 --snapshotname 1600593611
修改宿主机网卡文件为以下,模式为空,NM_CONTROLLED=no,意思为此网络不受NetworkManager控制,网桥名为br0:
BOOTPROTO=none
NAME=ens32
DEVICE=ens32
ONBOOT=yes
NM_CONTRLLED=no
BRIDGE=br0
创建并编写br0网卡文件为一下, 模式为静态,类型是网桥,不受NM控制,定义IP:
BOOTPROTO=static
TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT=yes
NM_CONTRLLED=no
IPADDR=10.0.0.200
PREFIX=24
NETMASK=255.255.255.0
GATEWAY=10.0.0.0.2
DNS=202.106.0.20
关闭NetworkManager:
systemctl stop NetworkManager
systemctl disable NetworkManager
重启网络服务:
systemctl restart network
使用brctl show命令查看虚拟设备情况,没有的话,安装名为bridge-utils的包即可:
[root@centos7-temp ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c291e1dd4 yes ens32
virbr0 8000.5254006c683e yes virbr0-nic
vnet0
#由上可见,br0设备,绑定了ens32网卡成功,stp enabled为no,可以执行brctl stp br0 on打开
使用route命令查看路由情况:
[root@centos7-temp ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 br0
#由上可见,所有地址,网关为10.0.0.2,通过br0,进行通信
修改/etc/qemu-kvm/bridge.conf文件:
allow virbr0
#加上下面一行
allow br0
将虚拟机关机:
virsh shutdown
查看启动的虚拟机:
virsh list
修改虚拟机配置文件中网络部分两处:
vim /etc/libvirt/qemu/centos7.xml
修改前如下:
修改为:
启动虚拟机:
virsh start
使用virt-manager打开图形化界面将网卡修改桥接网卡:
修改虚拟机网络配置文件:
#加上带注释的行即可
vi /etc/sysconfig/network-scripts/ifcfg-eth0
NAME="eth0"
HWADDR="52:54:00:38:8D:43"
ONBOOT="yes"
NETBOOT="yes"
UUID="50682a96-3672-42ac-8469-2c2f20ffde5a"
IPV6INIT="yes"
BOOTPROTO="static" #设置静态IP
IPADDR=10.0.0.201 #选择和宿主机在同一个网段的IP
NETMASK=255.255.255.0 #与宿主机同网段
GATEWAY=10.0.0.2 #与宿主机同网关
DNS=202.106.0.20 #与宿主机同DNS
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
在虚拟机中关闭NetworkManager:
systemctl stop NetworkManager
重启网络服务:
systemctl restart network
在宿主机上ping虚拟机的地址,验证网络是否能通信:
在虚拟机上ping外网地址,验证是否能上外网:
通过Xshell终端工具连接虚拟机:
virsh常用命令:
查看当前启动的虚拟机: virsh list
查看所有虚拟机:virsh list --all
启动虚拟机:virsh start
正常关机:virsh shutdown
强制关机::virsh destroy
暂停虚拟机::virsh suspend
恢复虚拟机:virsh resume
设置虚拟机随宿主机启动而自启动:virsh autostart
禁用虚拟机随宿主机启动而自启动:virsh autostart
删除虚拟机配置,但不删除磁盘文件:virsh undefine
删除虚拟机包括磁盘文件:virsh undefine
查看虚拟机网卡配置:virsh domiflist
查看虚拟机的网卡地址信息:virsh domifaddr