Linux技术

2025-09-11 02:08:08

虚拟化(KVM)为什么不用vm?KVM安装1.虚拟机配置2.安装虚拟机3.挂载新硬盘4.关闭防火墙和selinux5.安装KVM需要用到的包6.配置网卡与服务 ★启动KVM1.上传iso镜像2.开始安装3.启动时的配置KVM基本管理KVM的基础操作1.克隆虚拟机2.快照管理3.磁盘格式4.磁盘扩容5.调整CPU,内存,网卡6.迁移虚拟机

虚拟化(KVM)虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

为什么不用vm?VM相对于KVM技术,更臃肿一些,VM适合刚解除虚拟机的萌新。并且虚拟机化分为全虚拟,半虚拟化。

KVM安装

1.虚拟机配置

要添加一块额外硬盘

2.安装虚拟机安装完成后使用命令查看内存

free -h #-h 自动识别要显示的内存类型

grep -Ei 'vmx|svm' /pro/cpuinfo #查看CPU是否开启虚拟化#命令本质是查看/pro/cpuinfo中,是否有vmx和svm字符

不需要管为什么显示的不一样,只要显示字符了即可。

3.挂载新硬盘lsblk #查看虚拟机磁盘情况#主要就是查看是否有这块sdb磁盘

将这块sdb磁盘格式化

mkfs.ext4 /dev/sdb #将sdb磁盘格式化为ext4格式Proceed anyway? (y,n) y #同意即可blkid /dev/sdb #查看磁盘的信息

创建保存KVM虚拟机的文件夹,将磁盘挂载上去

mkdir /kvm_data #在根目录创建文件夹mount -o loop /dev/sdb /kvm_data #挂载磁盘到该文件夹,-o loop 循环挂载,重启了不会取消挂载

4.关闭防火墙和selinuxsystemctl stop firewalldsystemctl disable firewalldvi /etc/selinux/config #SELINUX=disabled 修改这一位置的内容

5.安装KVM需要用到的包#挂载本地yum源(省略)yum install -y virt-* libvirt bridge-utils qemu-img qemu-kvm

6.配置网卡与服务 ★cd /etc/sysconfig/network-scripts/ #进入网卡配置文件夹cp ifcfg-ens33 ifcfg-br0 #复制个NAT网卡配置文件,br0(桥接网卡)

br0网卡配置文件:

TYPE=Bridge #TYPE改为 Bridge,代表桥接网卡PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO=static #静态DEFROUTE="yes"NAME=br0 #NAME和DEVICE都要改为br0 DEVICE=br0ONBOOT="yes"IPADDR=192.168.174.110 #这里要添加NAT网卡的IPADDR,NETMASK等配置。NETMASK=255.255.255.0GATEWAY=192.168.174.2DNS1=8.8.8.8

ens33网卡配置文件:

TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO=static #静态DEFROUTE="yes"NAME="ens33"DEVICE="ens33"ONBOOT="yes"BRIDGE=br0 #BRIDGE这里填写为桥接网卡

(其实部分配置无需删除,只是删除了排版好一点。哪些要删,要改自行分辨。)

重启网卡与服务,查看网卡是否配置成功

service network restart #重启网卡,如果这里显示错误,就是有问题ip a #查看网卡#正常来说,NAT网卡将没有IP,新建的br0网卡会有IP。lsmod | grep kvm #查看是否有服务启动systemctl start libvirtd #启动libvirt服务brctl show #使用brctl看到俩网卡,就代表成功

启动KVM

1.上传iso镜像将所需要的的ISO镜像上传到/tmp文件夹下。

但是大多情况下,会上传到/root/文件夹下,所以通过下面命令进行转移

cd #只输入一个cd,进入到家目录下mv CentOS-7-x86_64-DVD-1804.iso /tmp/ #转移镜像到/tmp/文件夹下

2.开始安装virt-install --name=test --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1804.iso --disk path=/kvm_data/test.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"

命令解释:

—name:指定虚拟机的名称。

—memory:指定分配给虚拟机的内存资源大小。

maxmemory:指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源。

—vcpus:指定分配给虚拟机的CPU核心数量。

maxvcpus:指定可调节的最大CPU核心数量。

—os-type:指定虚拟机安装的操作系统类型。

—os-variant:指定系统的发行版本。

—location:指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL。

—disk path:指定虚拟硬盘所存放的路径及名称,size则是指定该硬盘的可用大小,单位是G。

—bridge:指定使用哪一个桥接网卡,也就是说使用桥接的网络模式。

—graphics:指定是否开启图形。

—console:定义终端的属性,target_type 则是定义终端的类型。

—extra-args:定义终端额外的参数。

3.启动时的配置当你启动成功,并且没有报错时,会出现以下界面。

英文自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。

1.语言设置 2.时间设置 3.设置源 4.软件设置 5.设置磁盘 6.设置名称 7.网络结构 8.管理员密码

目前仅需设置,2,5,8。

输入2

2——1——2——63(ShangHai)

输入5

如果没特殊要求,三次“c” continue

输入8

输入后:自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。自行翻译。

除了7和9,其他的”[]”里面带上 X 就可以继续了。此时按下b,静待安装

KVM基本管理查看虚拟机列表

virsh list #查看虚拟机列表virsh list --all #查看虚拟机列表,包括已经关闭的virsh console test #进入指定虚拟机virsh shutdown test #关闭虚拟机virsh start test #开启虚拟机virsh destroy test #强制停止virsh undefine test #彻底销毁虚拟机virsh autostart test #设置开机绑定virsh autostart --disable test #解除开启启动virsh suspend test #挂起virsh resume test #恢复

KVM的基础操作

1.克隆虚拟机virsh shutdown test #关闭test虚拟机virt-clone --original test --name test02 --file /kvm_data/test02.img#以test为基准,创建名称为test02的克隆机,文件为test02.img

命令解释:

—original:指定克隆源虚拟机。

—name:指定克隆后的虚拟机名字。

—file:指定目标虚拟机的虚拟磁盘文件。

查看虚拟机的配置文件 /etc/libvirt/qemu/ 是否增加了test02.xml

2.快照管理Vmware中我们常用快照来功能,但是KVM中的RAW格式的虚拟磁盘不支持做快照,qcow2。

查看是否生成域快照。并且在Snapshot list中查看是否生成快照。或者使用命令:

virsh snapshot-list test #查看快照列表virsh snapshot-current test #查看当前快照版本ls /var/lib/libvirt/qemu/snapshot/test/ #查看快照配置文件virsh snapshot-revert test 1639995456 #恢复指定快照virsh snapshot-delete test 1639995456 #删除指定快照

3.磁盘格式查看虚拟磁盘格式

qemu-img info /kvm_data/test.img

创建2GB的RAW格式磁盘,命令如下:

qemu-img create -f raw /kvm_data/test_1.img 2G#Formatting '/kvm_data/test_1.img', fmt=raw size=2147483648

RAW格式的磁盘转换为qcow2格式

qemu-img convert -O qcow2 /kvm_data/test_1.img /kvm_data/test_1.qcow2

test_1.img创建完成,可以查看一下。

将test02转换为raw模式

qemu-img convert -O raw /kvm_data/test02.img /kvm_data/test02_2.raw更改磁盘格式和文件路径,然后启动test02虚拟机

virsh edit test02 更改test02的XML配置文件

启动虚拟机test02,然后查看磁盘所属用户和组

此时的test02.img变为了qemu qemu 代表这个磁盘正在被使用。

4.磁盘扩容磁盘有两种格式,一种是RAW,一种是qcow2。然后我们对两种磁盘格式进行扩容。

首先是RAW格式扩容

qemu-img resize /kvm_data/test02_2.raw +2G#Image resized.qemu-img info /kvm_data/test02_2.raw #查看test02_2.raw信息

进入虚拟机,使用fdisk -l 查看磁盘

可以看到从刚开始设置的10变为12G了。现在我们开始分区。

此时我们开始进行分区,并且查看分区情况

除了扩容磁盘,我们还可以添加额外的磁盘。

qemu-img create -f raw /kvm_data/test02_3.raw 5G#创建新的raw磁盘,存储空间为5Gvirsh destroy test02 #关闭虚拟机virsh start test02 #开启虚拟机

#进入test02,然后查看磁盘virsh console test02

此时我们看到,多了一块qcow2格式磁盘。

5.调整CPU,内存,网卡查看虚拟机配置信息

编辑虚拟机,根据图中进行修改最大内存,可用内存和最大cpu

重启虚拟机,查看配置信息

还可以进行动态修改:

virsh setmem test 800m#动态修改内存virsh setvcpus test 2#动态修改cpu,只可以添加不可以减少virsh dominfo test#此时再通过命令查看配置信息virsh dumpxml test > /etc/libvirt/qemu/test.xml#将配置写入到配置文件中

查看网卡列表

virsh domiflist test#增加一块新的网卡,并设置为NAT网络模式(virbr0类似VMware的VMnet8),这里如果写--source br0,则网络模式为桥接,命令如下:virsh attach-interface test --type bridge --source virbr0virsh dumpxml test > /etc/libvirt/qemu/test.xml

进入到test虚拟机,我们会发现多了一张网卡

6.迁移虚拟机首先关闭虚拟机,然后查看虚拟机磁盘所在的目录

virsh dumpxml test > /etc/libvirt/qemu/test03.xml#如果是远程机器,需要把该配置文件拷贝到远程机器上yum install -y rsyncrsync -av /kvm_data/test.img /kvm_data/test03.img#如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上

vi /etc/libvirt/qemu/test03.xml

最后重新定义虚拟机,并且查看虚拟机列表。此时就迁移成功