一、在CentOS 7上搭建KVM虚拟化环境,可以依照以下步骤进行操作:
1. 检查系统是否支持虚拟化
首先,需要确认你的CPU支持虚拟化技术。可以通过以下命令进行检查:
cat /proc/cpuinfo | grep vmx
如果输出中包含vmx
,则表示CPU支持Intel的VT-x虚拟化技术;如果输出包含svm
,则表示CPU支持AMD-V虚拟化技术。
2. 安装KVM及相关软件包
使用yum包管理器安装KVM及其依赖的软件包:
yum install qemu-kvm qemu-img libvirt libvirt-python virt-manager libvirt-client virt-install -y
-
libvirt作用:虚拟机的管理软件
-
virt-install、virt-clone作用:虚拟机的安装工具和克隆工具
-
virt-manager作用:虚拟机的图形化管理软件
-
qemu-kvm、qemu-img作用:管理虚拟机的虚拟磁盘
3. 启动虚拟化模块
加载KVM内核模块:
modprobe kvm
4. 启动libvirt服务并设置开机自启
启动libvirtd服务,并设置为开机自启:
systemctl start libvirtd systemctl enable libvirtd
5. 配置网络
为了使虚拟机能够访问外部网络,需要配置网络。可以通过图形界面的virt-manager
来配置,也可以手动编辑网络配置文件。
6. 创建物理桥接设备
如果你打算让虚拟机加入到现有的网络中,需要创建一个物理桥接设备。首先,查看网卡信息:
ifconfig
找到你想要桥接至局域网的网卡名称,然后关闭NetworkManager服务(如果正在运行):
chkconfig NetworkManager off service NetworkManager stop
创建桥接设备:
virsh iface-bridge <网卡名称> <桥接名称>
例如,如果你的网卡名称是ens33
,想要创建的桥接名称是br0
,则命令如下:
virsh iface-bridge ens33 br0
7. 进入图形化界面
使用virt-manager
可以进入KVM的图形化管理界面:
virt-manager
8. 创建存储池和虚拟机
创建存储池用于存放虚拟机的磁盘映像文件:
mkdir -p /kvm/pool
创建虚拟机,可以使用virt-install
命令或者通过virt-manager
图形界面进行创建。
9. 挂载镜像进行测试
如果你有ISO镜像文件,可以将其挂载到指定的目录下,并使用它来创建虚拟机:
cp /dev/cdrom /kvm/iso/centos7.iso
然后,使用virt-install
创建虚拟机,并指定ISO文件的位置。
10. 管理和使用虚拟机
通过virt-manager
或者virsh
命令行工具,你可以管理和使用虚拟机,例如启动、停止、重启虚拟机等。
列出虚拟机
-
列出所有连接的虚拟机:
virsh list
这个命令会显示所有当前连接的虚拟机及其状态。
-
列出虚拟机的详细信息:
virsh list --all
这个命令会提供关于每个虚拟机的详细信息,包括其配置和状态。
管理虚拟机
-
导出虚拟机配置:导出指定虚拟机(VM)的 XML 配置文件。拥有xml配置文件和磁盘文件就可以将虚拟机恢复至任何地方,默认虚拟机配置文件存放在/etc/libvirt/qemu目录
virsh dumpxml <虚拟机名称> > vm.xml
这个命令会将虚拟机的 XML 配置保存到当前目录下的
vm.xml
文件中。 -
创建新的虚拟机: 创建虚拟机通常需要一个XML配置文件,可以使用
virsh define
命令来加载这个文件:virsh define <XML文件路径>
然后使用
virsh start
命令启动虚拟机:virsh start <虚拟机名称>
-
删除虚拟机配置:删除一个虚拟机的定义和配置。不会删除虚拟机的磁盘文件或其他持久化数据,只会从
libvirt
的虚拟机列表中移除虚拟机的配置信息。命令的基本格式:
virsh undefine <虚拟机名称>
执行这个命令后,虚拟机的定义将从
libvirt
中移除。如果你想要同时删除虚拟机的磁盘文件和其他持久化数据,可以添加--remove-all-storage
选项:virsh undefine <虚拟机名称> --remove-all-storage
请注意,使用
--remove-all-storage
选项会删除虚拟机的所有磁盘文件和配置文件,这个操作是不可逆的。 -
重命名虚拟机:
首先关闭虚拟机:
virsh shutdown old-vm-name
然后使用
virsh domrename
命令重命名虚拟机:virsh domrename old-vm-name new-vm-name
-
启动虚拟机:
virsh start <虚拟机名称>
这个命令会启动指定的虚拟机。
-
停止虚拟机:
virsh shutdown <虚拟机名称>
这个命令会优雅地关闭指定的虚拟机。如果需要强制关闭,可以使用
virsh destroy
命令。 -
重启虚拟机:
virsh reboot <虚拟机名称>
这个命令会重启指定的虚拟机。
-
暂停虚拟机:
virsh suspend <虚拟机名称>
这个命令会暂停虚拟机的执行。
-
恢复虚拟机:
virsh resume <虚拟机名称>
这个命令会恢复之前被暂停的虚拟机。
管理虚拟机磁盘和网络
-
附加磁盘到虚拟机:
virsh attach-disk <虚拟机名称> --source <磁盘路径> --target <目标设备名称> --persistent
这个命令会将一个新的磁盘附加到虚拟机上,并且配置为持久性更改。
-
分离磁盘:
virsh detach-disk <虚拟机名称> <目标设备名称>
这个命令会从虚拟机中分离指定的磁盘。
-
修改虚拟机网络设置:
virsh edit <虚拟机名称>
这个命令会打开虚拟机的XML配置文件,允许用户编辑网络设置或其他配置。
监控和诊断
-
获取虚拟机信息:
virsh dominfo <虚拟机名称>
这个命令会显示虚拟机的详细信息,包括其硬件资源和状态。
-
监控虚拟机资源使用情况:
virsh vcpuinfo <虚拟机名称>
这个命令会显示虚拟机的CPU使用情况。
-
查看虚拟机日志:
virsh console <虚拟机名称>
这个命令会连接到虚拟机的控制台,允许用户查看虚拟机的输出和日志。
二、安装虚拟机
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom=/opt/CentOS-7.7-x86_64-DVD-1908.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
-
--virt-type kvm 虚拟化的类型(qemu)
-
--os-type=linux 系统类型
-
--os-variant rhel7 系统版本
-
--name centos7 虚拟机的名字
-
--memory 1024 虚拟机的内存
-
--vcpus 1 虚拟机cpu
-
--disk /opt/centos2.raw,format=raw,size=10 raw:10G 不支持做快照,性能好,qcow2:支持快照
-
--cdrom=/opt/CentOS-7.7-x86_64-DVD-1908.iso 虚拟机镜像
-
--network network=default 使用默认NAT的网络
-
--graphics vnc,listen=0.0.0.0 图形化输出到vnc服务端