配置虚拟机:
一张网卡 , 虚拟化打勾 , 添加硬盘60G , 处理器两个。

虚拟化在调节处理器
里:
查看内存 。查看是否虚拟化:
[root@en3 ~]# free
total used free shared buff/cache available
Mem: 3861364 216764 3424756 11872 219844 3413488
Swap: 2097148 0 2097148
[root@en3 ~]# grep -Ei 'vmx|svm' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
格式化硬盘;
[root@en3 ~]# mkfs.ext4 /dev/sdb
查看格式化信息;
[root@en3 ~]# blkid /dev/sdb
/dev/sdb: UUID="59c75662-d279-4727-901e-eafb153ec76e" TYPE="ext4"
挂载磁盘:
[root@en3 ~]# mkdir /kvm_data
[root@en3 ~]# mount /dev/sdb /kvm_data/
[root@en3 ~]# vi /etc/fstab
/dev/sdb /kvm_data ext4 defaults 0 0
关闭防火墙:
[root@en3 ~]# systemctl stop firewalld && systemctl disable firewalld && iptables -F && setenforce 0
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
安装KVM :
yum install -y virt-* libvirt bridge-utils qemu-img
配置网卡:
[root@en3 ~]# cd /etc/sysconfig/network-scripts/
[root@en3 network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@en3 network-scripts]# vi ifcfg-br0
TYPE=bridge
BOOTPROTO=none
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.200.6
NETMASK=255.255.255.0
GATEWAY=192.168.200.2
DNS1=114.114.114.114
DNS2=8.8.8.8
[root@en3 network-scripts]# vi ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
[root@en3 network-scripts]# systemctl restart network
[root@en3 network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 00:0c:29:3b:7b:c2 brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:54:82:34 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:54:82:34 brd ff:ff:ff:ff:ff:ff
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:3b:7b:c2 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.6/24 brd 192.168.200.255 scope global noprefixroute br0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe3b:7bc2/64 scope link
valid_lft forever preferred_lft forever
启动libvirt
[root@en3 network-scripts]# systemctl start libvirtd
[root@en3 network-scripts]# ps -ef |grep libvirt
root 3480 1 0 15:41 ? 00:00:00 /usr/sbin/libvirtd
nobody 3588 1 0 15:41 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root 3589 3588 0 15:41 ? 00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
root 4089 3457 0 15:49 pts/1 00:00:00 grep --color=auto libvirt
[root@en3 network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c293b7bc2 no ens33
virbr0 8000.525400548234 yes virbr0-nic
安装镜像 上传镜像并安装:
传完的镜像先移动到 /tmp/xia
[root@en3 ~]# mv CentOS-7-x86_64-DVD-1511.iso /tmp/
[root@en3 ~]# 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-1511.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:定义终端额外的参数。
接下来就配置字符串虚拟机了。
口诀是:主要安装 { 1 。2 。 5 。 8 。 }
1 (语言) 68 (中文) 1 (简体)
2 (时间 ) 5 (亚洲 ) 62 (上海)
5 (磁盘) c c 1 c
8 (密码) 000000 000000
(检测到密码太短) yes
b (安装)
ctrl + ] 可以退出
kvm应用基础
列举所有虚拟机
[root@en3 qemu]# virsh list --all
登录虚拟机
[root@en3 qemu]# virsh console test
回车在输入密码:
启动虚拟机:
[root@en3 qemu]# virsh start test
关闭虚拟机
[root@en3 ~]# virsh shutdown test
强制停止
[root@en3 ~]# virsh destroy test
彻底摧毁虚拟机
[root@en3 ~]# virsh undefine test
本机虚拟机开启虚拟机也开启同步
[root@en3 ~]# virsh autostart test
解除同步
[root@en3 ~]# virsh autostart --disable test
挂起虚拟机
[root@en3 ~]# virsh suspend test
恢复虚拟机(要有基本的配置文件)
[root@en3 ~]# virsh resume test
克隆虚拟机
先关闭虚拟机
[root@en3 ~]# virsh shutdown test
克隆虚拟机:
[root@en3 ~]# virt-clone --original test --name test02 --file /kvm_data/test02.img
命令解释:
–original:指定克隆源虚拟机。
–name:指定克隆后的虚拟机名字。
–file:指定目标虚拟机的虚拟磁盘文件。
查那个看/etc/libvirt/qemu文件是否有新的文件生成
[root@en3 ~]# ls /etc/libvirt/qemu
启动克隆的虚拟机test02,首先查看虚拟机列表,然后启动克隆的虚拟机test02
[root@en3 ~]# virsh list --all
[root@en3 ~]# virsh start test02
快照管理
创建快照
[root@en3 qemu]# virsh snapshot-create test
查看所有快照
[root@en3 ~]# virsh snapshot-list test
查看当前快照版本
[root@en3 ~]# virsh snapshot-current test
查看test.img 文件 本查看文件列表
[root@en3 ~]# qemu-img info /kvm_data/test.img
查看所有快照的配置文件
[root@en3 ~]# ls /var/lib/libvirt/qemu/snapshot/test/
恢复指定快照 ;
[root@en3 ~]# virsh snapshot-revert test 1615379437
删除指定快照
[root@en3 ~]# virsh snapshot-delete test 1615379437
创建一个raw格式的磁盘
[root@en3 ~]# qemu-img create -f raw /kvm_data/test-1.img 2G
查看磁盘格式
[root@en3 ~]# qemu-img info /kvm_data/test-1.img
转换磁盘
[root@en3 ~]# qemu-img convert -O qcow2 /kvm_data/test-1.img /kvm_data/test-2.img
对比
[root@en3 ~]# ls -lh /kvm_data/
总用量 2.9G
drwx------. 2 root root 16K 3月 10 14:57 lost+found
-rw-------. 1 qemu qemu 1.2G 3月 10 21:17 test02.img
-rw-r--r--. 1 root root 2.0G 3月 10 21:16 test-1.img
-rw-r--r--. 1 root root 193K 3月 10 21:23 test-2.img
-rw-------. 1 qemu qemu 11G 3月 10 20:39 test.img
[root@en3 ~]# du -sh /kvm_data/test-1.img
0 /kvm_data/test-1.img
[root@en3 ~]# du -sh /kvm_data/test-2.img
196K /kvm_data/test-2.img
转换磁盘格式关闭虚拟机在修改配置文件并启动对比所属组 (raw格式不能生成快照)
[root@en3 ~]# qemu-img convert -O raw /kvm_data/test02.img /kvm_data/test02_2.img
[root@en3 ~]# virsh list
Id 名称 状态
----------------------------------------------------
2 test02 running
[root@en3 ~]# virsh shutdown test02
[root@en3 ~]# virsh list
Id 名称 状态
----------------------------------------------------
[root@en3 ~]# virsh edit test
...........
44 <driver name='qemu' type='raw'/>
45 <source file='/kvm_data/test02_2.img'/>
.............
[root@en3 ~]# ls -l /kvm_data/
-rw-------. 1 root root 1191575552 3月 10 21:41 test02.img
[root@en3 ~]# virsh start test02
[root@en3 ~]# ls -l /kvm_data/
-rw-------. 1 qemu qemu 1191575552 3月 10 21:41 test02.img
磁盘扩容
给raw格式扩容,(方法一)查看是否更新。
[root@en3 ~]# qemu-img resize /kvm_data/test02_2.img +2G
[root@en3 ~]# qemu-img info /kvm_data/test02_2.img
关闭虚拟机,重新启动虚拟机,(是为了更新信息)在进入虚拟机查看实际大小
[root@en3 ~]# virsh shutdown test02
[root@en3 ~]# virsh start test02
[root@en3 ~]# virsh console test02
[root@localhost ~]# fdisk -l
方法二:
在虚拟机里分区:
[root@localhost ~]# fdisk /dev/vda
n
p
w
返回主虚拟机,添加此磁盘,编辑配置文件。复制 33 -40 在修改文件
**
代码块内的** **内的文字是修改的 ** **不需要写
**
[root@en3 ~]# qemu-img create -f raw /kvm_data/test02_3.raw +5G
[root@en3 ~]# virsh edit test02
33 <devices>
34 <emulator>/usr/libexec/qemu-kvm</emulator>
35 <disk type='file' device='disk'>
36 <driver name='qemu' type='raw'/>
37 <source file='/kvm_data/test02.img'/>
38 <target dev='vda' bus='virtio'/>
39 <address type='pci' domain='0x0000' bus='0x 00' slot='0x06' function='0x0'/>
40 </disk>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='**raw**'/>
<source file='/kvm_data/**test02_3.raw**'/>
<target dev='**vdb**' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
开机,并进入:
[root@en3 ~]# virsh start test02
[root@en3 ~]# virsh console test02
[root@localhost ~]# fdisk -l
qcow2格式
第一方法 内部划分
[root@en3 ~]# qemu-img resize /kvm_data/test.img +2G
[root@en3 ~]# qemu-img info /kvm_data/test.img
[root@en3 ~]# virsh snapshot-delete 1591372520
[root@en3 ~]# qemu-img resize /kvm_data/test.img +2G
qemu-img resize /kvm_data/test.img +2G
若提示qemu-img: Can’t resize an image which has snapshots,需要删除快照
qemu-img info /kvm_data/test.img
virsh destroy test
virsh start test
virsh console test
fdisk -l 查看磁盘情况,并分新的分区
第二方法:添加磁盘
除了对已有磁盘扩容外,还可以额外增加磁盘
qemu-img create -f qcow2 /kvm_data/test_2.img 5G
virsh edit test //增加…,注意更改source、target、slot
virsh destroy test
virsh start test
调整cpu, 内存, 网卡
查看配置
[root@en3 ~]# virsh dominfo test
Id: -
名称: test
UUID: e00bc78a-cbaf-414d-a2af-c72ba94c1760
OS 类型: hvm
状态: 关闭
CPU: 1
最大内存: 1048576 KiB
使用的内存: 524288 KiB
持久: 是
自动启动: 禁用
管理的保存: 否
安全性模式: selinux
安全性 DOI: 0
修改cpu,和内存配置,进入配置文件
[root@en3 ~]# virsh edit test
5 <currentMemory unit='KiB'**>624288**</currentMemory >
[root@en3 ~]# virsh start test
[root@en3 ~]# virsh dominfo test
Id: 9
名称: test
UUID: e00bc78a-cbaf-414d-a2af-c72ba94c1760
OS 类型: hvm
状态: running
CPU: 1
CPU 时间: 11.2s
最大内存: 1048576 KiB
使用的内存: 1048576 KiB
持久: 是
自动启动: 禁用
管理的保存: 否
安全性模式: selinux
安全性 DOI: 0
安全性标签: system_u:system_r:svirt_t:s0:c356,c440 (permissive)
[root@en3 ~]# virsh console test
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 590384 110260 385584 6788 94540 358000
Swap: 1048572 0 1048572
动态调整内存
[root@en3 ~]# virsh setmem test 800M
[root@en3 ~]# virsh dominfo test
Id: 9
名称: test
UUID: e00bc78a-cbaf-414d-a2af-c72ba94c1760
OS 类型: hvm
状态: running
CPU: 1
CPU 时间: 19.3s
最大内存: 1048576 KiB
使用的内存: 819200 KiB
持久: 是
自动启动: 禁用
管理的保存: 否
安全性模式: selinux
安全性 DOI: 0
安全性标签: system_u:system_r:svirt_t:s0:c356,c440 (permissive)
[root@en3 ~]# virsh console test
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 766 106 568 6 92 541
Swap: 1023 0 1023
减少内存:
[root@en3 ~]# virsh setmem test 500M
[root@en3 ~]# virsh console test
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 466 105 268 6 92 241
Swap: 1023 0 1023
查看网卡配置
[root@en3 ~]# virsh domiflist test
接口 类型 源 型号 MAC
-------------------------------------------------------
vnet1 bridge br0 virtio 52:54:00:c2:0c:a2
[root@en3 ~]# virsh attach-interface test --type bridge --source virbr0
[root@en3 ~]# virsh domiflist test
接口 类型 源 型号 MAC
-------------------------------------------------------
vnet1 bridge br0 virtio 52:54:00:c2:0c:a2
vnet2 bridge virbr0 rtl8139 52:54:00:c7:f0:93
[root@en3 ~]# virsh attach-interface test --type bridge --source br0
[root@en3 ~]# virsh console test
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:c2:0c:a2 brd ff:ff:ff:ff:ff:ff
3: ens9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:c7:f0:93 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.204/24 brd 192.168.122.255 scope global noprefixroute dynamic ens9
valid_lft 3493sec preferred_lft 3493sec
inet6 fe80::41df:c8ab:d47a:61fc/64 scope link noprefixroute
valid_lft forever preferred_lft forever
4: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:13:8c:c1 brd ff:ff:ff:ff:ff:ff
inet 192.168.200.140/24 brd 192.168.200.255 scope global noprefixroute dynamic ens10
valid_lft 1723sec preferred_lft 1723sec
inet6 fe80::43e:ae88:bae7:dc57/64 scope link noprefixroute
valid_lft forever preferred_lft forever
**
迁移虚拟机
**
该方式要确保虚拟机是关机状态
virsh shutdown test
virsh dumpxml test > /etc/libvirt/qemu/test03.xml // 如果是远程机器,需要把该配置文件拷贝到远程机器上
virsh domblklist test //查看虚拟机磁盘所在目录
rsync -av /kvm_data/test.img /kvm_data/test03.img //如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上 速度慢
vi /etc/libvirt/qemu/test03.xml //因为是迁移到本机,配置文件用的是test子机的配置,不改会有冲突,所以需要修改该文件,如果是远程机器不用修改
修改domname: test03
修改uuid(随便改一下数字,位数不要变)
修改磁盘路径
virsh define /etc/libvirt/qemu/test03.xml //定义新虚拟机
virsh list --all //会发现新迁移的test03子机
本文详细介绍了KVM虚拟化的配置过程,包括创建虚拟机、设置内存和CPU、安装操作系统、管理网络、克隆虚拟机、创建与管理快照、磁盘扩容以及虚拟机迁移等关键操作。通过实例演示了KVM在Linux环境中的应用,帮助读者掌握KVM虚拟化技术。
4466

被折叠的 条评论
为什么被折叠?



