一、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这个指令参数。
二、kvm虚拟化安装
准备工作:在虚拟机中添加硬盘:
虚拟机关机,编辑虚拟机设定。
给虚拟机分配6144Mb的内存。
给它分配一个处理器,每个处理器分配4个内核,选择下方的虚拟化Intel VT-x/EPT或AMD-V/RVI(V)。
选择添加硬盘,注意选择SATA模式,下一步选择60个G
注意:不要添加到c盘
开启虚拟机,在虚拟机中配置软件安装环境
在vm虚拟机中搭建软件仓库:
选择右下角光盘图标,右键选择设置,设备状态改为已连接
df命令查看,在/etc/yum.repos. d/ 编辑westos.repo
用dnf命令列出隐藏组
dnf group list --hidden
在隐藏里的available groups里面有Virtualization Client(虚拟化客户端),Virtualization Hypervisor(虚拟化核心套件),Virtualization Tools(虚拟化工具)
安装以上三个组
dnf group install “Virtualization Client” “Virtualization Hypervisor” “Virtualization Tools” -y
虚拟机管理工具安装完成!
在虚拟机中格式化硬盘并挂载到虚拟机存储目录中
fdisk /dev/sdb #分区,除第一个输入n,最后一个输入wq之外,其余全是回车
mkfs.xfs /dev/ sdb1 -K #对设备进行格式化
mount /dev/sdb1 /var/lib/libvirt/images/ #直接挂载上
可永久挂载软件仓库,将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
三、sakvm 虚拟化相关信息
服务名称:libvirtd
开启此服务:systemctl enable --now libvirtd
虚拟化核心:qemu/kvm
虚拟化存储目录(虚拟机硬盘)
/var/lib/libvirt/images/xxx.qcow2
虚拟化硬件信息
/etc/libvirt/qemu/xxx.xml
这个xxx.xml里面就会记录着虚拟机的网卡位置,启动分区等相关的硬件信息。
四、手动安装虚拟机
步骤如下:
五、虚拟机管理命令
virt-viewer test #显示test虚拟机
virt-manager #打开虚拟控制器
virsh list #列出运行的虚拟机
virsh list --all #列出所有的虚拟机
vish start test #开启虚拟器
virsh shutdown test #正常关闭虚拟机(有可能会被阻塞)
virsh destory test #断电关闭虚拟机test(不会被阻塞)
六、虚拟机在linux系统中传输
将虚拟机的硬件信息和硬盘分别从各自的位置挪到另一个毫无相关的地方(模拟两台主机,将主机1的虚拟机的硬件信息和硬盘挪到另一台没有虚拟机的主机2上)
然后将硬件信息和硬盘都移到/var/lib/libvirt/images中(模拟在主机2中,将硬件信息和硬盘移到此目录下)
可通过virsh create xxxx.xml,打开硬件信息打开虚拟机,但destory之后,虚拟机会消失
可通过virsh define xxx.xml,通过打开硬件信息打开虚拟机,destory之后,虚拟机不会消失
若想删除虚拟机,输入virsh underfine xxxxx 删除的只是虚拟机硬件信息,还应rm -fr /var/lib/libvirt/qemu/xxxx.qcow2删除此硬盘,这样才能把此虚拟机彻底删除。
七、虚拟机快照
qemu-img create #拍快照
给test给个快照为node1
八、搭建网络源安装虚拟机
dnf install httpd -y
关闭防火墙,开启httpd服务
systemctl disable --now firewalld
systemctl enable --now httpd
mkdir /var/www/html/westos
umount /dev/sr0 #
mount /dev/sr0 /var/www/html/westos/ #挂载到指定共享目录
此时可在网页上看到挂载上去的仓库:
编辑网络配置文件
nm-connection-editor
nmcli connection reload
nmcli connection down xxxx
nmcli connection up xxxx
ifconfig
cd /var/lib/libvirt/images/
chown qemu.qemu /var/lib/libvirt/images/ #更改所有组,使得能够建立虚拟机(这个是虚拟机硬盘的路径)
virt-manager
使用网络方式安装:
但在linux中使用虚拟化,默认是没有桥接网络的,默认为NAT模式。
如果有网桥:
如何搭建网桥来安装虚拟机:
在真实主机:
cd /etc/sysconfig/network-scripts/
ls
ifcfg-ens160
cp ifcfg-ens160 ifcfg-br0
vim ifcfg-br0
vim ifcfg -ens160
nmcli connection reload
nmcli connection down xxxx
nmcli connection up xxxx
检查桥接:
bridge link
此时虚拟机建立出现桥接选项
但建立桥接之后,新建虚拟机会获得不到ip
所以需要在真实主机搭建dhcp(具体怎么搭建请回顾linux下的网络配置那一章)
dnf install dhcp-server -y
此时安装时没有任何问题
九、利用命令行安装虚拟机
虚拟机安装命令行
virt-insatll
编辑执行文档
vim westos.sh
#!/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 & #虚拟网卡为桥接,网卡工作模式为虚拟输入输出
$1 #脚本后跟的第一串字符
\ #换行符,每个换行符前必须有空格,代表分割,换行符后不要加任何东西,包括空格
& #可在后面加上&表示打入后台运行
执行sh.westos.sh lee
可建立出名为lee的虚拟机