请输入手机号码
请输入密码
搭建KVM(Kernel-based Virtual Machine)云服务器,核心是在物理服务器(宿主机)上安装KVM虚拟化环境,并通过管理工具创建、管理虚拟机,最终对外提供云服务器服务。以下是详细步骤(以CentOS 7/8为例,其他Linux发行版思路类似)。
先确认CPU是否支持虚拟化,以及是否已开启:
# 检查Intel VT-x(Intel CPU)
egrep -c '(vmx)' /proc/cpuinfo
# 检查AMD-V(AMD CPU)
egrep -c '(svm)' /proc/cpuinfoKVM依赖qemu-kvm(虚拟化核心)、libvirt(管理工具)、virt-install(创建虚拟机)等组件。
# CentOS 7
yum install -y qemu-kvm libvirt libvirt-python libguestfs-tools virt-install bridge-utils
# CentOS 8(用dnf替代yum)
dnf install -y qemu-kvm libvirt libvirt-python libguestfs-tools virt-install bridge-utilssystemctl start libvirtd
systemctl enable libvirtd# 检查KVM模块是否加载
lsmod | grep kvm
# 输出类似:kvm_intel(或kvm_amd)、kvm,说明加载成功
# 检查libvirt状态
virsh version
# 显示libvirt版本、hypervisor(qemu/kvm)信息,说明正常默认libvirt会创建virbr0(NAT模式),但云服务器通常需要桥接模式(虚拟机直接获取局域网IP,或直接对外网暴露)。
eth0为例,需替换为实际网卡名,如ens33)先查看物理网卡名:
ip addr # 或 ifconfigcp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.baketh0配置(改为桥接的从属设备):vi /etc/sysconfig/network-scripts/ifcfg-eth0内容修改为:
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0 # 桥接到br0br0配置:vi /etc/sysconfig/network-scripts/ifcfg-br0内容(根据实际网络修改,如静态IP或DHCP):
TYPE=Bridge
BOOTPROTO=static # 或dhcp(若局域网有DHCP)
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.100 # 宿主机IP(替换为你的局域网IP)
NETMASK=255.255.255.0
GATEWAY=192.168.1.1 # 网关(替换为你的网关)
DNS1=8.8.8.8
DNS2=114.114.114.114systemctl restart networkbrctl show # 或 ip link show br0
# 输出应显示br0桥接了eth0,说明配置成功使用virt-install命令创建虚拟机,需准备ISO镜像(如CentOS、Ubuntu的ISO,或云镜像如CloudStack/Cirros)。
将ISO上传到宿主机(如/var/lib/libvirt/images/目录,这是libvirt默认存储池):
mkdir -p /var/lib/libvirt/images/iso
# 上传ISO到该目录,例如CentOS-7-x86_64-Minimal.isovirt-install \
--name=my-kvm-vm \ # 虚拟机名称
--ram=2048 \ # 内存(MB)
--vcpus=1 \ # CPU核心数
--disk path=/var/lib/libvirt/images/my-kvm-vm.qcow2,size=20 \ # 磁盘路径(qcow2格式,动态扩容)
--os-type=linux \ # 系统类型
--os-variant=centos7.0 \ # 系统版本(可通过`osinfo-query os`查看支持的版本)
--network bridge=br0 \ # 桥接网络(用之前创建的br0)
--graphics vnc,listen=0.0.0.0,port=5901 \ # VNC远程连接(端口5901,可自定义)
--cdrom=/var/lib/libvirt/images/iso/CentOS-7-x86_64-Minimal.iso \ # ISO路径
--noautoconsole # 不自动连接到控制台virsh list --all # 查看所有虚拟机(包括关机状态)
# 输出应显示my-kvm-vm状态为running或shut off# 启动虚拟机
virsh start my-kvm-vm
# 关闭虚拟机(优雅关机)
virsh shutdown my-kvm-vm
# 强制关闭虚拟机(类似拔电源)
virsh destroy my-kvm-vm
# 重启虚拟机
virsh reboot my-kvm-vm
# 删除虚拟机(需先关机)
virsh undefine my-kvm-vm # 仅删除配置,磁盘文件需手动删除
# 查看虚拟机VNC端口(用于远程连接安装系统)
virsh vncdisplay my-kvm-vm # 输出如:1,对应端口5901(5900+1)
# 连接虚拟机控制台(本地)
virsh console my-kvm-vm # 按Ctrl+]退出创建虚拟机时指定了VNC端口(如5901),可通过VNC客户端(如RealVNC、TightVNC、Remmina)远程连接宿主机IP:5901,完成系统安装。
br0,即可获取局域网IP)。若需实现弹性伸缩、镜像模板、用户自助管理等云服务器特性,可结合以下工具:
qcow2格式(支持快照、动态扩容),避免用raw格式(占用空间大)。virsh snapshot-create创建虚拟机快照,方便回滚:virsh snapshot-create my-kvm-vm # 创建快照
virsh snapshot-list my-kvm-vm # 查看快照virsh edit my-kvm-vm编辑XML配置,限制CPU、内存、磁盘IO等(避免单个虚拟机占用过多资源)。firewalld)、SSH密钥登录,避免弱密码。以上是单节点KVM云服务器的搭建流程,核心是“安装KVM→配置桥接→创建虚拟机→管理虚拟机”。若需多节点、多租户、自动化部署等云特性,需结合CloudStack/OpenStack等云平台工具。