河南国安建设集团有限公司信息网站免费申请网站 主机 空间
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:56
当前位置: 首页 > news >正文
河南国安建设集团有限公司信息网站,免费申请网站 主机 空间,收费下载网站源码,中国制造网官网下载实践说明#xff1a;基于RHEL9(AlmaLinux9.1)部署#xff0c;同类系统(CentOS9,RockyLinux9等)适用#xff0c;但适用场景是不限于此的。 文档说明#xff1a;本文档旨在帮助快速应用KVM虚拟化技术#xff0c;重在实践操作#xff0c;提供了简要参考。 文档形成时期…实践说明基于RHEL9(AlmaLinux9.1)部署同类系统(CentOS9,RockyLinux9等)适用但适用场景是不限于此的。 文档说明本文档旨在帮助快速应用KVM虚拟化技术重在实践操作提供了简要参考。 文档形成时期2021-2023年 因系统或软件版本不同构建部署可能略有差异但本文未做细分对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力之限难免疏漏和错误欢迎指正。 文章目录 kvm基本了解安装KVM引擎启用和组件安装yum安装kvm相关组件QEMU/KVM代码下载编译安装 图形界面创建和管理虚拟机命令行方式创建网桥和管理虚拟机防火墙调整iptables日志经验 命令行方式创建虚拟机virt-install工具命令详解问题排查问题ubuntu虚机启动时卡在booting from hard disk 安装过程经验 管理kvm虚拟机将linux客户端的console输出重定向到串口ttyS0宿主机控制台 改变虚拟机的参数更改内存更改CPU硬盘扩容修改虚拟机配置删除虚拟机 KVM虚拟机网络配置 Bridge方式NAT方式删除默认的NAT网络不是必要的也暂不推荐删除桥接网卡Bridge方式 快照克隆 kvm基本了解 KVMKernel-based Virtual Machine即基于内核的虚拟机是一种开源的虚拟化技术。 KVM技术由KVM引擎、虚拟化程序QEMU和管理工具Libvirt组成。 KVM引擎它是一种基于虚拟化扩展Intel VT或者AMD-V的X86硬件的Linux原生全虚拟化引擎在其中虚拟机被实现为常规的linux进程由标准linux调度程序进行调度。 虚拟化软件QEMU 虚拟化软件QEMU开源的I/O虚拟化软件可以对一个完整的计算机物理层环境进行虚拟化如网卡、硬盘等。QEMU原本并不是KVM的一部分但其代码包含一套完整的虚拟化解决方案处理机虚拟化、内存虚拟化、设备虚拟化而被KVM所采用。 管理工具Libvirt 管理工具Libvirt其设计目的是通过相同的方式管理不同的虚拟化引擎如KVM、Xen、LXC等是一种开源工具主要由以下三部分功能组成 1支持主流编程语言如C、Python、Ruby等的API和库。 2Libvirtd服务。 3命令行工具virsh。 libvirt可以对虚拟机进行管理包括虚拟机的创建、启动、关闭、挂起、恢复等也可以对虚拟机的硬件设备进行添加和删除。 安装 KVM相关软件的安装方法 检查宿主机BIOS设置 开启Inter VT-x/EPT或AMD-V/RVIV等如果用vmware做实验共有三项虚拟化引擎相关的配置可启用除前面的一项还有虚拟化CPU性能计数器U虚拟化IOMMUIO内存管理单元I。 安装VNC相关组件 yum -y install tigervnc tigervnc-server tigervnc-server-module 复制VNC配置模板文件 cp /lib/systemd/system/vncserver.service /lib/systemd/system/vncserver:1.service 可修改VNC配置文件 启动VNC服务 systemctl start vncserver:1.service systemctl enable vncserver:1.service 防火墙开启5901端口 KVM引擎启用和组件安装 检查cpu是否支持虚拟化 egrep ‘(vmx|svm)’ /proc/cpuinfo 检查BIOS虚拟化 lsmod | grep kvm 以上有相关输出结果则说明虚拟化开关已开启 加载KVM模块到宿主机系统中 Intel CPU使用: modprobe kvm-intel AMD CPU使用: modprobe kvm-amd yum安装kvm相关组件 sudo dnf install qemu-kvm virt-manager libvirt virt-install virt-viewer virt-top bridge-utils bridge-utils virt-top libguestfs-tools -y QEMU/KVM代码下载编译安装 暂略 图形界面创建和管理虚拟机 安装Linux图形界面也许可选 yum groupinstall X Window System创建网桥 首次创建虚拟机可以不自行创建网桥使用默认网桥。 启动虚拟机管理界面已安装图形界面的情况下 virt-manager 接下来可安装配置各类虚拟机就像esxi和vmware一样部署虚拟机。 命令行方式创建网桥和管理虚拟机 启动 libvirtd 守护进程 systemctl start libvirtd systemctl enable libvirtd systemctl status libvirtd 设置桥接接口 nmcli connection show 创建网桥首先使用以下语法用其 UUID 删除连接准备给客户机桥接的网卡 nmcli connection delete UUID 创建一个新的桥接接口也可以改用libvirtd默认网桥即删除默认网桥再新建或直接修改IP地址达到预期配置也行 语法 nmcli connection add type bridge autoconnect yes con-name BRIDGE NAME ifname BRIDGE NAME 实例 nmcli connection add type bridge autoconnect yes con-name kvmbr0 ifname kvmbr0 配置桥接网卡 nmcli connection modify kvmbr0 ipv4.addr 192.168.130.85⁄24 ipv4.gateway 192.168.130.1 ipv4.method manual ipv4.dns 223.5.5.5,223.6.6.6 nmcli con reload kvmbr0 nmcli con up kvmbr0 添加网桥从属设备把刚才删除UUID的宿主机网卡加入桥接网络来 nmcli connection add type bridge-slave autoconnect yes con-name eth0 ifname eth0 master kvmbr0 查看网卡从属状态可执行 ip a 其中master便是其主网卡 或 brctl show 编辑网桥配置文件 vi /etc/qemu-kvm/bridge.conf 添加 allow all 重新启动虚拟化守护进程以应用更改 systemctl restart libvirtd 防火墙调整 桥接网络受宿主机iptables的FORWARD链控制在有docker环境情况下默认是DROP的可以添加一条允许或者更为严格的策略脚本。 详细参考脚本/root/sh/iptables_for_kvm.sh #!/bin/bash ###################################
function iptables config for kvm
#
create: touch /root/sh/iptables_for_kvm.sh; chmod 700 /root/sh/iptables_for_kvm.sh
#
Change History:
date author note
2012/08/31 N 创建
2013/07/04 N 为xen环境的iptables转发控制设计
……
2023/07/22 N 基于原xen环境的iptables转发控制改编为适用于kvm
############################################ ENV ################## 脚本名称临时文件或邮件中可能用到避免同类脚本的变量的冲突下面直接取脚本名 export project_nameecho ${0##*/} | cut -d. -f 1kvmbr_ethkvmbr0 kvmbr_net192.168.130.160⁄27 # 160-191export LANGC export LC_ALLC export PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin### filter table ##### FORWARD chains ##
在默认配置中添加自定义链
iptables -F KVM_CUSTOM /dev/null 21 iptables -D FORWARD -j KVM_CUSTOM /dev/null 21 iptables -X KVM_CUSTOM /dev/null 21 iptables -N KVM_CUSTOM iptables -I FORWARD -j KVM_CUSTOM# 在自定义链中配置策略
global
iptables -A KVM_CUSTOM -j ACCEPT # allow all
iptables -A KVM_CUSTOM -d \(kvmbr_net -o \)kvmbr_eth -m state –state RELATED,ESTABLISHED -j ACCEPT #iptables -A KVM_CUSTOM -s \(kvmbr_net -i \)kvmbr_eth -m state –state RELATED,ESTABLISHED -j ACCEPT iptables -A KVM_CUSTOM -s \(kvmbr_net -i \)kvmbr_eth -j ACCEPT iptables -A KVM_CUSTOM -d \(kvmbr_net -o \)kvmbr_eth -p udp -m multiport –dport 53,5353,123,323 -j ACCEPT iptables -A KVM_CUSTOM -p udp -m multiport –dport 67:68 -j ACCEPT# 独立配置 iptables -A KVM_CUSTOM -s 0.0.0.0/0 -d 192.168.130.160 -p tcp -m multiport –dport 20,21,22 -j ACCEPT# 记录将被阻止的连接 iptables -A KVMCUSTOM -j LOG### nat table ######### save #################### iptables-save -c /etc/sysconfig/iptables iptables-save -c /etc/sysconfig/iptables$(date %Y%m%d-%H%M)iptables日志经验 例Jul 22 15:42:51 vh0025 kernel: INkvmbr0 OUTkvmbr0 PHYSINvnet3 PHYSOUTeth0 MACff:ff:ff:ff:ff:ff:52:54:00:e5:74:8f:08:00 SRC0.0.0.0 DST255.255.255.255 LEN325 TOS0x00 PREC0xC0 TTL64 ID0 PROTOUDP SPT68 DPT67 LEN305 MAC前面ff:ff:ff:ff:ff:ff部分是广播地址是源地址后面是目标地址08:00可能是保留用的暂不用关心。 命令行方式创建虚拟机 virt-install --name kvm0001-Ubuntu20.04 --memory memory4096,currentMemory2048 --vcpus 1,maxvcpus4,cpuset1 --disk path/var/lib/libvirt/images/ubuntu-20.04.qcow2,size15,formatqcow2,busvirtio,sparsetrue --os-variant ubuntu20.04 --hvm --network bridgekvmbr0,modelvirtio --graphics vnc,listen0.0.0.0,port5901,passwordkvmpass --console pty,target_typeserial --cdrom /opt/isos/ubuntu-22.04.2-live-server-amd64.isovirt-install工具命令详解 一般选项 -n NAME, –nameNAME虚拟机名称需全局唯一 -r memory, –ramMEMORY虚拟机内存大小单位MB –vcpusCPU: CPU模式及特性如coreduo等可以使用 qemu-kvm -cpu 来获取支持CPU模式 安装方法 -c CDROM, –cdromCDROM: 光盘安装介质 -l LOCATION, –locationLOCATION: 安装源URL支持FTP、HTTP及NFS等 –pxe: 基于PXE完成安装 –livecd: 把光盘当做LiveCD –os-typeDISTRO_TYPE: 操作系统类如linux,unix,windows等 –os-variantDISTRO_VARIANT: 某类型操作系统的变体如rhel5 fedora8 可以通过osinfo-query os命令查看该命令是libosinfo包的A library for managing OS information for virtualization -x EXTRA, –extra-argsEXTRA: 根据–location指定的方式安装GuestOS时 用于传递给内核的额外选项例如指定kickstart文件的位置 –extra-args “kshttp://172.16.0.1/class.cfg” –bootBOOTIOTS: 指定安装过程完成后的配置选项如指定引导设备次序使用指定的而非安装的kernel/initrd来引导系统启动等 –boot cdrom,hd,network: 指定引导次序 –boot kernelKERNEL,initrdINITRD,kernel_args“console/dev/ttyS0”: 指定启动系统的内核及initrd文件 存储配置 –diskDISKOPTS: 指定存储设备及其属性格式–disk /some/storage/path, opt1val1, opt2val2等 常用选项 device: 设备类型如cdrom,disk,floppy等默认disk bus: 磁盘总结类型其值可以为ide, scsi, usb, virtio, xen等 perms: 访问权限如rw, ro, sh 默认rw size: 新建磁盘镜像的大小单位GB cache: 缓存类型其值none, writethrouth(缓存读), writeback(缓存读写) format: 磁盘镜像格式如 raw, qcow2, vmdk等阿里云镜像导入支持RAW、QCOW2、VHD等格式推荐传输内容更小的QCOW2或者VHD格式如果考虑和vmware之间迁移可采用vmdk格式 sparse: 磁盘镜像使用稀疏格式即不立即分配指定大小的空间实践中发现仅采用sparse参数时其值默认是false应明确指定sparsetrue。查看实际大小时用du -sh而不要用ls -lh –nodisks: 不使用本地磁盘在LiveCD模式中常用 网络配置 -w NETWORK, –networkNETWORK opt1val1, opt2val2: 将虚拟机连入宿主机的网络中其中NETWOR值可以为 bridgeBRIDGE: 连接到名为BRIDEG的桥设备 networkNAME: 连接到名为NAME网络 其他常用的选项 model: GuestOS中看到的网络设备型号ru e1000 rtl8139或virtio等 mac: 固定的MAC地址省略此选项时将使用随机地址但无论何种方式对于KVM来说其前三段必须时52:54:00 –nonetworks: 虚拟机不使用网络功能 图形配置 –graphics TYPE, opt1val1,opt2val2: 指定图形显示相关配置此选项不会配置任何显示硬件(如显卡)而是仅仅指定虚拟机启动后对其进行访问的接口 TYPE: 指定显示类型可以是vnc, sdl, spice, none默认vnc port: TYPE为vnc或spice时其监听的端口 listen: TYPE为vnc或spice时所监听的IP地址默认为127.0.0.1可以通过修改/etc/libvirt/qemu.conf定义新的默认值 password: TYPE为vnc或spice时为远程访问监听的服务进行指定认证密码 –noautoconsole: 禁止自动连接到虚拟机的控制台 设备选项 –serialCHAROPTS: 附加一个串行设备至当前虚拟机根据设备类型的不同可以使用不同的选项格式为–serial type, opt1val1, opt2val2 例如 –serial pty创建伪终端 –serial dev,pathHOSTPATH附加主机设备至此虚拟机 –videoVIDEO指定显卡设备模型可用取值为cirrus、vga、qxl或vmvga 虚拟化平台 -v, –hvm当物理机同时支持完全虚拟化和半虚拟化时指定使用完全虚拟化 -p, –paravirt指定使用半虚拟化 –virt-type使用的hypervisor如kvm、qemu、xen等所有可用值可以使用’virsh capabilities’命令获取 其它 –autostart指定虚拟机是否在物理启动后自动启动 –print-xml如果虚拟机不需要安装过程(–import、–boot)则显示生成的XML而不是创建此虚拟机默认情况下此选项仍会创建磁盘映像 –force禁止命令进入交互式模式如果有需要回答yes或no选项则自动回答为yes –dry-run执行创建虚拟机的整个过程但不真正创建虚拟机、改变主机上的设备配置信息及将其创建的需求通知给libvirt -d, –debug显示debug信息 问题排查 问题ubuntu虚机启动时卡在booting from hard disk 进入系统后检查/det/default/grub配置文件是否有异常。 经大佬排查是grub中配置的console参数只配置了ttyS0导致控制台所有的输出都去了串口而没有在tty0vnc上显示所以在引起系统启动后vnc就看不到任何输出了。所以对于console参数至少需要配置一个tty0ttyS0根据需求可选。 修改后对于ubuntu系统可以执行 update-grub2 命令更新一下grub相关文件之后重启测试发现可以通过引导界面进入虚机。 可是按上面的操作后情况依旧 分析推测是卡在grub倒计时但是又没有显示修改倒计时后果然有变化不过是“booting from hard disk”在倒计时后消失了直接变成黑屏还是要等很久。 有网友添加“–virt-typeqemu”的实践发现问题依旧且这已经不是kvm了。 考虑到该问题不明显暂时搁置。 安装过程经验 安装客户端过程中发现获取不到IP网络也不通查看宿主机防火墙iptables有关于默认桥接网卡virbr0的配置但没有自定义桥接网卡的配置。 想不到libvirtd即使在rhel9上仍然利用的iptables而非firewalldiptables的FORWARD在有docker环境情况下默认是DROP的/etc/qemu-kvm/bridge.conf的配置似乎和iptables也没有直接关系。所以在非必要情况下仍把iptables做为唯一防火墙配置仍然是个不错的选择 解决办法改用virbr0做为默认网桥默认是用户网络即NAT模式或为自定义网桥添加iptables的FORWARD链策略。实践中选择了后者详细参考脚本/root/sh/iptables_for_kvm.sh ubuntu20.04最小化安装完成后最后提示是final system configuration 或 restoring apt configuration 完整日志是finish cmd-system-install: success: curtin command system-install 重启即可。 管理kvm虚拟机 列出所有的虚拟机 virsh list –all 虚拟机改名 实践例 cd /etc/libvirt/qemu 关机导出xml virsh dumpxml kvm0001-Ubuntu20.04 kvm0001-ubuntu20.04.xml 修改磁盘文件名可选 cd /var/lib/libvirt/images 修改xml配置中的名称和磁盘文件名 vi kvm0001-ubuntu20.04.xml 删除老的 virsh undefine kvm0001-Ubuntu20.04 定义新的 virsh define /etc/libvirt/qemu/kvm0001-ubuntu20.04.xml 查看结果 virsh list –all 经过如上方法重命名的kvm机直接启动使用即可不会影响udev动态管理设备的文件。和之前的虚拟机相比、仅仅就是名字变了而已。 显示虚拟机信息 virsh dominfo kvm0001 显示虚拟机内存和cpu的使用情况 yum install virt-top -y virt-top 显示虚拟机分区信息 virt-df kvm0001 关闭虚拟机shutodwn virsh shutdown kvm0001 强制关闭KVM虚拟机 virsh destroy kvm0001 启动虚拟机 virsh start kvm0001 设置虚拟机kvm0001跟随系统自启 virsh autostart kvm0001 关闭虚拟及自启 virsh autostart –disable kvm0001 删除虚拟机 virsh undefine kvm0001 通过控制窗口登录虚拟机 virsh console kvm0001 将linux客户端的console输出重定向到串口ttyS0宿主机控制台 脚本 #!/usr/bin/env bash set -x set -esed -i s/GRUB_CMDLINE_LINUX/GRUB_CMDLINE_LINUXconsoletty0 consolettyS0,115200/g /etc/default/grub sed -i s/^#GRUB_TERMINAL.*/GRUB_TERMINALconsole serial/g /etc/default/grub sed -i /GRUB_TERMINAL/aGRUB_SERIAL_COMMANDserial –speed115200 –unit0 –word8 –parityno –stop1 /etc/default/grub cat /etc/default/grubgrub-mkconfig -o /boot/grub/grub.cfgreboot改变虚拟机的参数 通过命令行更改创建之后虚拟机的内存cpu等信息 更改内存 1.查看虚拟机当前内存 [rootsh-kvm0001 ~]# virsh dominfo kvm0001 | grep memory Max memory: 4194304 KiB Used memory: 4194304 KiB 2.动态设置内存为512MB内存减少 virsh setmem kvm0001 524288 #注意单位必须是KB且不能超过最大内存限定要超过的话只能停止后修改 3.查看内存变化 #virsh dominfo kvm0001 | grep memory Max memory: 14194304 KiB Used memory: 524288 kiB 4.最大内存增加 virsh shutdown kvm0001 virsh edit kvm0001 # 直接更改memory virsh create /etc/libvirt/qemu/kvm0001/xml 或 virsh setmaxmem kvm0001 4096M –config #之后操作1,2,3步骤增加内存 更改CPU 需要修改配置文件因此需要停止虚拟机 virsh shutdown kvm0001 virsh edit kvm0001
vcpu2/vcpu # 4 2virsh create /etc/libvirt/qemu/kvm0001/xml
硬盘扩容 暂略 修改虚拟机配置 virsh edit kvm0001 删除虚拟机 第一步停掉虚拟机 virsh shutdown kvm0001 第二步 virsh destroy kvm0001 第三步 virsh undefine kvm0001 第四部 rm /dev/vg_shkvm1/kvm0001 # 不建议删除硬盘 KVM虚拟机网络配置 Bridge方式NAT方式 KVM 客户机网络连接有两种方式 用户网络User NetworkingNAT方式让虚拟机访问主机、互联网或本地网络上的资源的简单方法但是不能从网络或其他的客户机访问客户机性能上也需要大的折扣。 虚拟网桥Virtual BridgeBridge方式这种方式要比用户网络复杂一些但是设置好后客户机与互联网客户机与主机之间的通信都很容易。 删除默认的NAT网络不是必要的也暂不推荐 virsh net-destroy default virsh net-undefine default service libvirtd restart 或 systemctl restart libvirtd 删除桥接网卡 brctl delif kvmbr0 # 未成功 nmcli connection del kvmbr0 Bridge方式 Bridge方式配置出来的接口对NAT方式没有影响因为NAT方式并没有使用物理网卡。但作为客户机每张网卡只能选择其中的一种。 快照 我们只能对磁盘格式为 Qcow2 的虚拟机的进行快照并且 kvm 的 virsh 命令不支持 raw 磁盘格式可使用以下命令将原始磁盘格式转换为 qcow2。 qemu-img convert -f raw -O qcow2 image-name.img image-name.qcow2 创建快照语法 virsh snapshot-create-as –domain {vm_name} –name {snapshot_name} –description enter description here实例 [rootkvm-hypervisor ~]# virsh snapshot-create-as –domain kvm0001-ubuntu20.04 –name kvm0001-ubuntu20.04_snap –description snap Domain snapshot webserver_snap created查看快照 virsh snapshot-list kvm0001-ubuntu20.04 要列出虚拟机快照的详细信息 virsh snapshot-info –domain kvm0001-ubuntu20.04 –snapshotname kvm0001-ubuntu20.04_snap 查看快照的大小关机之后才能看 qemu-img info /var/lib/libvirt/images/kvm0001-ubuntu-20.04.qcow2 还原 KVM 虚拟机快照 语法virsh snapshot-revert {vm_name} {snapshot_name} 实践 [rootkvm-hypervisor ~]# virsh snapshot-revert kvm0001-ubuntu20.04 kvm0001-ubuntu20.04_snap 删除 KVM 虚拟机指定的快照 virsh snapshot-delete –domain kvm0001-ubuntu20.04 –snapshotname kvm0001-ubuntu20.04_snap 克隆 直接克隆虚拟机 先关机 语法virt-clone -o 原虚拟机 -n 新虚拟机 -f 新虚拟机存放的路径 实践 virt-clone -o kvm0001-ubuntu20.04 -n kvm0003-ubuntu20.04 -f /var/lib/libvirt/images/kvm0003-ubuntu-20.04.qcow2 完成 实践发现vnc端口mac地址都会自动变但主机名和IP地址需要手动去改。
相关文章
-
河南代做网站中国纪检监察报电子版
河南代做网站中国纪检监察报电子版
- 技术栈
- 2026年03月21日
-
河南艾特网站建设公司如何优化关键词搜索
河南艾特网站建设公司如何优化关键词搜索
- 技术栈
- 2026年03月21日
-
河间网站制作公司网站开发的工资一般是多少
河间网站制作公司网站开发的工资一般是多少
- 技术栈
- 2026年03月21日
-
河南航天建设工程有限公司网站wordpress首页热门排行榜插件
河南航天建设工程有限公司网站wordpress首页热门排行榜插件
- 技术栈
- 2026年03月21日
-
河南简介网站设计wordpress加描述
河南简介网站设计wordpress加描述
- 技术栈
- 2026年03月21日
-
河南建设集团网站wordpress类似于知更鸟的中文主题
河南建设集团网站wordpress类似于知更鸟的中文主题
- 技术栈
- 2026年03月21日
