kvm解释:就是把1台主机分成多个你需要的小主机,就是虚拟化。
一、基础环境
1、操作系统(基于麒麟sp3)
[root@dksyb-107 ~]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Lance)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Lance)"
ANSI_COLOR="0;31"
2、安装常用软件
2.1增加epal源
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
2.2安装常用命令
yum -y install tree lrzsz wget net-tools unzip
3、关闭防火墙和selinux,防止访问限制
3.1永久关闭防火墙
systemctl disable --now firewalld
3.2关闭selinux
临时关闭
setenforce 0
永久关闭重启生效
sed -i '/^SELIN/s#enforcing#disabled#g' /etc/selinux/config
二、部署kvm虚拟化
1、安装kvm相关软件(yml安装,需要通外网)
1.1安装命令
yum install libvirt* virt-* qemu-kvm* cockpit* -y
软件功能解释
libvirt 作⽤:管理kvm虚拟机的⽣命周期,启动,暂停,关机,销毁
virt⼯具集 virt-install virt-clone 作⽤:虚拟机的安装和克隆⼯具
qemu-kvm 作⽤:为kvm虚拟机提供虚拟磁盘
cockpit作用:提供桌面化管理
2、增加开机启动并启动服务
systemctl enable --now libvirtd cockpit.socket
3、安装桥接工具
3.1 常用模式,桥接(bridge)模式和net模式介绍
桥接(bridge)模式:宿主机需要手动创建桥接网卡,使用桥接模式,就可在整个主机局域网内连接此虚拟机(就是创建完虚拟机,只要在服务器这个网络环境中的所有主机都能连上这台虚拟机)。
net模式:宿主就自动创建网桥网卡,使用net模式,可以在宿主机上远程该宿主机创建的虚拟机。
3.2 安装桥接服务
yum -y install bridge-utils
4、创建桥接网卡(临时使用,想要直接固定,直接跳过,走第5步就行了)
4.1 新建桥接网卡
brctl addbr br0
4.2 将物理网卡加入桥接接口(可以理解为这个桥接网卡就是个路由器,把物理网卡的ip配在了桥接网卡)
sudo brctl addif br0 enp125s0f3
4.3配置桥接接口--此时肯定网卡会断开连接显示器继续操作
4.3.1 删除宿主机网卡ip配置
ip addr del dev enp125s0f3 192.168.1.107/24
4.3.2 将宿主机网卡配置写到桥接网卡上
ip addr add 192.168.1.107/24 dev br0
4.3.3 启用桥接网卡
ip link set up br0
4.3.4 增加路由
route add default gw 192.168.1.252 br0
5、固定桥接网卡配置
5.1 新增桥接网卡配置文件
cat >/etc/sysconfig/network-scripts/ifcfg-br0<< EOF
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.107
NETMASK=255.255.255.0
GATEWAY=192.168.1.252
STP=yes # 开启 STP(yes 开启,no 关闭)
DELAY=0 # 网桥启动延迟(可选,0 表示无延迟)
EOF
5.2 修改宿主机网卡配置文件
cat >/etc/sysconfig/network-scripts/ifcfg-enp125s0f3<< EOF
TYPE=Ethernet
NAME=enp125s0f3
DEVICE=enp125s0f3
ONBOOT=yes
BRIDGE=br0
EOF
5.3 重启网卡服务,确认桥接状态
systemctl restart network.service
查看桥接网络状态
brctl show
三、创建虚拟机
1、上传所需镜像
采用rz,tftp等等工具都可以
2、登录cockpit桌面管理工具看看
2.1 默认登录信息:https://192.168.1.107:9090/(宿主机ip:9090)
2.2 填写宿主机的ssh的用户名和密码
2.3 不用管这个码,直接点登录就行
2.4 功能很多,能查看系统信息,系统服务等等等,但是我们主要研究虚拟机这个模块,但是sp3对应这个cockpit版本太低,我一般只用于桌面化安装系统,启停虚拟机,修改虚拟机配置等
2.5 简单介绍下,我们用命令创建虚拟机,不用cockpit桌面创建
3、命令创建虚拟机,以欧拉系统为例
3.1 创建虚拟机,有两种镜像模式qcow2(常用),raw,以下是区别
!!!一般云厂商都用qcow2模式
大白话介绍开始
3.1.1 区别1-磁盘:
raw是创建虚拟机分1T就固定用1T,别人不能用这1T空间了。
qcow2是创建虚拟机分1T,最大用1T,但是宿主机还是能使用你这1T空间的
3.1.2 区别2-扩容
qcow2支持扩容cpu、内存,raw我不清楚。
磁盘扩容两者都支持,qcow2 更灵活(支持缩容)
3.1.3 快照
qcow2支持快照和克隆。raw原生不支持,操作起来麻烦(啥叫原生,简单的说就是在这个服务的基础上不行,借助别的服务行。)
3.1.4 raw唯一好处
就是理论上读写性能比qcow2好那么一内内
3.2 创建虚拟机命令。(使用命令的时候,把\后注释啥的都删除了,别把\删了,换行的意思,删了不行)注意一点,你的宿主机是arm64架构的,上面最好安装arm64架构的虚拟机,安装x86-64架构的会报错
virt-install --virt-type kvm \ #安虚拟机,虚拟化类型是kvm
--os-type linux \ #操作系统类型是linux
--os-variant generic \ #系统版本(generic是通用系统,只要linux系统写他就行)
--name zhanglu \ #虚拟机名称
--memory 98304 \ #内存大小,默认是M
--vcpus 32 \ #cpu
--disk path=/kvm/openEuler/openeuler1.qcow2,format=qcow2,size=800 \ #虚拟机存放位置(必须要有这个目录),虚拟机镜像文件类型,存储大小默认是g
--cdrom /kvm/iso/openEuler-24.03-LTS-SP2-aarch64-dvd.iso \ #系统镜像位置
--network bridge=br0,model=virtio \ #使用网卡信息
--graphics vnc,listen=0.0.0.0 \ #默认
--noautoconsole #就这样写就行了
3.3 常见问题
问题1. error 选项,安装目录错了
3.4 用cockpit页面安装系统,这大家都会了吧,装系统就略过了昂
consoles 桌面控制装系统
3.5 内存、cpu、扩缩容
四、常见问题处理方法
1、虚拟机无法远程问题处理(与docker公用时)
# 在宿主机执行
sysctl net.bridge.bridge-nf-call-iptables
# 应输出0(禁用桥接流量的iptables过滤)
# 若输出1,临时禁用:
sysctl -w net.bridge.bridge-nf-call-iptables=0
# 永久禁用:
echo "net.bridge.bridge-nf-call-iptables=0" >> /etc/sysctl.conf
sysctl -p