一、kvm

定义
linux系统下常用的虚拟机是kvm(kernel-based virtual machine),是一个开源的系统虚拟化模块。

安装条件
inter cpu-------->vmx
amd cpu ------------>svm

#可执行cat /proc/cpuinfo查看cpu类型,当linux是inter cpu,并且有vmx指令级参数,有了这个才能安装使用kvm;若是amd cpu,必须要有svm这个指令参数。

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息

二、kvm虚拟化安装

准备工作:在虚拟机中添加硬盘:

虚拟机关机,编辑虚拟机设定。

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_02


给虚拟机分配6144Mb的内存。

centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_03

给它分配一个处理器,每个处理器分配4个内核,选择下方的虚拟化Intel VT-x/EPT或AMD-V/RVI(V)。

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_04

选择添加硬盘,注意选择SATA模式,下一步选择60个G

注意:不要添加到c盘

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_05


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_06


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_07


centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_08


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_09


centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_10

开启虚拟机,在虚拟机中配置软件安装环境

在vm虚拟机中搭建软件仓库:

选择右下角光盘图标,右键选择设置,设备状态改为已连接

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_11


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_12

df命令查看,在/etc/yum.repos. d/ 编辑westos.repo

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_13


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_14


用dnf命令列出隐藏组

dnf group list --hidden

centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_15


在隐藏里的available groups里面有Virtualization Client(虚拟化客户端),Virtualization Hypervisor(虚拟化核心套件),Virtualization Tools(虚拟化工具)

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_16

安装以上三个组

dnf group install “Virtualization Client” “Virtualization Hypervisor” “Virtualization Tools” -y

centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_17


虚拟机管理工具安装完成!

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_18


在虚拟机中格式化硬盘并挂载到虚拟机存储目录中

fdisk /dev/sdb #分区,除第一个输入n,最后一个输入wq之外,其余全是回车

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_19

mkfs.xfs /dev/ sdb1 -K #对设备进行格式化

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_20


mount /dev/sdb1 /var/lib/libvirt/images/ #直接挂载上

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_21


可永久挂载软件仓库,将mount /dev/sdb1 /var/lib/libvirt/images/写到/etc/rc.d/rc.local, 再给与/etc/rc.d/rc.local一个权限,chmod a+x /etc/rc.d/rc.local

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_22


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_23

三、sakvm 虚拟化相关信息

服务名称:libvirtd

开启此服务:systemctl enable --now libvirtd

centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_24

虚拟化核心:qemu/kvm

虚拟化存储目录(虚拟机硬盘)

/var/lib/libvirt/images/xxx.qcow2

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_25


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_26


虚拟化硬件信息

/etc/libvirt/qemu/xxx.xml

centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_27


这个xxx.xml里面就会记录着虚拟机的网卡位置,启动分区等相关的硬件信息。

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_28

四、手动安装虚拟机

步骤如下:

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_29


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_30


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_31


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_32


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_33


centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_34


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_35


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_36


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_37


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_38


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_39


centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_40


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_41


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_42

centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_43


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_44


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_45


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_46


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_47


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_48


centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_49


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_50


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_51


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_52


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_53


centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_54


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_55


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_56


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_57

五、虚拟机管理命令

virt-viewer test #显示test虚拟机

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_58


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_59

virt-manager #打开虚拟控制器

virsh list #列出运行的虚拟机

virsh list --all #列出所有的虚拟机

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_60


vish start test #开启虚拟器

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_61


centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_62

virsh shutdown test #正常关闭虚拟机(有可能会被阻塞)

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_63


virsh destory test #断电关闭虚拟机test(不会被阻塞)

centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_64

六、虚拟机在linux系统中传输

将虚拟机的硬件信息和硬盘分别从各自的位置挪到另一个毫无相关的地方(模拟两台主机,将主机1的虚拟机的硬件信息和硬盘挪到另一台没有虚拟机的主机2上)

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_65


然后将硬件信息和硬盘都移到/var/lib/libvirt/images中(模拟在主机2中,将硬件信息和硬盘移到此目录下)

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_66


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_67


可通过virsh create xxxx.xml,打开硬件信息打开虚拟机,但destory之后,虚拟机会消失

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_68


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_69


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_70

可通过virsh define xxx.xml,通过打开硬件信息打开虚拟机,destory之后,虚拟机不会消失

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_71


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_72

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_73

若想删除虚拟机,输入virsh underfine xxxxx 删除的只是虚拟机硬件信息,还应rm -fr /var/lib/libvirt/qemu/xxxx.qcow2删除此硬盘,这样才能把此虚拟机彻底删除。

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_74

七、虚拟机快照

qemu-img create #拍快照

给test给个快照为node1

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_75


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_76


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_77


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_78


centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_79


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_80


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_81


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_82

centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_83


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_84

八、搭建网络源安装虚拟机

dnf install httpd -y

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_85


关闭防火墙,开启httpd服务

systemctl disable --now firewalld

systemctl enable --now httpd

centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_86


mkdir /var/www/html/westos

umount /dev/sr0 #

mount /dev/sr0 /var/www/html/westos/ #挂载到指定共享目录

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_87


此时可在网页上看到挂载上去的仓库:

centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_88

编辑网络配置文件

nm-connection-editor

nmcli connection reload

nmcli connection down xxxx

nmcli connection up xxxx

ifconfig

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_89


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_90

cd /var/lib/libvirt/images/

chown qemu.qemu /var/lib/libvirt/images/ #更改所有组,使得能够建立虚拟机(这个是虚拟机硬盘的路径)

centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_91

virt-manager

使用网络方式安装:

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_92


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_93


centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_94


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_95


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_96


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_97


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_98


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_99


centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_100

但在linux中使用虚拟化,默认是没有桥接网络的,默认为NAT模式。

centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_101


如果有网桥:

centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_102

如何搭建网桥来安装虚拟机:

在真实主机:

cd /etc/sysconfig/network-scripts/

ls

ifcfg-ens160

cp ifcfg-ens160 ifcfg-br0

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_103


vim ifcfg-br0

vim ifcfg -ens160

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_104


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_105

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_106


centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_107

nmcli connection reload

nmcli connection down xxxx

nmcli connection up xxxx

centos7 kvm虚拟化部署 linux部署kvm虚拟机_桥接_108

检查桥接:

bridge link

centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_109

此时虚拟机建立出现桥接选项

centos7 kvm虚拟化部署 linux部署kvm虚拟机_centos7 kvm虚拟化部署_110


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_111

但建立桥接之后,新建虚拟机会获得不到ip

所以需要在真实主机搭建dhcp(具体怎么搭建请回顾linux下的网络配置那一章)

dnf install dhcp-server -y

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_112


centos7 kvm虚拟化部署 linux部署kvm虚拟机_硬件信息_113


此时安装时没有任何问题

九、利用命令行安装虚拟机

虚拟机安装命令行
virt-insatll

编辑执行文档

vim westos.sh

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_114


#!/bin/bash #脚本指定解释器

virt-install \ #虚拟机安装命令

–location http://192.168.1.216/westos \ #指定安装资源

–os-variant rhel8.2 \ #指定安装系统版本

–vcpus 1 \ #cpu核心数量

–memory 2048 \ #内存大小

–disk /var/lib/libvirt/images/$1.qcow2,size=8,bus=virtio \ #硬盘位置、硬盘大小、硬盘工作总栈

–name $1 \ #虚拟机名称

–network bridge=br0,model=virtio & #虚拟网卡为桥接,网卡工作模式为虚拟输入输出

centos7 kvm虚拟化部署 linux部署kvm虚拟机_linux_115

$1 #脚本后跟的第一串字符
\ #换行符,每个换行符前必须有空格,代表分割,换行符后不要加任何东西,包括空格
& #可在后面加上&表示打入后台运行

执行sh.westos.sh lee

centos7 kvm虚拟化部署 linux部署kvm虚拟机_虚拟化_116


可建立出名为lee的虚拟机