虚拟化

作者: XiaoMing丶 | 来源:发表于2019-03-23 01:49 被阅读0次

    目录

    一、了解虚拟化
    二、常见虚拟化软件
    三、虚拟化架构
    四、KVM介绍
    五、Centos7上安装KVM
    六、配置网卡
    七、创建虚拟机安装Centos7
    八、虚拟机管理
    九、克隆虚拟机
    十、快照管理
    十一、磁盘格式
    十二、磁盘扩容(raw)
    十三、磁盘扩容(qcow2)
    十四、调整cpu内存和网卡
    十五、迁移虚拟机

    一、了解虚拟化

    VMware Workstation就是虚拟化
    虚拟化简单讲,就是把一台物理计算机虚拟成多台逻辑计算机,每个逻辑计算机里面可以运行不同的操作系统,相互不受影响,这样就可以充分利用硬件资源
    关键词Hypervisor(VMM) 虚拟机管理器
    虚拟化技术分为全虚拟化和半虚拟化
    早期的CPU硬件不支持虚拟化,虚拟机上的操作系统(guestos)要想使用cpu资源,需要通过VMM来翻译指令,这个过程比较耗费资源,这种虚拟化技术叫做全虚拟化(VMware Workstation)
    半虚拟化技术通过修改guestos内核,让guestos可以直接使用CPU资源,而不需要翻译指令了,从而节省了资源,但修改内核比较鸡肋(XEN)
    后续cpu厂商直接支持虚拟化,不需要通过VMM翻译指令了,无所谓半虚拟化和全虚拟化
    参考 http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html http://itoedr.lofter.com/post/1472ba_69c62fa

    二、常见虚拟化软件

    VMware系列
    VMware workstation、VMware vsphere(VMware esxi)、VMware Fusion(Mac)
    Xen 开源 半虚拟化
    XenServer 商业,厂商Ctirx,基于Xen的
    KVM 开源 基于linux内核模块
    Hyper-V 商业,厂商微软
    Openvz 开源 基于linux 虚拟机和宿主机共用一个内核
    VirtualBox 开源 Sun公司开发 Oracle收购Sun
    http://developer.huawei.com/ict/forum/thread-23385-1-1.html

    三、虚拟化架构

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

    四、KVM介绍

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

    • KVM架构图

    五、Centos7上安装KVM

    前提是CPU支持虚拟化
    虚拟机设置内存4G,增加一个50G的虚拟磁盘,处理器2核,虚拟化引擎三个虚拟化相关的选项打上对勾
    关闭iptables或者firewalld
    关闭selinux
    格式化新磁盘,挂载到/kvm_data
    检查cpu参数是否支持虚拟化
    grep -Ei 'vmx|svm' /proc/cpuinfo
    安装kvm
    yum install -y virt-* libvirt bridge-utils qemu-img

    [root@minglinux-01 ~] free  #内存
                  total        used        free      shared  buff/cache   available
    Mem:        3863532      741024     2514740       45368      607768     2821328
    Swap:       2097148           0     2097148
    [root@minglinux-01 ~] cat /proc/cpuinfo| grep "cpu cores"| uniq  #核数
    cpu cores   : 2
    [root@minglinux-01 ~] grep -Ei 'vmx|svm' /proc/cpuinfo  #有vmx表示cpu支持虚拟化  
    flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust smep arat spec_ctrl intel_stibp arch_capabilities
    ···
    
    #查看系统磁盘情况
    [root@minglinux-01 ~] fdisk -l
    
    磁盘 /dev/sda:32.2 GB, 32212254720 字节,62914560 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x000236bc
    
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048      411647      204800   83  Linux
    /dev/sda2          411648     4605951     2097152   82  Linux swap / Solaris
    /dev/sda3         4605952    62914559    29154304   83  Linux
    
    磁盘 /dev/sdb:53.7 GB, 53687091200 字节,104857600 个扇区  #/dev/sdb就时新增的虚拟磁盘
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0xbffc2ce5
    ···
    
    #格式化磁盘
    [root@minglinux-01 ~] mkfs.ext4 /dev/sdb
    mke2fs 1.42.9 (28-Dec-2013)
    /dev/sdb is entire device, not just one partition!
    无论如何也要继续? (y,n) y
    /dev/sdb is apparently in use by the system; will not make a 文件系统 here!
    [root@minglinux-01 ~] dmsetup status
    vg1-lv1: 0 614400 linear 
    [root@minglinux-01 ~] dmsetup remove_all
    [root@minglinux-01 ~] mkfs.ext4 /dev/sdb
    mke2fs 1.42.9 (28-Dec-2013)
    /dev/sdb is entire device, not just one partition!
    无论如何也要继续? (y,n) y
    文件系统标签=
    OS type: Linux
    块大小=4096 (log=2)
    分块大小=4096 (log=2)
    Stride=0 blocks, Stripe width=0 blocks
    3276800 inodes, 13107200 blocks
    655360 blocks (5.00%) reserved for the super user
    第一个数据块=0
    Maximum filesystem blocks=2162163712
    400 block groups
    32768 blocks per group, 32768 fragments per group
    8192 inodes per group
    Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424
    
    Allocating group tables: 完成                            
    正在写入inode表: 完成                            
    Creating journal (32768 blocks): 完成
    Writing superblocks and filesystem accounting information: 完成   
    
    
    #挂载磁盘并设置开机自动挂载
    [root@minglinux-01 ~] blkid /dev/sdb
    /dev/sdb: UUID="e2119ff0-fb55-4347-a381-495e519eb26e" TYPE="ext4" 
    [root@minglinux-01 ~] mkdir /kvm_data
    [root@minglinux-01 ~] mount /dev/sdb /kvm_data/
    [root@minglinux-01 ~] vim /etc/fstab 
    #文件最后加入如下一行
    12 /dev/sdb           /kvm_data      ext4    defaults   0 0
    
    
    #关闭iptables或者firewalld,关闭selinux
    [root@minglinux-01 ~] systemctl stop firewalld
    [root@minglinux-01 ~] systemctl stop iptables
    [root@minglinux-01 ~] systemctl disable firewalld
    [root@minglinux-01 ~] systemctl disable iptables
    Removed symlink /etc/systemd/system/basic.target.wants/iptables.service.
    [root@minglinux-01 ~] iptables -nvL
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    
    Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    [root@minglinux-01 ~] getenforce 
    Disabled
    
    
    #最后安装kvm
    [root@minglinux-01 ~] yum install -y  virt-*  libvirt  bridge-utils qemu-img
    

    六、配置网卡

    配置网卡,增加桥接网卡
    设置一个br0网卡,TYPE为Bridge,IP地址设置为ens33的ip
    ens33配置文件里把IP地址去掉,增加BRIDGE=br0
    检查KVM模块是否加载
    lsmod|grep kvm
    启动libvirtd服务
    systemctl start libvirtd
    brctl show可以看到两个网卡br0和virbr0

    #设置br0桥接网卡,之前已经创建过,两个网卡
    [root@minglinux-01 ~] cat /etc/sysconfig/network-scripts/ifcfg-br0 
    TYPE=Bridge
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=br0
    #UUID=c0f01c3c-028a-4219-86db-bc442037da9b
    DEVICE=br0
    ONBOOT=yes
    IPADDR=192.168.162.130
    GATEWAY=192.168.162.2
    NETMASK=255.255.255.0
    BROADCAST=192.168.162.255
    DNS1=119.29.29.29
    DNS2=8.8.8.8
    
    [root@minglinux-01 ~] cat /etc/sysconfig/network-scripts/ifcfg-ens33
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    #UUID=c0f01c3c-028a-4219-86db-bc442037da9b
    DEVICE=ens33
    ONBOOT=yes
    #IPADDR=192.168.162.130
    #GATEWAY=192.168.162.2
    #NETMASK=255.255.255.0
    #BROADCAST=192.168.162.255
    #DNS1=119.29.29.29
    BRIDGE=br0
    
    [root@minglinux-01 ~] ip addr
    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:3f:e6:9f brd ff:ff:ff:ff:ff:ff
        inet6 fe80::20c:29ff:fe3f:e69f/64 scope link 
           valid_lft forever preferred_lft forever
    3: ens37: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
        link/ether 00:0c:29:3f:e6:a9 brd ff:ff:ff:ff:ff:ff
    4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
        link/ether 00:0c:29:3f:e6:9f brd ff:ff:ff:ff:ff:ff
        inet 192.168.162.130/24 brd 192.168.162.255 scope global br0
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fe3f:e69f/64 scope link 
           valid_lft forever preferred_lft forever
    
    
    #检查KVM模块是否加载
    [root@minglinux-01 ~] lsmod|grep kvm
    kvm_intel             183720  0 
    kvm                   578558  1 kvm_intel
    irqbypass              13503  1 kvm
    
    #启动libvirtd服务
    [root@minglinux-01 ~]  systemctl start  libvirtd
    [root@minglinux-01 ~] ps aux |grep libvirtd
    root      15584  3.6  0.4 1006920 15496 ?       Ssl  20:51   0:00 /usr/sbin/libvirtd
    root      15774  0.0  0.0 112720   984 pts/0    S+   20:51   0:00 grep --color=auto libvirtd
    
    #查看桥接网卡
    [root@minglinux-01 ~] brctl show
    bridge name bridge id       STP enabled interfaces
    br0     8000.000c293fe69f   no      ens33
    virbr0      8000.525400eae033   yes     virbr0-nic
    
    

    七、创建虚拟机安装Centos7

    上传centos7的镜像文件到虚拟机
    命令行安装centos7
    virt-install --name=minglinux01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/data/CentOS-7-x86_64-DVD-1804.iso --disk path=/kvm_data/minglinux01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
    各选项含义依次是虚拟机名称、内存、最大内存(可在线调整内存)、CPU核数、CPU最大核数、操作系统类型、操作系统版本、系统镜像路径(可以是镜像网络地址)、虚拟磁盘路径名称大小、桥接网卡名字、是否开启图形、一些终端属性。

    #rz工具最大支持2G的文件,这里使用xftp传输
    [root@minglinux-01 ~] ll CentOS-7-x86_64-DVD-1804.iso 
    -rw-r--r-- 1 root root 4470079488 3月  22 21:09 CentOS-7-x86_64-DVD-1804.iso
    [root@minglinux-01 ~] mv CentOS-7-x86_64-DVD-1804.iso /data/
    
    #开始安装
    [root@minglinux-01 ~] virt-install --name=minglinux01 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/data/CentOS-7-x86_64-DVD-1804.iso --disk path=/kvm_data/minglinux01.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
    
    开始安装......
    搜索文件 .treeinfo......                                                      |  354 B  00:00:00     
    搜索文件 vmlinuz......                                                        | 5.9 MB  00:00:00     
    ···
    ···
    Installation    #出现一些安装选项
    
     1) [x] Language settings                 2) [!] Time settings
            (English (United States))                (Timezone is not set.)
     3) [!] Installation source               4) [!] Software selectionb | Help: F1 
            (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
      Please make your choice from above ['q' to quit | 'b' to begin installation |
      'r' to refresh]: 
    #感叹号的选项需要进行选择设置,语言时区什么的就不列出了,第8项密码设置123456。最后选'b' to begin installation 
    
    
    #第5项配置
    Installation
    
     1) [x] Language settings                 2) [x] Time settings
            (Simplified Chinese (China))             (Asia/Shanghai timezone)
     3) [x] Installation source               4) [x] Software selection
            (Local media)                            (Minimal Install)
     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]: 5
    ================================================================================
    ================================================================================
    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  
    ================================================================================
    ================================================================================
    Autopartitioning Options
    
    [ ] 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]: 2
    ================================================================================
    ================================================================================
    Autopartitioning Options
    
    [ ] 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
    
    [ ] 1) Standard Partition
    
    [ ] 2) Btrfs
    
    [x] 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]: 1  
    ================================================================================
    ================================================================================
    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 make your choice from above ['q' to quit | 'c' to continue |
      'r' to refresh]: c
    Generating updated storage configuration
    ···
    ···
    Running post-installation scripts
    .
            Use of this product is subject to the license agreement found at /usr/share/centos-release/EULA
    
            Installation complete.  Press return to quit
    域安装仍在进行。您可以重新连接
    到控制台以便完成安装进程。
    
    #最后出现这哥退出提示时不需要按回车,按ctrl+]退出安装控制台,虚拟机minglinux01会继续进行重启。
    #直接按回车minglinux01进行重启会导致宿主机也重启了
    
    

    八、虚拟机管理

    安全完虚拟机需要重启,要退出虚拟机使用快捷键ctrl ]
    ps aux |grep kvm //查看kvm进程
    virsh list //查看虚拟机列表,只能看到运行的虚拟机
    virsh list --all //查看虚拟机列表,包括未运行的虚拟机
    virsh console minglinux01//进入指定虚拟机
    virsh shutdown minglinux01 //关闭虚拟机
    virsh start minglinux01 //开启虚拟机
    virsh destroy minglinux01//类似stop,这个是强制停止
    virsh undefine minglinux01//彻底销毁虚拟机,会删除虚拟机配置文件,virsh list --all就看不到了
    ls /etc/libvirt/qemu/ //可以查看虚拟机配置文件
    virsh autostart minglinux01//宿主机开机该虚拟机也开机
    virsh autostart --disable minglinux01//解除开机启动
    virsh suspend minglinux01//挂起
    virsh resume minglinux01//恢复

    [root@minglinux-01 ~] ls /kvm_data/
    lost+found  minglinux01.img
    [root@minglinux-01 ~] virsh list
     Id    名称                         状态
    ----------------------------------------------------
    
    [root@minglinux-01 ~] virsh list --all
     Id    名称                         状态
    ----------------------------------------------------
     -     minglinux01                    关闭
    
    [root@minglinux-01 ~] virsh start minglinux01
    域 minglinux01 已开始
    
    [root@minglinux-01 ~] virsh list
     Id    名称                         状态
    ----------------------------------------------------
     2     minglinux01                    running
    
    [root@minglinux-01 ~] virsh suspend minglinux01
    域 minglinux01 被挂起
    
    [root@minglinux-01 ~] virsh list
     Id    名称                         状态
    ----------------------------------------------------
     2     minglinux01                    暂停
    
    [root@minglinux-01 ~] virsh resume minglinux01
    域 minglinux01 被重新恢复
    
    [root@minglinux-01 ~] virsh list
     Id    名称                         状态
    ----------------------------------------------------
     2     minglinux01                    running
    
    #进入虚拟机
    [root@minglinux-01 ~] virsh console minglinux01
    连接到域 minglinux01
    换码符为 ^]
    
    
    CentOS Linux 7 (Core)
    Kernel 3.10.0-862.el7.x86_64 on an x86_64
    
    localhost login: root
    密码:
    [root@localhost ~]# 
    [root@localhost ~]# ip addr
    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:5e:a1:45 brd ff:ff:ff:ff:ff:ff
    
    #自动获取ip地址,网段和宿主机一样,这样获取到的ip是动态的,也可以设置为静态ip
    [root@localhost ~]# dhclient eth0
    [root@localhost ~]# ip addr
    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:5e:a1:45 brd ff:ff:ff:ff:ff:ff
        inet 192.168.162.132/24 brd 192.168.162.255 scope global dynamic eth0
           valid_lft 1798sec preferred_lft 1798sec
    [root@localhost ~]# ping baidu.com
    PING baidu.com (220.181.57.216) 56(84) bytes of data.
    64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=1 ttl=128 time=75.1 ms
    64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=2 ttl=128 time=99.7 ms
    64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=3 ttl=128 time=114 ms
     
    --- baidu.com ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2003ms
    rtt min/avg/max/mdev = 75.152/96.455/114.494/16.228 ms
    
    [root@localhost ~]# yum install -y net-tools
    [root@localhost ~]# ifconfig 
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.162.132  netmask 255.255.255.0  broadcast 192.168.162.255
            ether 52:54:00:5e:a1:45  txqueuelen 1000  (Ethernet)
            RX packets 6461  bytes 11138596 (10.6 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 3697  bytes 213441 (208.4 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 256  bytes 22272 (21.7 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 256  bytes 22272 (21.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    #看一下内存大小、CPU核数和磁盘空间
    [root@localhost ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:            479          87         140           6         251         228
    Swap:          1023           0        1023
    [root@localhost ~]# cat /proc/cpuinfo| grep "cpu cores"| uniq
    cpu cores   : 1
    [root@localhost ~]# df -h
    文件系统        容量  已用  可用 已用% 挂载点
    /dev/vda3       8.0G  1.1G  7.0G   13% /
    devtmpfs        486M     0  486M    0% /dev
    tmpfs           496M     0  496M    0% /dev/shm
    tmpfs           496M  6.7M  490M    2% /run
    tmpfs           496M     0  496M    0% /sys/fs/cgroup
    /dev/vda1      1014M  124M  891M   13% /boot
    tmpfs            48M     0   48M    0% /run/user/0
    
    
    #按ctrl+]退出minglinux01回到minglinxu-01
    [root@minglinux-01 ~] top |grep qemu-kvm #有一个qemu-kvm进程,该进程占用多少资源对应虚拟机minglinux01占用多少资源
     27255 qemu      20   0 1794888 498620   9752 S   1.0 12.9   1:11.75 qemu-kvm                           
     27255 qemu      20   0 1794888 498620   9752 S   1.0 12.9   1:11.78 qemu-kvm                           
     27255 qemu      20   0 1794888 498620   9752 S   1.0 12.9   1:11.81 qemu-kvm 
    
    #查看虚拟机配置文件
    [root@minglinux-01 ~] ls /etc/libvirt/qemu/
    minglinux01.xml  networks
    
    #虚拟磁盘文件,这个文件删除虚拟机才是完全销毁
    [root@minglinux-01 ~] ls /kvm_data/
    lost+found  minglinux01.img
    
    
    

    九、克隆虚拟机

    virsh shutdown minglinux01
    virt-clone --original minglinux01 --name minglinux02 --file /kvm_data/minglinux02.img
    --original指定克隆源虚拟机
    --name指定克隆后的虚拟机名字
    --file指定目标虚拟机的虚拟磁盘文件
    如果minglinux01虚拟机开机状态,则提示先关闭或者暂停虚拟机

    [root@minglinux-01 ~] virsh shutdown minglinux01
    [root@minglinux-01 ~] virt-clone --original minglinux01 --name minglinux02 --file /kvm_data/minglinux02.img
    正在分配 'minglinux02.img'                                                    |  10 GB  00:02:37     
    
    成功克隆 'minglinux02'。
    [root@minglinux-01 ~] virsh list --all
     Id    名称                         状态
    ----------------------------------------------------
     -     minglinux01                    关闭
     -     minglinux02                    关闭
    
    [root@minglinux-01 ~] ls /etc/libvirt/qemu/
    minglinux01.xml  minglinux02.xml  networks
    
    #启动进入minglinux02
    [root@minglinux-01 ~] virsh start minglinux02
    [root@minglinux-01 ~] virsh console minglinux02
    [root@localhost ~]# ifconfig 
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.162.132  netmask 255.255.255.0  broadcast 192.168.162.255
            ether 52:54:00:bf:74:ab  txqueuelen 1000  (Ethernet)
            RX packets 233  bytes 13766 (13.4 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 41  bytes 3828 (3.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    

    十、快照管理

    创建快照 virsh snapshot-create minglinux01
    raw格式的虚拟磁盘不支持做快照,qcow2支持
    qemu-img info /kvm_data/minglinux01.img //查看minglinux01.img信息,同时会查看到快照列表
    virsh snapshot-list minglinux01 //列出所有快照
    virsh snapshot-current minglinux01//查看当前快照版本
    ls /var/lib/libvirt/qemu/snapshot/minglinux01//查看所有快照配置文件
    virsh snapshot-revert minglinux01 1553268958//恢复指定快照
    virsh snapshot-delete minglinux01 1553268958//删除快照

    [root@minglinux-01 ~] virsh snapshot-create minglinux01
    已生成域快照 1553268958
    [root@minglinux-01 ~] qemu-img info /kvm_data/minglinux01.img
    image: /kvm_data/minglinux01.img
    file format: qcow2
    virtual size: 10G (10737418240 bytes)
    disk size: 1.3G
    cluster_size: 65536
    Snapshot list:
    ID        TAG                 VM SIZE                DATE       VM CLOCK
    1         1553268958                0 2019-03-22 23:35:58   00:00:00.000
    Format specific information:
        compat: 1.1
        lazy refcounts: true
    [root@minglinux-01 ~] qemu-img info /kvm_data/minglinux02.img
    image: /kvm_data/minglinux02.img
    file format: qcow2
    virtual size: 10G (10737418240 bytes)
    disk size: 1.3G
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: true
    [root@minglinux-01 ~] qemu-img info /kvm_data/minglinux02.img
    image: /kvm_data/minglinux02.img
    file format: qcow2
    virtual size: 10G (10737418240 bytes)
    disk size: 1.3G
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: true
    [root@minglinux-01 ~] virsh snapshot-list minglinux01
     名称               生成时间              状态
    ------------------------------------------------------------
     1553268958           2019-03-22 23:35:58 +0800 shutoff
    [root@minglinux-01 ~] virsh snapshot-current minglinux01
    <domainsnapshot>
      <name>1553268958</name>
      <state>shutoff</state>
      <creationTime>1553268958</creationTime>
    ···
    ···
    [root@minglinux-01 ~] virsh snapshot-create minglinux01
    已生成域快照 1553269577
    [root@minglinux-01 ~] virsh snapshot-list minglinux01
     名称               生成时间              状态
    ------------------------------------------------------------
     1553268958           2019-03-22 23:35:58 +0800 shutoff
     1553269577           2019-03-22 23:46:17 +0800 shutoff
    
    [root@minglinux-01 ~] virsh snapshot-revert minglinux01 1553268958
    
    [root@minglinux-01 ~] virsh snapshot-delete minglinux01 1553268958
    已删除域快照 1553268958
    
    [root@minglinux-01 ~] virsh snapshot-list minglinux01
     名称               生成时间              状态
    ------------------------------------------------------------
     1553269577           2019-03-22 23:46:17 +0800 shutoff
    
    #有写东西不一样
    [root@minglinux-01 ~] du -sh /kvm_data/*
    16K /kvm_data/lost+found
    1.4G    /kvm_data/minglinux01.img
    1.3G    /kvm_data/minglinux02.img
    [root@minglinux-01 ~] ls -lh /kvm_data/minglinux0*
    -rw------- 1 root root  11G 3月  22 23:35 /kvm_data/minglinux01.img
    -rw------- 1 qemu qemu 1.3G 3月  22 23:39 /kvm_data/minglinux02.img
    

    十一、磁盘格式

    虚拟磁盘常用格式raw、qcow2
    qemu-img info /kvm_data/minglinux01.img//查看虚拟磁盘格式
    qemu-img create -f raw /kvm_data/minglinux01_2.img 2G//创建2G的raw格式磁盘
    把raw格式的磁盘转换为qcow2格式
    qemu-img convert -O qcow2 /kvm_data/minglinux01_2.img /kvm_data/minglinux01_2.qcow2
    转换后用ls -lth查看磁盘文件的大小,可以看到qcow2文件比较小,raw文件大小和我们指定空间大小一样是2G。
    qcow2用多大就分多大,占用更小空间。
    raw格式的磁盘性能比qcow2要好,但是raw格式的磁盘无法做快照
    给minglinux02转换为raw格式的磁盘
    virsh shutdown minglinux02
    qemu-img convert -O raw /kvm_data/minglinux02.img /kvm_data/minglinux02_3.raw
    virsh edit minglinux02//更改格式和文件路径
    virsh start minglinux02

    #创建2G的raw格式磁盘
    [root@minglinux-01 ~] qemu-img create -f raw /kvm_data/minglinux01_2.img 2G
    Formatting '/kvm_data/minglinux01_2.img', fmt=raw size=2147483648 
    [root@minglinux-01 ~] qemu-img info /kvm_data/minglinux01_2.img
    image: /kvm_data/minglinux01_2.img
    file format: raw
    virtual size: 2.0G (2147483648 bytes)
    disk size: 0
    
    #把raw格式的磁盘转换为qcow2格式
    [root@minglinux-01 ~] qemu-img convert -O qcow2 /kvm_data/minglinux01_2.img /kvm_data/minglinux01_2.qcow2
    [root@minglinux-01 ~] qemu-img info /kvm_data/minglinux01_2.img
    image: /kvm_data/minglinux01_2.img
    file format: raw
    virtual size: 2.0G (2147483648 bytes)
    disk size: 0
    [root@minglinux-01 ~] qemu-img info /kvm_data/minglinux01_2.qcow2 
    image: /kvm_data/minglinux01_2.qcow2
    file format: qcow2
    virtual size: 2.0G (2147483648 bytes)
    disk size: 196K
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: false
    #对比
    [root@minglinux-01 ~] ls -lht /kvm_data/
    总用量 2.6G
    -rw-r--r-- 1 root root 193K 3月  22 23:51 minglinux01_2.qcow2
    -rw-r--r-- 1 root root 2.0G 3月  22 23:50 minglinux01_2.img
    -rw------- 1 qemu qemu 1.3G 3月  22 23:49 minglinux02.img
    -rw------- 1 root root  11G 3月  22 23:47 minglinux01.img
    drwx------ 2 root root  16K 3月  22 20:15 lost+found
    
    #给minglinux02转换为raw格式的磁盘
    [root@minglinux-01 ~] qemu-img convert -O raw /kvm_data/minglinux02.img /kvm_data/minglinux02_3.raw
    
    [root@minglinux-01 ~] ls -lht /kvm_data/
    总用量 3.9G
    -rw-r--r-- 1 root root  10G 3月  23 00:11 minglinux02_3.raw
    -rw------- 1 root root 1.3G 3月  23 00:09 minglinux02.img
    -rw-r--r-- 1 root root 193K 3月  22 23:51 minglinux01_2.qcow2
    -rw-r--r-- 1 root root 2.0G 3月  22 23:50 minglinux01_2.img
    -rw------- 1 root root  11G 3月  22 23:47 minglinux01.img
    drwx------ 2 root root  16K 3月  22 20:15 lost+found
    
    #修改minglinux02配置文件,更改格式和文件路径
    [root@minglinux-01 ~] virsh edit minglinux02
    编辑了域 minglinux02 XML 配置。
    #修改内容如下
         33       <driver name='qemu' type='raw'/>
         34       <source file='/kvm_data/minglinux02_3.raw'/>
    
    #启动minglinux02,可以看到启动后其虚拟磁盘文件的属主属组后变为qemu
    [root@minglinux-01 ~] ls -l /kvm_data/
    总用量 4057272
    drwx------ 2 root root       16384 3月  22 20:15 lost+found
    -rw-r--r-- 1 root root  2147483648 3月  22 23:50 minglinux01_2.img
    -rw-r--r-- 1 root root      197120 3月  22 23:51 minglinux01_2.qcow2
    -rw------- 1 root root 10739515904 3月  22 23:47 minglinux01.img
    -rw-r--r-- 1 root root 10737418240 3月  23 00:11 minglinux02_3.raw
    -rw------- 1 root root  1388707840 3月  23 00:09 minglinux02.img
    [root@minglinux-01 ~] virsh start minglinux02
    域 minglinux02 已开始
    
    [root@minglinux-01 ~] ls -l /kvm_data/
    总用量 4057272
    drwx------ 2 root root       16384 3月  22 20:15 lost+found
    -rw-r--r-- 1 root root  2147483648 3月  22 23:50 minglinux01_2.img
    -rw-r--r-- 1 root root      197120 3月  22 23:51 minglinux01_2.qcow2
    -rw------- 1 root root 10739515904 3月  22 23:47 minglinux01.img
    -rw-r--r-- 1 qemu qemu 10737418240 3月  23 00:11 minglinux02_3.raw
    -rw------- 1 root root  1388707840 3月  23 00:09 minglinux02.img
    
    #给明minginux02创建快照  
    [root@minglinux-01 ~] virsh snapshot-create minglinux02
    错误:不支持的配置:存储类型 vda 不支持磁盘 raw 的内部快照
    
    

    十二、磁盘扩容(raw)

    qemu-img resize /kvm_data/minglinux02_3.raw +2G
    qemu-img info /kvm_data/minglinux02_3.raw
    virsh destroy minglinux02
    virsh start minglinux02
    virsh console minglinux02
    fdisk -l 查看磁盘情况,并分新的分区
    除了对已有磁盘扩容外,还可以额外增加磁盘
    qemu-img create -f raw /kvm_data/minglinux02_2.raw 5G
    virsh edit minglinux02 //增加<disk>…</disk>,注意更改source、target、slot
    virsh destroy minglinux02
    virsh start minglinux02

    #给minglinux02机器磁盘扩容
    [root@minglinux-01 ~] ls -lh /kvm_data/
    总用量 3.9G
    drwx------ 2 root root  16K 3月  22 20:15 lost+found
    -rw-r--r-- 1 root root 2.0G 3月  22 23:50 minglinux01_2.img
    -rw-r--r-- 1 root root 193K 3月  22 23:51 minglinux01_2.qcow2
    -rw------- 1 root root  11G 3月  22 23:47 minglinux01.img
    -rw-r--r-- 1 qemu qemu  10G 3月  23 00:33 minglinux02_3.raw
    -rw------- 1 root root 1.3G 3月  23 00:09 minglinux02.img
    [root@minglinux-01 ~] qemu-img resize /kvm_data/minglinux02_3.raw +2G
    Image resized.
    [root@minglinux-01 ~] qemu-img info /kvm_data/minglinux02_3.raw
    image: /kvm_data/minglinux02_3.raw
    file format: raw
    virtual size: 12G (12884901888 bytes)
    disk size: 1.3G
    #扩容后需重启进入虚拟机才能生效
    [root@minglinux-01 ~] virsh destroy minglinux02
    域 minglinux02 被删除
    
    [root@minglinux-01 ~] virsh start minglinux02
    域 minglinux02 已开始
    
    [root@minglinux-01 ~] virsh console minglinux02
    连接到域 minglinux02
    ···
    [root@localhost ~]# fdisk -l
    
    磁盘 /dev/vda:12.9 GB, 12884901888 字节,25165824 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x00002d30
    
       设备 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
    
    #新增的2G磁盘空间是不能加现有分区的,想要利用上这2G空间可以建立新的分区,不要把原来的分区破坏
    [root@localhost ~]# fdisk /dev/vda
    欢迎使用 fdisk (util-linux 2.23.2)。
    
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    
    命令(输入 m 获取帮助):p
    
    磁盘 /dev/vda:12.9 GB, 12884901888 字节,25165824 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x00002d30
    
       设备 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
    
    命令(输入 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
    
    命令(输入 m 获取帮助):p
    
    磁盘 /dev/vda:12.9 GB, 12884901888 字节,25165824 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x00002d30
    
       设备 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
    /dev/vda4        20971520    25165823     2097152   83  Linux
    
    命令(输入 m 获取帮助):q
    
    #磁盘扩容的方式外,还可以使用额外增加磁盘的方式给虚拟机扩容
    #创建新的虚拟磁盘
    [root@minglinux-01 ~] qemu-img create -f raw /kvm_data/minglinux02_2.raw 5G
    Formatting '/kvm_data/minglinux02_2.raw', fmt=raw size=5368709120 
    [root@minglinux-01 ~] qemu-img info /kvm_data/minglinux02_2.raw
    image: /kvm_data/minglinux02_2.raw
    file format: raw
    virtual size: 5.0G (5368709120 bytes)
    disk size: 0
    
    #改配置文件
    [root@minglinux-01 ~] virsh edit minglinux02
    编辑了域 minglinux02 XML 配置。
    #新增了一组<disk>…</disk>
         32     <disk type='file' device='disk'>
         33       <driver name='qemu' type='raw'/>
         34       <source file='/kvm_data/minglinux02_3.raw'/>
         35       <target dev='vda' bus='virtio'/>
         36       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
         37     </disk>
         38     <disk type='file' device='disk'>
         39       <driver name='qemu' type='raw'/>
         40       <source file='/kvm_data/minglinux02_2.raw'/>
         41       <target dev='vdb' bus='virtio'/>
         42       <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
         43     </disk>
    [root@minglinux-01 ~] virsh destroy minglinux02
    域 minglinux02 被删除
    
    [root@minglinux-01 ~] virsh start minglinux02
    域 minglinux02 已开始
    
    [root@minglinux-01 ~] virsh console minglinux02
    
    [root@localhost ~]# fdisk -l  #可以看到新增了一块磁盘/dev/vdb
    
    磁盘 /dev/vda:12.9 GB, 12884901888 字节,25165824 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x00002d30
    
       设备 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
    
    磁盘 /dev/vdb:5368 MB, 5368709120 字节,10485760 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    
    

    十三、磁盘扩容(qcow2)

    qemu-img resize /kvm_data/minglinux01.img +2G
    若提示qemu-img: Can't resize an image which has snapshots,需要删除快照
    qemu-img info /kvm_data/minglinux01.img
    virsh destroy minglinux01
    virsh start minglinux01
    virsh console minglinux01
    fdisk -l 查看磁盘情况,并分新的分区
    除了对已有磁盘扩容外,还可以额外增加磁盘
    qemu-img create -f qcow2 /kvm_data/minglinux01_2.img 5G
    virsh edit minglinux01 //增加<disk>…</disk>,注意更改source、target、slot
    virsh destroy minglinux01
    virsh start minglinux01

    #第一种方法是对磁盘扩容
    #minglinux01.img做过快照,对其进行扩容时会报错
    [root@minglinux-01 ~] qemu-img resize /kvm_data/minglinux01.img +2G
    qemu-img: Can't resize an image which has snapshots
    qemu-img: This image does not support resize
    [root@minglinux-01 ~] virsh snapshot-delete minglinux01 1553269577
    已删除域快照 1553269577
    
    [root@minglinux-01 ~] qemu-img resize /kvm_data/minglinux01.img +2G
    Image resized.
    
    
    #第二种方法是增加磁盘
    #其实和raw类型的一样的,就不多试了
    

    十四、调整cpu内存和网卡

    virsh dominfo minglinux01 //查看配置
    virsh edit minglinux01//更改如下部分内容
    <memory unit='KiB'>1048576</memory>
    <currentMemory unit='KiB'>624288</currentMemory>
    <vcpu placement='static' current='1'>2</vcpu>
    virsh shutdown minglinux01
    virsh start minglinux01
    virsh setmem minglinux01 800m//动态调整内存
    virsh dumpxml minglinux01 > /etc/libvirt/qemu/minglinux01.xml//需要把配置写入到配置文件里
    virsh setvcpus minglinux01 2 //动态调整cpu数量
    virsh domiflist minglinux01//查看网卡
    virsh attach-interface minglinux01 --type bridge --source virbr0//增加一块新的网卡,并设置为nat网络模式(virbr0类似vmware的vmnet8),这里如果写--source br0,则网络模式为桥接
    virsh dumpxml minglinux01 > /etc/libvirt/qemu/minglinux01.xml//需要把配置写入到配置文件里

    #查看虚拟机配置
    [root@minglinux-01 ~] virsh dominfo minglinux01
    Id:             -
    名称:       minglinux01
    UUID:           c3abff95-a517-40d3-9053-13e100858e8a
    OS 类型:    hvm
    状态:       关闭
    CPU:          1
    最大内存: 1048576 KiB
    使用的内存: 524288 KiB
    持久:       是
    自动启动: 禁用
    管理的保存: 否
    安全性模式: none
    安全性 DOI: 0
    
    #改配置文件方式调整内存
    [root@minglinux-01 ~] virsh edit minglinux01
    #更改如下部分内容
    ···
          5   <currentMemory unit='KiB'>624288</currentMemory>
          6   <vcpu placement='static' current='2'>2</vcpu>
    ···
    [root@minglinux-01 ~] virsh console minglinux01
    连接到域 minglinux01
    换码符为 ^]
    
    
    CentOS Linux 7 (Core)
    Kernel 3.10.0-862.el7.x86_64 on an x86_64
    
    localhost login: root
    密码:
    Last login: Sat Mar 23 02:05:46 on ttyS0
    [root@localhost ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:            577          84         380           6         112         352
    Swap:          1023           0        1023
    
    #直接在线动态调整内存
    [root@minglinux-01 ~] virsh setmem minglinux01 800m
    
    [root@minglinux-01 ~] virsh dominfo minglinux01
    Id:             10
    名称:       minglinux01
    UUID:           c3abff95-a517-40d3-9053-13e100858e8a
    OS 类型:    hvm
    状态:       running
    CPU:          1
    CPU 时间:   62.7s
    最大内存: 1048576 KiB
    使用的内存: 819200 KiB
    持久:       是
    自动启动: 禁用
    管理的保存: 否
    安全性模式: none
    安全性 DOI: 0
    [root@localhost ~]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:            767          84         570           6         112         542
    Swap:          1023           0        1023
    
    #动态调整cpu数量
    [root@minglinux-01 ~] virsh setvcpus minglinux01 2
    
    [root@minglinux-01 ~] virsh dominfo minglinux01
    Id:             10
    名称:       minglinux01
    UUID:           c3abff95-a517-40d3-9053-13e100858e8a
    OS 类型:    hvm
    状态:       running
    CPU:          2
    CPU 时间:   64.0s
    最大内存: 1048576 KiB
    使用的内存: 819200 KiB
    持久:       是
    自动启动: 禁用
    管理的保存: 否
    安全性模式: none
    安全性 DOI: 0
    [root@minglinux-01 ~] virsh setvcpus minglinux01 1 #减少不行
    错误:不支持的配置:failed to find appropriate hotpluggable vcpus to reach the desired target vcpu count
    
    #如下命令把配置写入到配置文件里让虚拟机重启还生效
    [root@minglinux-01 ~] virsh dumpxml minglinux01 > /etc/libvirt/qemu/minglinux01.xml
    #virsh edit minglinux01看到的内容没有改变,实际上配置文件minglinux01.xml的内容已经改变了,重启虚拟机就会加载配置文件中设定的配置
    
    
    #查看网卡
    [root@minglinux-01 ~] virsh domiflist minglinux01
    接口     类型     源        型号      MAC
    -------------------------------------------------------
    vnet0      bridge     br0        virtio      52:54:00:5e:a1:45
    
    #增加一块新的网卡,设置为nat网络模式
    [root@minglinux-01 ~] virsh attach-interface minglinux01 --type bridge --source virbr0
    成功附加接口
    
    [root@minglinux-01 ~] virsh domiflist minglinux01
    接口     类型     源        型号      MAC
    -------------------------------------------------------
    vnet0      bridge     br0        virtio      52:54:00:5e:a1:45
    vnet1      bridge     virbr0     rtl8139     52:54:00:5f:83:e0
    
    #增加一块新的网卡,设置为桥接模式
    [root@minglinux-01 ~] virsh attach-interface minglinux01 --type bridge --source br0
    成功附加接口
    
    [root@minglinux-01 ~] virsh domiflist minglinux01
    接口     类型     源        型号      MAC
    -------------------------------------------------------
    vnet0      bridge     br0        virtio      52:54:00:5e:a1:45
    vnet1      bridge     virbr0     rtl8139     52:54:00:5f:83:e0
    vnet2      bridge     br0        rtl8139     52:54:00:0f:bf:b2
    
    #进入虚拟机查看网卡
    [root@localhost ~]# ifconfig 
    ens9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.122.105  netmask 255.255.255.0  broadcast 192.168.122.255
            inet6 fe80::6ccd:d72b:1815:8830  prefixlen 64  scopeid 0x20<link>
            ether 52:54:00:5f:83:e0  txqueuelen 1000  (Ethernet)
            RX packets 24  bytes 2429 (2.3 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 67  bytes 6396 (6.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    ens10: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.162.133  netmask 255.255.255.0  broadcast 192.168.162.255
            inet6 fe80::de66:f443:b986:538d  prefixlen 64  scopeid 0x20<link>
            ether 52:54:00:0f:bf:b2  txqueuelen 1000  (Ethernet)
            RX packets 128  bytes 6456 (6.3 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 13  bytes 1454 (1.4 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 52:54:00:5e:a1:45  txqueuelen 1000  (Ethernet)
            RX packets 5376  bytes 262940 (256.7 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    #ens9是NAT模式,ens10是桥接模式
    
    #当前的修改只保存在了内存里,如果想网卡修改永久生效还需要把配置写入到配置文件中
    [root@minglinux-01 ~] virsh dumpxml minglinux01 > /etc/libvirt/qemu/minglinux01.xml
    
    

    十五、迁移虚拟机

    该方式要确保虚拟机是关机状态
    virsh shutdown minglinux01
    virsh dumpxml minglinux01 > /etc/libvirt/qemu/minglinux03.xml // 如果是远程机器,需要把该配置文件拷贝到远程机器上
    virsh domblklist minglinux01 //查看虚拟机磁盘所在目录
    rsync -av /kvm_data/minglinux01.img /kvm_data/minglinux03.img //如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上
    vim /etc/libvirt/qemu/minglinux03.xml //因为是迁移到本机,配置文件用的是minglinux01子机的配置,不改会有冲突,所以需要修改该文件,如果是远程机器不用修改
    修改domname: <name>minglinux03</name>
    修改uuid(随便改一下数字,位数不要变)
    修改磁盘路径
    virsh define /etc/libvirt/qemu/minglinux03.xml //定义新虚拟机
    virsh list --all //会发现新迁移的minglinux03子机

    相关文章

      网友评论

          本文标题:虚拟化

          本文链接:https://www.haomeiwen.com/subject/ocjypqtx.html