kvm 虚拟化

本文详细介绍了KVM虚拟化的配置过程,包括创建虚拟机、设置内存和CPU、安装操作系统、管理网络、克隆虚拟机、创建与管理快照、磁盘扩容以及虚拟机迁移等关键操作。通过实例演示了KVM在Linux环境中的应用,帮助读者掌握KVM虚拟化技术。

配置虚拟机:

一张网卡 , 虚拟化打勾 , 添加硬盘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子机

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值