创建虚拟机


安装kvm:

yum -y install qemu-kvm libvirt virt-install bridge-utils virt-viewer
systemctl start libvirtd.service
systemctl enable libvirtd.service
systemctl status libvirtd.service


Windows端管理工具VNC Viewer。

安装图形组件:连接到Centos的图形界面就需要安装图形库,有桌面就不用安装了。未安装是蓝屏。

yum -y install grub2-efi fwupdate
yum grouplist
yum groupinstall "GNOME Desktop" "Graphical Administration Tools" -y

安装vnc:

yum install tigervnc-server -y

启动服务:

vncserver

改密码:

vncpasswd

调整分辨率:

vncserver -geometry 1920x1080

永久修改分辨率:

vim /usr/bin/vncserver
$geometry = "1920x1080";

关闭某个VNC连接服务:

vncserver -kill :2

重启某个VNC连接服务:

vncserver :2

准备配置文件:打开文件将<USER>替换为启动进程的用户名,如root。

cp /usr/lib/systemd/system/vncserver@.service /usr/lib/systemd/system/vncserver@:1.service
vim /usr/lib/systemd/system/vncserver@:1.service
PIDFile=/root/.vnc/%H%i.pid # 目录要存在

示例:

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver_wrapper root %i
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

开机启动:

systemctl enable vncserver@:1.service

设置完成后关闭防火墙和selinux:

setenforce 0
systemctl stop firewalld.service
systemctl disable firewalld.service

然后使用windows端的VNC Viewer去连接,file->New Connection->VNC server中输入192.168.1.10:1 点击ok后弹出密码框输入密码。


设置开机启动非图形界面:

systemctl get-default # 获取默认设置
systemctl set-default multi-user.target # 设为多用户模式 init3
systemctl set-default graphical.target # 设为图形模式 init5


CentOS自带的虚拟机管理工具Virtual Machine Manager:

yum install virt-manager

CentOS7中:Applications - System Tools - Virtual Machine Manager


安装虚拟机的时候CPU选择注意事项:

image.png

网卡默认选择NAT模式为rtl8139:这种方式外部访问不到虚拟机但是虚拟机可以上网。

image.png


X-windows图形化工具之Xming:

下载地址:下载后直接安装即可

https://sourceforge.net/projects/xming/

配置xshell支持Xming:

image.png

在xshell中启动Xming:

~]# virt-manager



virsh安装centos:

创建磁盘:创建磁盘给后面的虚拟机使用。

qemu-img create -f qcow2 newdisk.qcow2 10G

安装虚拟机:使用vnc去连接即可开始图形化安装。

virt-install \
--name=vm-name \
--disk path=newdisk.qcow2 \
--vcpus=1 \
--ram=1024 \
--cdrom=CentOS-7-x86_64-DVD-1810.iso \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--os-type=linux \
--os-variant=rhel7

名称:--name=vm-name

磁盘:--disk path=/vm/vm1-disk1.qcow2

CPU:--vcpus=1 

内存:--ram=1024 

安装虚拟机的IOS镜像:--cdrom=/ios/CentOS-7-x86_64-DVD-1810.iso 

网卡:--network network=default 

          --network bridge=br0,model=virtio  

显示类型和监听地址:--graphics vnc,listen=0.0.0.0,port=5900 

安装的操作系统类型:--os-type=linux

系统版本:--os-variant=rhel7

鼠标选项:创建wondows时添加如下选项可解决鼠标滑动问题。

--input tablet,bus=usb

示例:

virt-install --name=win10 --vcpus=2 --ram 4096 --disk /home/disk2/qcow2/win10.qcow2 --network bridge=virbr1,model=virtio --cdrom /home/disk2/qcow2/win10_2004_64.iso --input tablet,bus=usb

更多帮助使用:

virt-install --help



磁盘管理


磁盘创建:

查看磁盘信息:

qemu-img info template.qcow2


preallocation=off             关闭预分配,默认关闭

preallocation=metadata  精简制备

preallocation=falloc         厚制制备延迟置0

preallocation=full             厚制制备立即置0


不预分配:

qemu-img create -f qcow2 test1.qcow2 1G -o preallocation=off

预分配:精简制备

qemu-img create -f qcow2 test2.qcow2 1G -o preallocation=metadata

厚制制备延迟置零:

qemu-img create -f qcow2 test3.qcow2 1G -o preallocation=falloc

厚制制备立即置零:

qemu-img create -f qcow2 test5.qcow2 1G -o preallocation=full


磁盘扩容:

qemu-img resize name.qcow2 +80G

查看:

]# qemu-img info name.qcow2 
...
virtual size: 100G (107374182400 bytes)
...


新增磁盘:

1.创建磁盘
2.virsh edit vmname
3.开机


磁盘快照:

查看某磁盘快照:

qemu-img snapshot -l disk.qcow2
qemu-img info disk.qcow2

创建快照:

qemu-img snapshot -c snapshot_name disk.qcow2

回滚快照:

qemu-img snapshot -a snapshot_name disk.qcow2

删除快照:

qemu-img snapshot -d snapshot_name disk.qcow2



命令行工具virsh:

列出当前虚拟机列表:

virsh list
virsh list --all

编辑虚拟机:编辑虚拟机的配置文件xml。

virsh edit vm-name

删除:

virsh undefine vm-name   # 删除虚拟机
virsh undefine vm-name --remove-all-storage

启动:

virsh start vm-name
virsh shutdown vm-name
virsh reboot vm-name
virsh destroy vm-name     # 强制关闭虚拟机

开机启动:

virsh autostart vm-name   # 虚拟机随宿主机启动
virsh autostart --disable vm-name    # 禁用虚拟机自启动

其他:

virsh domblklist centos7    # 查看这台虚拟机的磁盘信息
virsh dominfo centos7       # 查看虚拟机信息


kvm从模板创建虚拟机



网络


        桥接的方式可以让虚拟机连接外部的网络,也可以让外部的机器访问到虚拟机。网桥相当于一个虚拟交换机,将网桥与物理网卡相连(相当于直连)。

创建网桥:

创建之前查看信息:

whatis modprobe
modprobe --first-time bridge
modinfo bridge

创建桥接网卡:相当于交换机

vim /etc/sysconfig/network-scripts/ifcfg-virbr1
TYPE=Bridge
BOOTPROTO=static
DEVICE=virbr1
ONBOOT=yes
IPADDR=192.168.1.156
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
DNS2=8.8.8.8

将物理网卡连接到网桥:去掉IP,掩码,网关,DNS,添加 BRIDGE=virbr1

vim /etc/sysconfig/network-scripts/ifcfg-ens160

DEVICE=ens160
ONBOOT=yes
BRIDGE=virbr1 # 连接到网桥virbr0

查看网桥:

brctl show

image.png

        刚创建的网桥virbr1和物理网卡enp3s0直连,可以通过下图看出这两个网卡的物理地址是一样的,IP地址配置到了虚拟网卡上了,虚拟网卡与物理网卡通信,物理网卡和外界通信。这样宿主机就解决了和外界通信的问题,那么宿主机如何与宿主机内部的虚拟机通信呢,请看下面。(上图被红线划掉的是默认创建的virbr0不用管它)。

image.png

        宿主机和内部的虚拟机通信同样是通过桥接的方式,网桥分两头,一头在宿主机上另一头在虚拟机上,它们的物理地址是一样的。

虚拟机中的网卡地址:

image.png

宿主机中与虚拟机相连的虚拟网卡:

image.png

        在网桥列表中可以看到虚拟机的网桥一头vnet0和宿主机中的网桥virbr1是相连的,由此可知虚拟机的网桥一头vnet0通过和宿主机的网桥virbr1通信,宿主机的网桥virbr1再和物理网卡通信,物理网卡再和外界通信,这样虚拟机就可以和外界通信了。

image.png

15770969566330_upload.png

然后将虚拟机的连接方式改为桥接:

image.png

应用之后修改虚拟机的IP地址,将地址改成与物理机同一个网段上。



kvm创建快照


查看虚拟机信息:包括快照信息

qemu-img info centos1.qcow2


创建快照1(centos1运行时):

virsh snapshot-create-as centos7 snapshot_name description_info

 创建快照2(centos1关闭):

virsh shutdown centos1
virsh snapshot-create-as centos7 snapshot_name description_info

 

查看快照列表:running表示在虚拟机开启时创建的

virsh snapshot-list centos1

查看快照信息:

virsh snapshot-info --domain domainname --snapshotname snapshotname

快照回滚:

virsh snapshot-revert --domain centos1 centos1_sn1
virsh snapshot-revert --domain centos1 --snapshotname centos1_sn3

        内置磁盘快照可以随意回滚,比如先回滚到sn1,在回滚到sn3都是OK的,注意一点是虚拟机开启状态下,不能回滚到State为running的快照点

 

快照删除

virsh snapshot-delete centos1 centos1_sn2
virsh snapshot-delete --domain centos1 --snapshotname centos1_sn2