KVM入门基础

一、虚拟化介绍

  • 虚拟化技术简单讲,就是把一台物理计算机虚拟成多台逻辑计算机,每个逻辑计算机里面可以运行不同的操作系统,相互不受影响,这样就可以充分利用硬件资源。VMware Workstation就是虚拟化。
    虚拟机管理器Hypervisor(VMM),它是用来管理逻辑计算机的。
    虚拟化技术分为全虚拟化和半虚拟化
  • 全虚拟化:早期的CPU硬件不支持虚拟化,虚拟机上的操作系统(guestos)要想使用cpu资源,需要通过VMM来翻译指令,这个过程比较耗费资源,这种虚拟化技术叫做全虚拟化。例如:VMware Workstation
  • 半虚拟化:通过修改guestos内核,让guestos可以直接使用CPU资源,而不需要翻译指令了,从而节省了资源,但修改内核比较鸡肋。例如:XEN

因为后续cpu厂商直接支持虚拟化,不需要通过VMM翻译指令了,无所谓半虚拟化和全虚拟化。
参考文章 :http://itoedr.lofter.com/post/1472ba_69c62fa

二、常见虚拟化软件

  • VMware系列
    • VMware workstation 适合单独计算机
    • VMware vsphere(VMware esxi)用于多台计算机(服务器),方便迁移虚拟机,从A物理机上的虚拟机迁移到B物理机上。可以让现有的模板环境去快速搭建其他机器的环境。
    • VMware Fusion(Mac)苹果系统(Unix)上使用的。
  • VirtualBox 开源 Sun公司开发,后Oracle收购Sun。类似于VMware
  • Hyper-V 商业,厂商微软,适合在Windows server上安装
  • Xen 开源的 半虚拟化(需要改内核)
  • XenServer Xen的分支软件,商业化,厂商Ctirx。
  • Openvz 开源 基于linux 虚拟机和宿主机共用一个内核,可以虚拟更多的虚拟机,缺点不够稳定,用于早期的vps
  • KVM 开源 基于linux内核模块(不需要改Linux内核)

参考文章:http://developer.huawei.com/ict/forum/thread-23385-1-1.html

三、虚拟化架构

  • 类型I:虚拟机直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”,也称为裸金属架构。
  • 类型II:虚拟机运行在传统操作系统上,同样创建的是硬件全仿真实例,被称为“托管”hypervisor。也称为宿主架构。
  • 还有一种容器虚拟化(docker):容器指虚拟机里面没有操作系统,只有应用。容器运行在真实操作系统上,创建一个独立的虚拟化实例(应用),指向底层托管操作系统,被称为“操作系统虚拟化。
    在这里插入图片描述

现在有4种虚拟化技术是当前最为成熟而且应用最为广泛的,分别是:VMWARE的ESX、微软的Hyper-V、开源的XEN和KVM。其中VMWARE的ESXHyper-VXEN都是属于类型IKVM是属于类型II

参考文章 :http://developer.huawei.com/ict/forum/thread-23385-1-1.html

四、KVM介绍

  • KVM是以色列初创公司Qumranet开发,2008年9月RedHat公司收购了Qumranet
  • KVM是完全开源的,RedHat基于KVM的虚拟化解决方案叫做RHEV
  • KVM是Linux内核的一个模块,它把Linux内核变成了一个Hypervisor
  • KVM在Linux操作系统里面以进程的形式出现,由标准的Linux调度程序进行调度,这使得KVM能够使用Linux内核的已有功能
  • 只有一个KVM内核模块还不能实现虚拟化的全部功能,就好比操作系统只有内核还不能成为一个完整的操作系统一样
  • QEMU是一个开源的虚拟化软件,纯软件,可以虚拟化所以的硬件,但性能不强
  • KVM基于QEMU开发了一个能够运行在用户空间的工具QEMU-KVM
  • 磁盘、网络设备等都是通过QEMU-KVM这个工具模拟出来KVM和QEMU-KVM通信是通过/dev/kvm实现的
  • libvirt是用来管理KVM虚拟机的API,其命令为virsh
    在这里插入图片描述

总结

KVM模块可以让Linux内核变为Hypervisor。QEMU-KVM可以虚拟硬件,KVM和QEMU-KVM通讯是通过/dev/kvm完成的。管理KVM是通过libvirt来操作的,命令是virsh。

五、Centos7上安装KVM

  • 在VMware上设置内存2G
    在这里插入图片描述

处理器2核,虚拟化引擎两个虚拟化相关的选项打上对勾
在这里插入图片描述
增加一个20G的虚拟磁盘,用于挂载存放虚拟机系统
在这里插入图片描述

  • 检查cpu个数
[root@zyj-01 ~]# cat /proc/cpuinfo |grep -c 'processor'
2
[root@zyj-01 ~]# grep -c 'processor' /proc/cpuinfo
2
  • 检查cpu参数是否支持虚拟化
[root@zyj-01 ~]# grep -Ei 'vmx|svm' /proc/cpuinfo

vmx表示支持intel虚拟化
svm表示支持amd虚拟化

  • 格式化新硬盘并挂载
[root@zyj-01 ~]# mkfs.xfs /dev/sdb

[root@zyj-01 ~]# blkid /dev/sdb   ##查看格式化的格式
/dev/sdb: UUID="5aedc2e7-ad52-44d6-aed4-6979bcaf323a" TYPE="xfs"

[root@zyj-01 ~]# mkdir /kvm_data
[root@zyj-01 ~]# mount /dev/sdb /kvm_data   ##把新硬盘挂载到该目录下

[root@zyj-01 ~]# vim /etc/fstab   ##系统设置开机启动挂载
/dev/sdb        /kvm_data       xfs     defaults        0 0
  • 关闭防火墙
[root@zyj-01 ~]# systemctl stop firewalld
[root@zyj-01 ~]# systemctl stop iptables
[root@zyj-01 ~]# systemctl disable firewalld
[root@zyj-01 ~]# systemctl disable iptables
[root@zyj-01 ~]# setenforce 0
  • 下载安装kvm相关的包
[root@zyj-01 ~]# yum install -y virt-*  libvirt  bridge-utils qemu-img

六、配置网卡

  • 网络模式分两种:

    • 桥接:让虚拟机和物理机同一网段的IP,相当于虚拟机和物理机串联在一起
    • NAT:物理机相当于是路由器让虚拟机连接他,他们网段不一样,相当于虚拟机和物理机并联在一起
      这里是桥接模式,其中会建立一块桥接网卡作为中介,来联系虚拟机和物理机
  • 创建桥接网卡

[root@zyj-01 ~]# cd /etc/sysconfig/network-scripts/
[root@zyj-01 network-scripts]# cp ifcfg-ens33 ifcfg-br0
  • 修改br0和ens33参数
[root@zyj-01 network-scripts]# vim ifcfg-br0

TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.80.102
NETMASK=255.255.255.0
GATEWAY=192.168.80.2
DNS1=119.29.29.29

[root@zyj-01 network-scripts]# vim ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
#IPADDR=192.168.80.102
#NETMASK=255.255.255.0
#GATEWAY=192.168.80.2
#DNS1=119.29.29.29
BRIDGE=br0

BRIDGE=br0 表示ens33指定到br0上

  • 重启网卡
[root@zyj-01 network-scripts]# systemctl restart network

br0上已经获取IP地址,ens33没有地址

[root@zyj-01 network-scripts]# ifconfig
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.80.102  netmask 255.255.255.0  broadcast 192.168.80.255
        inet6 fe80::2c4f:d9ff:febf:c3a1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:8e:31:e8  txqueuelen 1000  (Ethernet)
        RX packets 17  bytes 1150 (1.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 1576 (1.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:8e:31:e8  txqueuelen 1000  (Ethernet)
        RX packets 4437  bytes 2411669 (2.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2661  bytes 285910 (279.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  • 启动libvirtd服务
[root@zyj-01 network-scripts]# systemctl start libvirtd
[root@zyj-01 network-scripts]# ps aux |grep libvirt
root     16556  1.5  0.7 634628 14408 ?        Ssl  20:42   0:00 /usr/sbin/libvirtd

  1. 查看桥接网卡

格式:brctl show

[root@zyj-01 network-scripts]# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c298e31e8    no        ens33
virbr0        8000.525400e96738    yes        virbr0-nic

br0是我们刚刚建立模式的网卡,模式是桥接,virbr0是KVM默认桥接网卡,模式是NAT模式。当新添加的网卡网络模式看他指定哪个模式的网卡。

七、创建虚拟机安装CentOS7

  • 上传系统镜像

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W3Vcb7JF-1575507014285)(48888E2A663743048E3785A6D89EE9E4)]

  • 命令行安装Centos
[root@zyj-01 kvm_data]# virt-install --name=centos7 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/kvm_data/CentOS-7-x86_64-DVD-1708.iso --disk path=/kvm_data/centos7.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial  --extra-args="console=tty0 console=ttyS0"

--name 定义虚拟机的名字
--memory 定义内存大小 maxmemory 指定最大的内存大小
--vcpus 定义CPU个数 maxvcpus 指定最多CPU个数
--os-type 操作系统类型
--os-variant 系统版本
--location 指定iso镜像路径 也可以指定网络上镜像
--disk path 指定虚拟机硬盘的路径
--bridge 指定网络模式
--graphics 定义是否开启图像
--console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0" 定义终端的属性

Ctrl +] 离开当前终端

  • 设置centos属性
Installation

1) [x] Language settings                 2) [!] Time settings
        (English (United States))                (Timezone is not set.)
3) [!] Installation source               4) [!] Software selection
        (Processing...)                          (Processing...)
5) [!] Installation Destination          6) [x] Kdump
        (No disks selected)                      (Kdump is enabled)
7) [ ] Network configuration             8) [!] Root password
        (Not connected)                          (Password is not set.)
9) [!] User creation
        (No user will be created)
  Please make your choice from above ['q' to quit | 'b' to begin installation |
  'r' to refresh]:

1.设置语言 2.设置时间
3.安装源 4.选择的软件
5.安装的目标 6.Kdump
7.网络模式 8.系统密码
9.创建普通用户
选择对应的数字来设置他们 x 表示已经设置好的 表示未设置 c 表示确定 b 表示开始安装

  • 设置语言 选择 ChineseSimplified Chinese (China)
Language settings

Available languages
1)  Afrikaans             25)  Hindi                 48)  Oriya
2)  Amharic               26)  Croatian              49)  Punjabi
3)  Arabic                27)  Hungarian             50)  Polish
4)  Assamese              28)  Interlingua           51)  Portuguese
5)  Asturian              29)  Indonesian            52)  Romanian
6)  Belarusian            30)  Icelandic             53)  Russian
7)  Bulgarian             31)  Italian               54)  Sinhala
8)  Bengali               32)  Japanese              55)  Slovak
9)  Bosnian               33)  Georgian              56)  Slovenian
10)  Catalan               34)  Kazakh                57)  Albanian
11)  Czech                 35)  Kannada               58)  Serbian
12)  Welsh                 36)  Korean                59)  Swedish
13)  Danish                37)  Lithuanian            60)  Tamil
14)  German                38)  Latvian               61)  Telugu
15)  Greek                 39)  Maithili              62)  Tajik
16)  English               40)  Macedonian            63)  Thai
17)  Spanish               41)  Malayalam             64)  Turkish
18)  Estonian              42)  Marathi               65)  Ukrainian
19)  Basque                43)  Malay                 66)  Urdu
20)  Persian               44)  Norwegian Bokmål      67)  Vietnamese
21)  Finnish               45)  Nepali                68)  Chinese
22)  French                46)  Dutch                 69)  Zulu
Press ENTER to continue
23)  Galician              47)  Northern Sotho
24)  Gujarati
Please select language support to install.
[b to return to language list, c to continue, q to quit]: 68
================================================================================
================================================================================
Language settings

Available locales
1)  Simplified Chinese     3)  Traditional Chinese    4)  Simplified Chinese
     (China)                    (Hong Kong)                (Singapore)
2)  Traditional Chinese
     (Republic of China)
Please select language support to install.
[b to return to language list, c to continue, q to quit]: 1

  • 设置时间 选择 Set timezone —- Asia —- Shanghai
Time settings

Timezone: not set

NTP servers:not configured

1)  Set timezone
2)  Configure NTP servers
  Please make your choice from above ['q' to quit | 'c' to continue |
  'r' to refresh]: 1
================================================================================
================================================================================
Timezone settings

Available regions
1)  Europe                 6)  Pacific               10)  Arctic
2)  Asia                   7)  Australia             11)  US
3)  America                8)  Atlantic              12)  Etc
4)  Africa                 9)  Indian
5)  Antarctica
1)  Aden                  29)  Hong_Kong             56)  Pontianak
2)  Almaty                30)  Hovd                  57)  Pyongyang
3)  Amman                 31)  Irkutsk               58)  Qatar
4)  Anadyr                32)  Jakarta               59)  Qyzylorda
5)  Aqtau                 33)  Jayapura              60)  Riyadh
6)  Aqtobe                34)  Jerusalem             61)  Sakhalin
7)  Ashgabat              35)  Kabul                 62)  Samarkand
8)  Atyrau                36)  Kamchatka             63)  Seoul
9)  Baghdad               37)  Karachi               64)  Shanghai
10)  Bahrain               38)  Kathmandu             65)  Singapore
11)  Baku                  39)  Khandyga              66)  Srednekolymsk
12)  Bangkok               40)  Kolkata               67)  Taipei
13)  Barnaul               41)  Krasnoyarsk           68)  Tashkent
14)  Beirut                42)  Kuala_Lumpur          69)  Tbilisi
15)  Bishkek               43)  Kuching               70)  Tehran
16)  Brunei                44)  Kuwait                71)  Thimphu
17)  Chita                 45)  Macau                 72)  Tokyo
18)  Choibalsan            46)  Magadan               73)  Tomsk
19)  Colombo               47)  Makassar              74)  Ulaanbaatar
20)  Damascus              48)  Manila                75)  Urumqi
21)  Dhaka                 49)  Muscat                76)  Ust-Nera
22)  Dili                  50)  Nicosia               77)  Vientiane
Press ENTER to continue
23)  Dubai                 51)  Novokuznetsk          78)  Vladivostok
24)  Dushanbe              52)  Novosibirsk           79)  Yakutsk
25)  Famagusta             53)  Omsk                  80)  Yangon
26)  Gaza                  54)  Oral                  81)  Yekaterinburg
27)  Hebron                55)  Phnom_Penh            82)  Yerevan
28)  Ho_Chi_Minh
Please select the timezone.
Use numbers or type names directly [b to region list, q to quit]: 64
  • 设置虚拟硬盘的路径 选择10 GiB (vda) —- Use All Space —- Standard Partition
Probing storage...
Installation Destination

[x] 1) : 10 GiB (vda)

1 disk selected; 10 GiB capacity; 10 GiB free ...

  Please make your choice from above ['q' to quit | 'c' to continue |
  'r' to refresh]: c
================================================================================
================================================================================
Probing storage...
Installation Destination

[ ] 1) Replace Existing Linux system(s)

[x] 2) Use All Space

[ ] 3) Use Free Space

Installation requires partitioning of your hard drive. Select what space to use
for the install target.

  Please make your choice from above ['q' to quit | 'c' to continue |
  'r' to refresh]: c
================================================================================
================================================================================
Partition Scheme Options

[x] 1) Standard Partition

[ ] 2) Btrfs

[ ] 3) LVM

[ ] 4) LVM Thin Provisioning

Select a partition scheme configuration.

  Please make your choice from above ['q' to quit | 'c' to continue |
  'r' to refresh]: c
Generating updated storage configuration
Checking storage configuration...
  • 设置系统密码
Please select new root password. You will have to type it twice.

Password:
Password (confirm):

        Use of this product is subject to the license agreement found at /usr/share/centos-release/EULA

        Installation complete.  Press return to quit

注意:

出现上行文字表面系统已经安装好了,可以按Enter重启系统,但会让物理机系统一并重启,这里按Ctrl + ] 退出终端来管理虚拟机

八、虚拟机管理

命令含义
virsh list查看虚拟机列表,只能看到运行的虚拟机
virsh list --all查看虚拟机列表,包括未运行的虚拟机
virsh console 虚拟机名字进入指定虚拟机
virsh shutdown 虚拟机名字关闭虚拟机
virsh start 虚拟机名字开启虚拟机
virsh destroy 虚拟机名字类似stop,这个是强制停止
virsh undefine 虚拟机名字彻底销毁虚拟机,会删除虚拟机配置文件(/etc/libvirt/qemu/ ),virsh list --all就看不到了
virsh autostart 虚拟机名字宿主机开机该虚拟机也开机
virsh autostart --disable 虚拟机名字解除开机启动
virsh suspend 虚拟机名字挂起
virsh resume 虚拟机名字恢复
  • 查看虚拟机
[root@zyj-01 ~]# virsh list --all
Id    名称                         状态
----------------------------------------------------
1     centos7                        running

  • 关闭虚拟机
[root@zyj-01 ~]# virsh shutdown centos7
域 centos7 被关闭

  • 启动虚拟机
[root@zyj-01 ~]# virsh start centos7
域 centos7 已开始

  • 进入虚拟机
[root@zyj-01 ~]# virsh console centos7
连接到域 centos7
换码符为 ^]
这里还需要按Enter才能进入虚拟机
  • 新建的虚拟机并没有和物理机相同网段的ip地址,按dhclient获取
[root@localhost ~]# dhclient
  • 查看虚拟机的配置文件
[root@zyj-01 ~]# ls /etc/libvirt/qemu/
centos7.xml  networks

注意:

要把虚拟机彻底删除掉需要把配置文件和虚拟机的磁盘路径文件一起删除

  • 设置虚拟机开机自启动
[root@zyj-01 ~]# virsh autostart centos7
域 centos7标记为自动开始
  • 取消虚拟机开机自启
[root@zyj-01 ~]# virsh autostart --disable centos7
域 centos7取消标记为自动开始
  • 挂起虚拟机
[root@zyj-01 ~]# virsh suspend centos7
域 centos7 被挂起

  • 恢复虚拟机
[root@zyj-01 ~]# virsh resume centos7
域 centos7 被重新恢复

九、克隆虚拟机

格式:virt-clone --original虚拟机名 --name 新虚拟机名 --file 指定新的虚拟磁盘路径

  • 先把虚拟机关闭
[root@zyj-01 ~]# virsh shutdown centos7
域 centos7 被关闭

  • 克隆虚拟机
[root@zyj-01 ~]# virt-clone --original centos7 --name centos7-1 --file /kvm_data/centos7-1.img

--original 指定克隆源虚拟机
--name 指定克隆后的虚拟机名字
--file 指定目标虚拟机的虚拟磁盘文件

十、快照管理

快照就是给虚拟机的某个状态做标签,可以让虚拟机回去当时的状态

命令含义
virsh snapshot-create 虚拟机名给指定的虚拟机创建快照
virsh snapshot-list 虚拟机名列出指定的虚拟机所有快照
virsh snapshot-current 虚拟机名查看指定的虚拟机当前快照版本
virsh snapshot-revert 虚拟机名 快照tag恢复指定快照
virsh snapshot-delete 虚拟机名 快照tag删除指定快照

给虚拟机centos7做快照

[root@zyj-01 ~]# virsh snapshot-create centos7
已生成域快照 1540277111

  • 查看虚拟机centos7对应的虚拟磁盘信息
[root@zyj-01 ~]# qemu-img info /kvm_data/centos7.img
image: /kvm_data/centos7.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.2G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1540277111                0 2018-10-23 14:45:11   00:00:00.000
Format specific information:
    compat: 1.1
    lazy refcounts: true

信息中可以看到快照列表,虚拟磁盘格式分两种:raw格式的虚拟磁盘不支持做快照,qcow2支持快照

  • 列出虚拟机centos7的所有快照
[root@zyj-01 ~]# virsh snapshot-list centos7
名称               生成时间              状态
------------------------------------------------------------
1540277111           2018-10-23 14:45:11 +0800 shutoff

列出虚拟机centos7的当前快照的版本
[root@zyj-01 ~]# virsh snapshot-current centos7
<domainsnapshot>
  <name>1540277111</name>
  <state>shutoff</state>
  <creationTime>1540277111</creationTime>
  <memory snapshot='no'/>
  <disks>
    <disk name='vda' snapshot='internal'/>
    <disk name='hda' snapshot='no'/>
  </disks>

<creationTime>1540277111</creationTime>是当前最新快照的tag

  • 查看快照的配置文件
[root@zyj-01 ~]# ls /var/lib/libvirt/qemu/snapshot/centos7/
1540277111.xml

快照的配置文件路径是/var/lib/libvirt/qemu/snapshot/虚拟机名字

  • 虚拟机centos7恢复到指定快照
[root@zyj-01 ~]# virsh snapshot-revert centos7 1540277111

  • 虚拟机centos7删除指定快照
[root@zyj-01 ~]# virsh snapshot-delete centos7 1540277111
已删除域快照 1540277111

十一、磁盘格式

虚拟磁盘常用格式有两种:rawqcow2

  • 区别:磁盘占中情况上qcow2保持一致,raw不一样。raw定义磁盘多大就占多大,qcow2用多大就占多大。raw 启动的虚拟机会比 QCOW2 启动的虚拟机 I/O 效率更高,qcow2是一种当下比较主流的虚拟化磁盘格式,具有占用空间小,支持加密,支持压缩,支持快照的。 raw格式的磁盘性能比qcow2要好,但是raw格式的磁盘无法做快照
[root@zyj-01 ~]# ll -h /kvm_data/centos7*
-rw-r--r-- 1 root root 193K 10月 23 22:18 /kvm_data/centos7.qcow2
-rw-r--r-- 1 root root 2.0G 10月 23 22:10 /kvm_data/centos7.raw

[root@zyj-01 ~]# du -sh /kvm_data/centos7*
196K    /kvm_data/centos7.qcow2
0    /kvm_data/centos7.raw

命令含义
qemu-img info 虚拟磁盘路径查看虚拟磁盘格式
qemu-img create -f 格式 虚拟磁盘路径 容量创建对应格式的虚拟磁盘 -f 指定格式
qemu-img convert -O 格式 源虚拟磁盘路径 新虚拟磁盘路径虚拟磁盘转换格式 -O 指定转化的新格式
virsh edit 虚拟机名编辑虚拟机的配置文件 等同于vim /etc/libvirt/qemu/
  • 查看虚拟磁盘格式
[root@zyj-01 ~]# qemu-img info /kvm_data/centos7.img
image: /kvm_data/centos7.img
file format: qcow2

  • 创建2G的raw的格式磁盘
[root@zyj-01 ~]# qemu-img create -f raw /kvm_data/centos7.raw 2G
Formatting '/kvm_data/centos7.raw', fmt=raw size=2147483648

  • 把raw格式的磁盘转换为qcow2格式
[root@zyj-01 ~]# qemu-img convert -O qcow2 /kvm_data/centos7.raw /kvm_data/centos7.qcow2 ##类似于复制

  • 关闭虚拟机
[root@zyj-01 ~]# virsh shutdown centos7-1
  • 转化磁盘格式
[root@zyj-01 ~]# qemu-img convert -O raw /kvm_data/centos7-1.img /kvm_data/centos7-1.raw
  • 编辑虚拟机的配置文件中的格式和路径
[root@zyj-01 ~]# virsh edit centos7-1

      <driver name='qemu' type='qcow2'/>
      <source file='/kvm_data/centos7-1.img'/>

修改为raw/kvm_data/centos7-1.raw

<driver name='qemu' type='raw'/>
<source file='/kvm_data/centos7-1.raw'/>
  • 启动虚拟机
[root@zyj-01 ~]# virsh start centos7-1
域 centos7-1 已开始

十二、磁盘扩容(raw)

与VMware类似,磁盘扩容分两种。第一种是在已有的磁盘上扩容,第二种是添加新的磁盘

在已有的磁盘上扩容

  • 对centos7-1的raw磁盘增加2G
[root@zyj-01 kvm_data]# qemu-img resize /kvm_data/centos7-1.raw +2G

[root@zyj-01 kvm_data]# qemu-img info /kvm_data/centos7-1.raw   ##查看是否多了2G
image: /kvm_data/centos7-1.raw
file format: raw
virtual size: 12G (12884901888 bytes)
disk size: 1.2G

  • 进入虚拟机系统里面建立新分区来使用
[root@zyj-01 kvm_data]# virsh start centos7-1
[root@zyj-01 kvm_data]# virsh console centos7-1
  • 进入虚拟系统后使用fdisk分区
[root@localhost ~]# fdisk -l

磁盘 /dev/vda:12.9 GB, 12884901888 字节,25165824 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000ceb76

   设备 Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048     2099199     1048576   83  Linux
/dev/vda2         2099200     4196351     1048576   82  Linux swap / Solaris
/dev/vda3         4196352    20971519     8387584   83  Linux

[root@localhost ~]# fdisk /dev/vda
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): p
已选择分区 4
起始 扇区 (20971520-25165823,默认为 20971520):
将使用默认值 20971520
Last 扇区, +扇区 or +size{K,M,G} (20971520-25165823,默认为 25165823):
将使用默认值 25165823
分区 4 已设置为 Linux 类型,大小设为 2 GiB

添加新的磁盘

  • 创建新的虚拟硬盘
[root@zyj-01 kvm_data]# qemu-img create -f raw /kvm_data/centos7-1-1st.raw 2G

[root@zyj-01 kvm_data]# qemu-img info /kvm_data/centos7-1-1st.raw
image: /kvm_data/centos7-1-1st.raw
file format: raw
virtual size: 2.0G (2147483648 bytes)
disk size: 0
  • 编辑虚拟机配置文件添加新建磁盘的路径
[root@zyj-01 kvm_data]# virsh edit centos7-1
  • 复制上段
<disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/kvm_data/centos7-1.raw'/>
  <target dev='vda' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
  • source file='/kvm_data/centos7-1-1st.raw'target dev='vdb'slot='0x08'
<disk type='file' device='disk'>
  <driver name='qemu' type='raw'/>
  <source file='/kvm_data/centos7-1-1st.raw'/>
  <target dev='vdb' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>

slot中的数字必须和配置文件其他的slot不一样,否则报错

  • 在虚拟机里面为新增的虚拟磁盘创建分区
[root@zyj-01 kvm_data]# virsh start centos7-1
[root@zyj-01 kvm_data]# virsh console centos7-1

[root@localhost ~]# fdisk /dev/vdb

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-4194303,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-4194303,默认为 4194303):
将使用默认值 4194303
分区 1 已设置为 Linux 类型,大小设为 2 GiB

[root@localhost ~]# mkfs.xfs /dev/vdb1  ##格式化
[root@localhost ~]# mkdir /newdisk
[root@localhost ~]# mount /dev/vdb1 /newdisk/  ##挂载目录

[root@localhost ~]# vi /etc/fstab  ##添加开机启动
/dev/vdb1        /newdisk       xfs     defaults        0 0

一般在生产环境中都会使用新增虚拟磁盘来扩容

十三、磁盘扩容(qcow2)

qcow2格式磁盘的扩容和raw格式磁盘一样都是有两种方式,但必须先把快照给删除掉才扩容

[root@zyj-01 ~]# qemu-img resize /kvm_data/centos7.img +2G
qemu-img: Can't resize an image which has snapshots
qemu-img: This image does not support resize
只能把虚拟机centos7的快照给删除掉
[root@zyj-01 ~]# virsh snapshot-delete centos7 1540366135
已删除域快照 1540366135

在已有的磁盘上扩容

[root@zyj-01 ~]# qemu-img resize /kvm_data/centos7.img +2G
[root@zyj-01 ~]# virsh start centos7
[root@zyj-01 ~]# virsh console centos7
[root@localhost ~]# fdisk /dev/vda

添加新qcow2格式磁盘

[root@zyj-01 ~]# qemu-img create -f qcow2 /kvm_data/centos7-1st.img 2G

[root@zyj-01 ~]# virsh edit centos7
  • 添加
<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2'/>
  <source file='/kvm_data/centos7-1st.img'/>
  <target dev='vdb' bus='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>
[root@zyj-01 ~]# virsh start centos7
[root@zyj-01 ~]# virsh console centos7
[root@localhost ~]# fdisk /dev/vdb  ##创建分区
[root@localhost ~]# mkfs.xfs /dev/vdb1  ##格式化
[root@localhost ~]# mkdir newdisk
[root@localhost ~]# mount /dev/vdb1 /newdisk/  ##挂载目录
[root@localhost ~]# vi /etc/fstab  ##添加开机启动
/dev/vdb1 /newdisk      xfs     defaults 0 0

十四、调整cpu内存和网卡

命令含义
virsh dominfo 虚拟机名查看虚拟机cpu内存信息
virsh domiflist 虚拟机名查看虚拟机网卡信息
virsh domblklist 虚拟机名查看虚拟机磁盘信息
virsh setmem 虚拟机名 内存大小动态调整虚拟机内存
virsh setvcpus 虚拟机名 cpu个数动态调整虚拟机CPU
virsh attach-interface 虚拟机名 –type 模式 –source 源网卡动态添加虚拟机网卡
virsh dumpxml centos7 > /etc/libvirt/qemu/虚拟机名.xml保存配置
  • 查看虚拟机centos7配置信息
[root@zyj-01 ~]# virsh dominfo centos7
Id:             -
名称:       centos7
UUID:           6f6ab168-26db-4f73-8041-2aba9471747f
OS 类型:    hvm
状态:       关闭
CPU:          1
最大内存: 1048576 KiB
使用的内存: 524288 KiB
持久:       是
自动启动: 禁用
管理的保存: 否
安全性模式: none
安全性 DOI: 0
  • 查看虚拟机centos7网卡信息
[root@zyj-01 ~]# virsh domiflist centos7
接口     类型     源        型号      MAC
-------------------------------------------------------
vnet0      bridge     br0        virtio      52:54:00:38:70:49
  • 查看虚拟机centos7-1磁盘信息
[root@zyj-01 ~]# virsh domblklist centos7-1
目标     源
------------------------------------------------
vda        /kvm_data/centos7-1.raw
vdb        /kvm_data/centos7-1-1st.raw
hda        -
  • 也可以直接编辑配置文件来查看信息来调整cpu 内存 网卡
[root@zyj-01 ~]# virsh edit centos7

<domain type='kvm'>
  <name>centos7</name>
  <uuid>6f6ab168-26db-4f73-8041-2aba9471747f</uuid>
  <memory unit='KiB'>1048576</memory>  ##分配了多少内存
  <currentMemory unit='KiB'>524288</currentMemory>  ##现在使用了多少内存
  <vcpu placement='static' current='1'>2</vcpu>  ##1表示现在使用cpu个数,2表示最大cpu个数
  <os>
  • 虚拟机启动时,在线调整内存
[root@zyj-01 ~]# virsh setmem centos7 800m
  • 虚拟机启动时,在线调整cpu
[root@zyj-01 ~]# virsh setvcpus centos7 2
  • 虚拟机启动时,在线添加网卡
[root@zyj-01 ~]# virsh attach-interface centos7 --type bridge --source virbr0
成功附加接口

增加一块新的网卡,并设置为nat网络模式(virbr0类似vmware的vmnet8),这里如果写--source br0,则网络模式为桥接

  • 由于在线调整配置只是临时,还需要让配置文件/etc/libvirt/qemu/作更新下
[root@zyj-01 ~]# virsh dumpxml centos7 > /etc/libvirt/qemu/centos7.xml

十五、迁移虚拟机

迁移虚拟机就是拷贝xml文件和img文件到远程机器上。再使用define让他出现在virsh list上。克隆虚拟机只是在本机上。

步骤

  • 拷贝xml配置文件到远程机器上
[root@zyj-01 ~]# rsync -av /etc/libvirt/qemu/centos7-1.xml 192.168.80.104:/tmp/
  • 拷贝虚拟硬盘的文件到远程机器上
[root@zyj-01 ~]# virsh domblklist centos7-1  ##查看到centos7-1有两个磁盘文件
目标     源
------------------------------------------------
vda        /kvm_data/centos7-1.raw
vdb        /kvm_data/centos7-1-1st.raw
hda        -

[root@zyj-01 ~]# rsync -av /kvm_data/centos7-1.raw 192.168.80.104:/kvm_data/
[root@zyj-01 ~]# rsync -av /kvm_data/centos7-1-1st.raw 192.168.80.104:/kvm_data/
  • 定义新的虚拟机

在zyj04上

[root@zyj04 ~]# cp /tmp/centos7-1.xml /etc/libvirt/qemu/  ##把配置文件拷贝到配置目录上
[root@zyj04 ~]# virsh define /etc/libvirt/qemu/centos7-1.xml  ##定义指定配置文件

[root@zyj04 ~]# virsh start centos7-1  ##进入新虚拟机
[root@zyj04 ~]# virsh console centos7-1

总结

平时备份虚拟机只要备份(/etc/libvirt/qemu/centos7.xml)配置文件和(/kvm_data/centos7.img)磁盘文件即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值