服务器虚拟化安装配置及使用

发布时间 2023-11-23 11:05:37作者: 梭梭666

Top

[TOC]

安装

安装依赖包

yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-manager libvirt-client virt-install virt-viewer -y

启动服务

systemctl start libvirtd
systemctl enable libvirtd
# KVM的管理工具栈:qemu:qemu-kvm,qemu-img 和libvirt
# CLI: virt-install, virsh
退出这个控制台,按住 ctrl键 和 ]键 即可退出

创建虚拟机

# 创建基本的虚拟机
virt-install --name=kvm2 --vcpus=2 --memory=2048 --location=/data/iso/CentOS-7-x86_64-DVD-2009.iso --disk path=/var/lib/libvirt/images/kvm2.qcow2 --network network=default --graphics none --extra-args='console=ttyS0'
	--name=kvm2     # 表示为创建的虚拟机命名为kvm2。
    --vcpus=2       # 表示设置虚拟机cpu有2个核心。
    --memory=2048   # 表示设置内存为2G。单位默认为 MB 
    --location=/data/iso/CentOS-7-x86_64-DVD-2009.iso   # 表示使用本地iso镜像安装虚拟机。
    --disk path=/var/lib/libvirt/images/kvm2.qcow2      # 表示指定虚拟机的磁盘镜像的路径
    # 在创建时,可提前准备好磁盘,然后直接指定,或者是使用参数 "--disk size=50G" 当下创建,并且磁盘的前缀名和虚拟机名相同,并且是预分配所有磁盘空间。
    # 默认的创建保存目录为: /var/lib/libvirt/images/
	--network network=default  # 表示使用kvm的默认网络
	--graphics none   # 表示我们安装的过程中,需要使用的图形化控制台, none 表示不使用图形化控制台安装虚拟机
	--extra-args='console=ttyS0'  # 表示为创建的虚拟机指定内核启动时的内核参数
	# 在通过命令行的方式安装虚拟机时最好给其分配一个虚拟终端,以便我们执行安装操作和安装完成后的登录、控制虚拟机等操作 
	# 默认使用"全虚拟化"的方式创建虚拟硬件. 
# "全虚拟化"是指以纯软件的方式来模拟硬件设备的,如果虚拟机系统(客户机)支持virtio驱动,则可以使用”半虚拟化”的方式创建虚拟机硬件,virtio的”半虚拟化”省去了”全虚拟化”中异常捕获的环节,可以理解为操作路径更短了,所以在IO性能上有所提升。
# 控制虚拟机,与其交互,就像在物理机的命令行控制台中一样可控制机器。
virsh console <name>   # 前提是虚拟机存在配置 tty 虚拟终端, 
	# 配置命令: grubby --update-kernel=ALL --args="console=ttyS0"

# 使用 virtio 驱动创建半虚拟化的虚拟机 
virt-install --name=kvm2 --vcpus=2 --memory=2048 --location=/data/iso/CentOS-7-x86_64-DVD-2009.iso --disk path=/var/lib/libvirt/images/kvm2.qcow2,bus=virtio --network network=default,model=virtio --graphics none --extra-args='console=ttyS0'

点我回顶部

导入虚拟机

# 通过虚拟机磁盘镜像文件导入虚拟机
virt-install --import --name kvm2import --ram 4096 --vcpus=4 --cpu host-model --disk path=/var/lib/libvirt/images/kvm2.qcow2,bus=virtio --network network=default,model=virtio --nographics
	--nographics     # 使用命令行的方式导入虚拟机
 	--noautoconsole  # 导入虚拟机时不连入控制台

# 通过虚拟机 xml 配置文件和 磁盘镜像文件导入(还原)虚拟机	
virsh define /etc/libvirt/qemu/kvm2.xml 	

virsh domblklist <VMName>      # 显示 VM 当前连接的块设备

克隆虚拟机

# 通过kvm1虚拟机自动克隆出kvm2虚拟机
virt-clone --auto-clone -o kvm1 -n kvm2  # -o 表示克隆源,-n 表示新克隆出的虚拟机。

删除虚拟机

# 删除虚拟机
virsh undefine <name> 
	# 本质上只是在目录 /etc/libvirt/qemu 下删除了虚拟机的 xml 配置文件,但目录下 /var/lib/libvirt/images/ 的虚拟机的 镜像文件依然还是存在的。可手动删除,此为风险操作,
# 彻底删除,包括镜像文件
virsh undefine --remove-all-storage <name>
点我回顶部

磁盘镜像 -- qemu-img

# 创建一个磁盘,
qemu-img create ubuntu.img 10G   # 默认磁盘映像格式为 raw 映像
qemu-img create -f qcow2 testdisk1.qcow2 50G  # 默认创建到当前目录, 并且默认为动态分配空间
qemu-img create -f qcow2 -o size=10G ubuntu.img
qemu-img create -f vmdk -o size=20G ubuntu.img  # 创建 vmdk 格式的 磁盘镜像
# 转换镜像文件格式
qemu-img convert -f qcow2 -O raw centos.qcow2 centos.raw
	-f  表示源镜像文件的格式。
	-O(必须是大写)表示目标镜像格式 、源镜像文件名称和目标文件名称。
# 查看 磁盘镜像的详细信息 
root@R4900G3_44 /e/qemu# qemu-img info test001.qcow2
image: test001.qcow2      # 显示了磁盘映像文件名
file format: qcow2
virtual size: 10G (10737418240 bytes)  # 显示虚拟机将读取的映像的磁盘大小
disk size: 196K            # 显示保存在主机文件系统中的实际大小
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
# 压缩磁盘映像
qemu-img convert -O qcow2 -c  ubuntu.qcow2 ubuntu_c.qcow2
# 检查磁盘映像是否有错误
qemu-img check ubuntu.qcow2
# 增加磁盘映像大小
qemu-img resize ubuntu.qcow2 +5GB
# 缩小磁盘映像大小
qemu-img resize ubuntu.qcow2 -5GB
# qemu-img 支持的格式 
qemu-img -h  | grep Supported


点我回顶部

其他

# 判断机器是否支持硬件虚拟化
lscpu | grep -oE 'vmx|svm'

# 查看处于运行状态或暂停状态的的虚拟机列表
virsh list 
# 查看所有虚拟机,无论虚拟机处于什么状态
virsh list --all 
# 停止虚拟机
virsh shutdown <name>
# 启动虚拟机
virsh start <name>
# 暂停虚拟机: 暂停虚拟机任然占用宿主机的资源,只是不被继续调度使用
virsh suspend <name>
# 恢复虚拟机 让处于暂停状态的虚拟机继续运行
virsh resume <name>
# 如果有图形界面的话,可以进入虚拟机的界面  
virt-viewer <name>
# 查看虚拟机的状态
virsh domstate <name>
# 强制关闭 虚拟机 
virsh destroy  suosuo02

# 重命名虚拟机
virsh domrename kvm2import kvm2
# 查看虚拟机基本的概览信息, 比如cpu数量,内存大小,是否自动启动等信息
virsh dominfo <name>  # 可以理解成domaininfo的缩写
# 设置虚拟机跟随物理机自动启动
virsh autostart <name>
# 取消虚拟机自启
virsh autostart --disable <name>
# 修改虚拟机的配置 
virsh edit <name>
# 通过命令的方式查看虚拟机的详细配置信息
virsh dumpxml <name>

# 虚拟机的默认配置文件所在的目录 
root@R4900G3_44 ~# ll /etc/libvirt/qemu
-rw-------. 1 root root 5.8K Jun 13 21:01 ba001.xml    # 虚拟机的详细配置文件
drwx------. 3 root root 4.0K Oct 11  2021 networks
	# 注意不可直接手动修改虚拟机的详细配置 xml 文件, 要通过专业的方式
# 虚拟机的默认镜像文件所在目录: /var/lib/libvirt/images
root@R4900G3_44 /v/l/l/images# ll /var/lib/libvirt/images
-rw-------. 1 root root 51G Jun 13 21:22 ba001.qcow2    # 以 'qcow2' 结尾
-rw-------. 1 root root 41G Mar 21 06:11 rhel82_45.qcow2
	# 使用 virt-manager 命令创建默认为 非动态分配磁盘空间 
	# 直接分配所有磁盘空间的磁盘效率更高,动态分配磁盘空间的方式效率稍低
	# Vmware 机器默认的磁盘格式为 vmdk文件
	# Qcow2是针对Vmdk和Vdi开发的开源格式。 Qcow2提供压缩,快照,备份文件等功能。它在Kvm,Qemu社区中很流行

点我回顶部

虚拟机快照

# 创建快照
virsh snapshot-create kvm1  # 默认生成的快照的名字是 一串时间戳数字
virsh snapshot-create-as kvm1 snap2   # 指定快照名字 
virsh snapshot-create-as --domain kvm1 --name snap3 --description 'test snapshot3'  # 添加快照描述
# 快照配置文件的默认目录为/var/lib/libvirt/qemu/snapshot/
# 查看某一个虚拟机的某一个快照的配置信息
virsh snapshot-dumpxml kvm1 snap3
# 修改快照的名字 
virsh snapshot-edit kvm1 --rename aaa bbb   # 危险 

# 如果需要做快照的虚拟机有多个qcow2文件组成(不同的qcow2对应的不同的磁盘挂载),那么,在创建快照时,应该加上–atomic参数,以便保证创建快照操作的原子性
virsh snapshot-create kvm1 --atomic
	# 或者
virsh snapshot-create-as kvm1 snap5 --atomic

# 查看快照概览信息  
virsh snapshot-info kvm1 snap2
# 查看虚拟机快照树
virsh snapshot-list kvm1 --tree
# 查看某个快照的父快照
virsh snapshot-parent kvm1 snap3

# 查看虚拟机的状态在哪个快照状态之后
virsh snapshot-current  kvm1  # 默认显示其快照详细信息 ,  --name  参数只显示名字 
# 指定恢复到某个快照的状态
virsh snapshot-revert kvm1 --snapshotname snap2
# 默认恢复到最近的快照 
virsh snapshot-revert kvm1 --current

# 单独只删除某一个快照 
virsh snapshot-delete kvm1 snap7
# 删除某一个快照的同时,将其所有后裔快照一并删除 
virsh snapshot-delete kvm1 snap6 --children
# 删除某一个快照的所有后裔快照,但不删除快照本身 
virsh snapshot-delete kvm1 snap2 --children-only



网络

# 查看网络信息
virsh net-list

虚拟机系统自动化安装脚本

待更新...

点我回顶部