kvm
创建虚拟机
安装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
改密码:
vncpasswd
修改分辨率:
vim /usr/bin/vncserver $geometry = "1920x1080";
准备配置文件:打开文件将<USER>替换为启动进程的用户名,如root。
cp /usr/lib/systemd/system/vncserver@.service /usr/lib/systemd/system/vncserver@:1.service vim /usr/lib/systemd/system/vncserver@:1.service
创建目录:
/root/.vnc/ 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后弹出密码框输入密码。
测试:
启动服务:
vncserver
关闭某个VNC连接服务:
vncserver -kill :2
重启某个VNC连接服务:
vncserver :2
调整分辨率:
vncserver -geometry 1920x1080
设置开机启动非图形界面:
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选择注意事项:
网卡默认选择NAT模式为rtl8139:这种方式外部访问不到虚拟机但是虚拟机可以上网。
X-windows图形化工具之Xming:
下载地址:下载后直接安装即可
https://sourceforge.net/projects/xming/
配置xshell支持Xming:
在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 # 查看虚拟机信息
网络
桥接的方式可以让虚拟机连接外部的网络,也可以让外部的机器访问到虚拟机。网桥相当于一个虚拟交换机,将网桥与物理网卡相连(相当于直连)。
创建网桥:
创建之前查看信息:
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
刚创建的网桥virbr1和物理网卡enp3s0直连,可以通过下图看出这两个网卡的物理地址是一样的,IP地址配置到了虚拟网卡上了,虚拟网卡与物理网卡通信,物理网卡和外界通信。这样宿主机就解决了和外界通信的问题,那么宿主机如何与宿主机内部的虚拟机通信呢,请看下面。(上图被红线划掉的是默认创建的virbr0不用管它)。
宿主机和内部的虚拟机通信同样是通过桥接的方式,网桥分两头,一头在宿主机上另一头在虚拟机上,它们的物理地址是一样的。
虚拟机中的网卡地址:
宿主机中与虚拟机相连的虚拟网卡:
在网桥列表中可以看到虚拟机的网桥一头vnet0和宿主机中的网桥virbr1是相连的,由此可知虚拟机的网桥一头vnet0通过和宿主机的网桥virbr1通信,宿主机的网桥virbr1再和物理网卡通信,物理网卡再和外界通信,这样虚拟机就可以和外界通信了。
然后将虚拟机的连接方式改为桥接:
应用之后修改虚拟机的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