本文作者:丁辉
KVM虚拟化
文档真难找!!可恶
开始部署KVM
环境准备
关闭 SELINUX
1
2setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config关闭防火墙
1
2systemctl stop firewalld
systemctl disable firewalld查看CPU是否支持硬件虚拟化
- vmx: Intel VT-x
- svm: AMD AMD-v
1
egrep -i 'vmx|svm|lm' /proc/cpuinfo
检查 KVM 模块当前是否加载
1
lsmod | grep kvm
加载模块
1
2echo "kvm" >> /etc/modules-load.d/kvm.conf
modprobe kvm加载适当的模块
1
2modprobe kvm_intel # Intel processors
modprobe kvm_amd # AMD processors
开始安装
Centos安装
安装KVM
1
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-manager -y
启动
1
systemctl enable libvirtd && systemctl start libvirtd
Ubuntu安装
安装KVM
1
apt-get install gcc libsdl1.2-dev zlib1g-dev libasound2-dev linux-kernel-headers pkg-config libgnutls-dev libpci-dev
启动
1
systemctl enable libvirtd && systemctl start libvirtd
网卡配置
编辑默认文件
1
vi /etc/libvirt/qemu/networks/default.xml
内容如下
1
2
3
4
5
6
7
8
9
10
11
12<network>
<name>default</name>
<uuid>1113ac18-e430-4940-a412-6e838c42efbc</uuid> #不是必要的可以注释
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:c1:cd:3e'/> #不是必要的可以注释
<ip address='192.168.100.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.2' end='192.168.100.254'/>
</dhcp>
</ip>
</network>重载配置
1
virsh net-define /etc/libvirt/qemu/networks/default.xml
重启网络
1
virsh net-destroy default && virsh net-start default
启动 Windows 虚拟机
创建一个 qcow2 格式的虚拟磁盘文件
1
qemu-img create -f qcow2 /var/lib/libvirt/images/windows.qcow2 50G
拷贝 ISO 镜像文件到 images 下
1
mv *.iso /var/lib/libvirt/images/windows.iso
启动 KVM 虚拟机
1
2
3
4
5
6
7
8
9
10
11virt-install \
--name=windows \
--ram=4096 \
--vcpus=2 \
--os-type=windows \
--os-variant=win10 \
--disk path=/var/lib/libvirt/images/windows.qcow2,size=50 \
--cdrom=/var/lib/libvirt/images/windows.iso \
--network bridge=virbr0 \
--graphics vnc,listen=0.0.0.0,port=5901 \
--noautoconsole
启动 Linux 虚拟机
查看KVM支持的操作系统变种和类型
1 osinfo-query os | grep CentOS
创建一个 qcow2 格式的虚拟磁盘文件
1
qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 50G
拷贝 ISO 镜像文件到 images 下
1
mv *.iso /var/lib/libvirt/images/centos.iso
启动 KVM 虚拟机
1
2
3
4
5
6
7
8
9
10
11virt-install \
--name=centos \
--ram=4096 \
--vcpus=2 \
--os-type=centos7.0 \
--os-variant=centos7.0 \
--disk path=/var/lib/libvirt/images/centos.qcow2,size=50 \
--cdrom=/var/lib/libvirt/images/centos.iso \
--network bridge=virbr0 \
--graphics vnc,listen=0.0.0.0,port=5902 \
--noautoconsole
常用命令及参数解释
命令
制作虚拟机快照
1
virsh snapshot-create <虚拟机名称>
自定义快照名称
1
virsh snapshot-create-as <虚拟机名称> <快照名称>
查看当前虚拟机所有快照
1
virsh snapshot-list <虚拟机名称>
查看当前虚拟机处于哪个快照
1
virsh snapshot-current <虚拟机名称> | head -2
恢复快照
1
virsh snapshot-revert <虚拟机名称> <快照名称>
删除快照
1
virsh snapshot-delete <虚拟机名称> <快照名称>
显示有关虚拟磁盘镜像文件的信息
1
qemu-img info centos.qcow2
启动虚拟机:
1
virsh start <虚拟机名称>
这个命令用于启动指定名称的虚拟机。
停止虚拟机:
1
virsh shutdown <虚拟机名称>
通过这个命令,你可以优雅地关闭虚拟机。也可以使用
destroy
选项来强制关闭虚拟机。重启虚拟机:
1
virsh reboot <虚拟机名称>
这个命令用于重启虚拟机。
查看虚拟机列表:
1
virsh list --all
该命令列出当前主机上正在运行的虚拟机。
创建虚拟机:
1
virt-install [options]
使用
virt-install
命令创建新的虚拟机,可以根据需要配置虚拟机的各种参数,如名称、内存、CPU、磁盘、网络等。删除虚拟机:
1
virsh undefine <虚拟机名称>
这个命令用于删除虚拟机的定义,但保留虚拟机磁盘文件。
克隆虚拟机:
1
virt-clone -o <源虚拟机名称> -n <新虚拟机名称> -f <新虚拟机磁盘路径>
使用这个命令可以克隆一个现有虚拟机,创建一个具有相同配置的新虚拟机。
查看虚拟机详细信息:
1
virsh dominfo <虚拟机名称>
这个命令提供了关于指定虚拟机的详细信息,如内存、CPU使用情况等。
连接到虚拟机控制台:
1
virsh console <虚拟机名称>
通过这个命令可以连接到虚拟机的控制台,类似于物理终端。
导出虚拟机配置文件:
1
virsh dumpxml <虚拟机名称> > <文件名>.xml
这个命令可以将虚拟机的配置信息导出为XML格式,以便备份或迁移虚拟机。
虚拟机管理工具:
1
virt-manager
这是一个虚拟机管理工具,通常拥有图形用户界面,用于创建、配置和管理虚拟机。
VNC 显示端口信息:
1
virsh vncdisplay <虚拟机名称>
此命令用于获取虚拟机 “windows” 的 VNC 显示端口信息。VNC 是一种用于远程访问虚拟机图形界面的协议,该命令可用于查看虚拟机的 VNC 显示端口号。
定义虚拟机配置:
1
virsh define /etc/libvirt/qemu/<虚拟机名称>.xml
使用此命令,您可以定义(或注册)一个名为 “windows” 的虚拟机,其配置文件位于 “/etc/libvirt/qemu/windows.xml”。这将使虚拟机配置成为 libvirt 系统中的一部分,以便后续进行管理和操作。
编辑虚拟机配置:
1
virsh edit <虚拟机名称>
通过执行此命令,您可以编辑虚拟机 “windows” 的配置。这将打开一个文本编辑器,允许您修改虚拟机的配置参数,例如虚拟硬件设备、CPU、内存等。编辑后,您需要保存并退出编辑器,以便应用更改。
挂起、恢复虚拟机
挂起
1
virsh suspend <虚拟机名称>
恢复
1
virsh resume <虚拟机名称>
自动开机
开启开机自启动
1
virsh autostart <虚拟机名称>
关闭开机自启动
1
virsh autostart --disable <虚拟机名称>
虚拟机镜像格式转换
–f :源镜像格式
–O :目标镜像格式
将 img 转换 raw 格式
1
qemu-img convert -f qcow2 -O raw /var/lib/libvirt/images/windows.img /var/lib/libvirt/images/windows.raw
将 vmdk 转换为 qcow2
1
qemu-img convert -f vmdk -O qcow2 /var/lib/libvirt/images/windows.vmdk /var/lib/libvirt/images/windows.qcow2
将 qcow2 转换为 vmdk
1
qemu-img convert -f qcow2 -O vmdk /var/lib/libvirt/images/windows.qcow2 /var/lib/libvirt/images/windows.vmdk
参数
virt-install
:这是用于创建虚拟机的命令。--name=windows
:指定虚拟机的名称为 “windows”。--ram=4096
:分配给虚拟机的内存大小,这里是4096 MB(4 GB)。--vcpus=2
:分配给虚拟机的虚拟CPU核心数量,这里是2个。--boot=cdrom
:指定虚拟机从光盘启动。--os-type=windows
:指定虚拟机的操作系统类型为 Windows。--os-variant=win10
:指定虚拟机的操作系统变种为 Windows 10。--disk path=/var/lib/libvirt/images/windows.qcow2,size=50
:定义虚拟机的磁盘配置。它使用QEMU Copy-On-Write(qcow2)格式,存储路径为/var/lib/libvirt/images/windows.qcow2
,并分配了50 GB的磁盘空间。--cdrom=/var/lib/libvirt/images/windows.iso
:指定虚拟机的光盘映像文件路径,用于安装操作系统或引导。--network bridge=virbr0
:配置虚拟机的网络接口,将其连接到一个虚拟网络桥接接口,名为virbr0
。--graphics vnc,listen=0.0.0.0,port=5901
:配置虚拟机的图形输出,使用VNC协议,并监听所有可用网络接口(0.0.0.0),端口号为5901。--noautoconsole
:禁止自动连接到虚拟机的控制台,这意味着不会在命令行中自动打开虚拟机的控制台,你需要手动连接到VNC端口5901来查看虚拟机的图形界面。
镜像格式
- Raw(.raw):
- Raw格式是一种未经压缩或处理的纯二进制磁盘映像格式。
- 这是一种较为简单的格式,通常用于兼容多个虚拟化平台。
- Raw格式通常没有额外的特性,如快照或压缩。
- Cow(Copy-On-Write):
- Cow格式是一种写时复制格式,也称为差异磁盘映像。
- Cow格式的磁盘文件只保存虚拟机中已经发生更改的数据,而不是整个虚拟硬盘。
- 这可以减小虚拟硬盘的大小,但可能会导致性能损失。
- Qcow(.qcow):
- Qcow是QEMU的一种虚拟磁盘格式,类似于Cow格式。
- 它支持写时复制技术,允许快速创建虚拟机快照。
- Qcow格式通常比Raw格式更节省磁盘空间。
- Qcow2(.qcow2):
- Qcow2是QEMU的改进版本,是一种流行的虚拟磁盘格式。
- 它支持高级特性,如快照、压缩和加密。
- Qcow2格式通常是一种高度灵活且性能良好的格式,适用于多种虚拟化平台。
- VMDK:
- VMDK(Virtual Machine Disk)是VMware虚拟化软件使用的虚拟磁盘格式。
- VMDK格式有多个子格式,包括单一精简、多精简和懒惰精简等,以满足不同的需求。
- VMware Workstation、vSphere和其他VMware产品通常使用VMDK格式。
基础命令之控制网络
- virsh net-destroy default:
- 这个命令用于停止名为 “default” 的虚拟网络。虚拟网络是用来连接虚拟机的网络,类似于物理网络。通过执行这个命令,您停止了名为 “default” 的虚拟网络,中断了与该网络关联的虚拟机的网络连接。
- virsh net-start default:
- 这个命令用于启动名为 “default” 的虚拟网络。一旦虚拟网络被停止,您可以使用这个命令来重新启动它,使其再次可用于虚拟机。
- virsh net-autostart default:
- 这个命令用于配置虚拟网络 “default” 以在系统启动时自动启动。这意味着,当系统启动时,虚拟网络 “default” 将会自动启动,而无需手动执行
virsh net-start
命令。这对于确保虚拟网络的可用性很有用。
- 这个命令用于配置虚拟网络 “default” 以在系统启动时自动启动。这意味着,当系统启动时,虚拟网络 “default” 将会自动启动,而无需手动执行
- virsh net-undefine default:
- 这个命令用于从
virsh
的配置中移除名为 “default” 的虚拟网络定义。它不仅会停止虚拟网络,还会从系统中删除虚拟网络的配置。这意味着虚拟网络 “default” 不再受virsh
管理,且无法再通过virsh
直接管理它。
- 这个命令用于从
- virsh net-autostart –disable virbr0:
- 这个命令用于禁用名为 “virbr0” 的虚拟网络在系统启动时自动启动。通过执行这个命令,您阻止了 “virbr0” 虚拟网络在系统启动时自动启动,需要手动启动它(使用
virsh net-start virbr0
)以使其可用。
- 这个命令用于禁用名为 “virbr0” 的虚拟网络在系统启动时自动启动。通过执行这个命令,您阻止了 “virbr0” 虚拟网络在系统启动时自动启动,需要手动启动它(使用
I'm so cute. Please give me money.
- 本文链接: https://blog.offends.cn/Linux/资源安装/KVM虚拟化.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。