Kvm–安装和基本管理以及命令行创建虚拟机

Kvm–安装和基本管理以及命令行创建虚拟机携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情 Kvm安装 安装环境: 查看cpu是否支持虚拟化: 查看KVM模块是否安装: 安装有两种方式,组包安装,分

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情

Kvm安装

  1. 安装环境:

image.png

  1. 查看cpu是否支持虚拟化:

    cat /proc/cpuinfo | grep vmx
    #有结果就行
    
  2. 查看KVM模块是否安装:

    [root@localhost ~]# lsmod | grep kvm
    kvm_intel             170086  3 
    kvm                   566340  1 kvm_intel
    irqbypass              13503  1 kvm
    
  3. 安装有两种方式,组包安装,分别安装

    (1)推荐组包安装,这样不会遗漏安装包,直接用本地镜像文件就行

    ##########################这是CentOS6的安装方法,现在也可以用#########################
    yum  -y upgrade
    yum -y group install virtualization-hypervisor
    yum -y group install virtualization-platform
    yum -y group install virtualization-tools
    #并且新增加如下包:
    yum -y group install virtualization-client  #虚拟化客户端,有了它会有VMM
    yum -y group install gnome-desktop    #它的作用是显示图形化,(包有点大)
    #安装完毕后,输入:
    startx     #启动图形化
    ####################CentOS7安装####################
    yum install -y *qemu* *virt* librbd1-devel
    如果安装出错:
    yum  -y upgrade
    

    (2)分个安装:

    yum -y install qemu-kvm                                    ####KVM 模块
    yum -y install qemu-kvm-tools                              ####KVM 调试工具,可不安装
    yum -y install virt-install                                ####构建虚拟机的命令行工具
    yum -y install qemu-img                                 ####qemu 组件,创建磁盘、 启动虚拟机等
    yum -y install bridge-utils                                ####网络支持工具
    yum -y install libvirt                                     ####虚拟机管理工具
    yum -y install virt-manager                                ####图形界面管理虚拟机然后输入:
    
  4. 安装完毕后,开启libvart服务:

     systemctl restart libvirtd        ####开启libvirtd服务
     systemctl enable libvirtd  
    

    小总结:使用virt去创建虚拟机需要.xml文件,使用virt-install创建虚拟机需要参数,virt大部分是用来管理 虚拟机的,qemu-img 用来创建磁盘,启动虚拟机

飞机驾驶舱的安装

[root@node1 ~]# yum install -y cockpit
#开启服务
[root@node1 ~]# systemctl restart cockpit
#查看9090端口
tcp    LISTEN     0      128                                 :::9090                                            :::*                   users:(("cockpit-ws",pid=68265,fd=3),("systemd",pid=1,fd=24))
#浏览器访问IP+端口
用户名:root
密码:root
#关闭服务
[root@node1 ~]# systemctl stop cockpit.socket

虚拟机的组成部分

  1. 虚拟机的配置文件:

    [root@compute images]# cd /etc/libvirt/qemu
    [root@compute qemu]# ll
    total 212
    -rw-r--r--. 1 root root 196616 Nov 28 11:35 bo.qcow2
    -rw-------. 1 root root   4143 Nov 28 10:14 bo.xml
    -rw-------. 1 root root   4152 Nov 28 15:35 instance-00000014.xml     #.xml文件时虚拟机的配置文件
    drwx------. 3 root root     23 Nov 25 09:48 networks
    
  2. 虚拟磁盘文件:

    ll /var/lib/libvirt/images/
    

    虚拟机上由这两部分组成的(.xml文件,磁盘文件)

Kvm基本管理

  1. 查看vm2的配置文件

    virsh dumpxml vm2
    
  2. 导出配置文件

    virsh dumpxml vm2 > /etc/libvitr/image/node6.xml
    
  3. 修改node6.xml文件

    [root@kvm qemu]# virsh edit vm2       #vm2是虚拟机的名称
    

    也可以用vi去编辑,需要注意:vi编辑的需要重启libvirtd,edit不用

  4. 暂停和恢复虚拟机

    virsh suspend vm2       #暂停
    virsh resume vm2        #恢复
    virsh shutdown vm2      #关机
    virsh reboot vm2        #重启
    virsh reset  vm2        #重置,它是断电重启,速度要比reboot快
    virsh undefine vm2      #删除虚拟机的配置文件,虚拟机本身没有删除,磁盘文件也没有删除
    virsh destroy vm2       #删除虚拟机,都会删除完
    virsh autostart vm2     #宿主机启动虚拟机自动启动
    virsh autostart --disable vm2    #取消开机自启
    

命令行创建虚拟机

虚拟机的组成部分:

  1. 虚拟机的配置文件:

    [root@kvm ~]# ls /etc/libvirt/qemu/
    centos7.0.xml  networks
    ​
    
  2. 虚拟机的磁盘文件

    [root@kvm ~]# cd /var/lib/libvirt/images/
    [root@kvm images]# ll
    total 5243908
    -rw-------. 1 root root 5369757696 Nov 28 17:22 centos7.0.qcow2
    

    可见虚拟机由.xml文件和虚拟磁盘文件两部分组成

根据配置文件和虚拟磁盘文件创建虚拟机

  1. 我已经用图形化创建一个虚拟机了,就用这个虚拟机的.xml文件和虚拟vi盘文件当模板,完全copy一份,用俩创建第二个虚拟机

  2. copy .xml文件

    [root@kvm ~]# cd /etc/libvirt/qemu/
    [root@kvm qemu]# cp centos7.0.xml vm2.xml
    [root@kvm qemu]# ll
    total 16
    -rw-------. 1 root root 4761 Nov 28 17:14 centos7.0.xml
    drwx------. 3 root root   42 Nov 28 17:11 networks
    -rw-------. 1 root root 4761 Nov 28 17:29 vm2.xml
    
  3. copy .qcow2文件:

    [root@kvm qemu]# cd /var/lib/libvirt/images/
    [root@kvm images]# ll
    total 5243908
    -rw-------. 1 root root 5369757696 Nov 28 17:22 centos7.0.qcow2
    [root@kvm images]# cp centos7.0.qcow2 vm2.qcow2
    [root@kvm images]# ll
    total 10487812
    -rw-------. 1 root root 5369757696 Nov 28 17:22 centos7.0.qcow2
    -rw-------. 1 root root 5369757696 Nov 28 17:30 vm2.qcow2
    
  4. 修改vm2.xml文件

    • 修改name
    • 修改UUID,(随便换个数字)
    • (可选)修改mem,修改CPU
    • 修改虚拟磁盘文件的路径
    • 修改mac地址,注意:只能修改后三段

    文件如下:

    [root@kvm qemu]# cat vm2.xml 
    <!--
    WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
    OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
      virsh edit vm2
    or other application using the libvirt API.
    -->
    ​
    <domain type='kvm'>           
      <name>vm2</name>            #将name修改
      <uuid>14cbd456-ac02-4837-96a4-0eab4e7ff93c</uuid>       #修改UUID唯一标识,(随便换个数字)
      <memory unit='KiB'>1024000</memory>           #修改
      <currentMemory unit='KiB'>1024000</currentMemory>      #修改
      <vcpu placement='static'>2</vcpu>        #修改
      <os>
        <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
        <boot dev='hd'/>
      </os>
      <features>
        <acpi/>
        <apic/>
      </features>
      <cpu mode='custom' match='exact' check='partial'>
        <model fallback='allow'>Broadwell-noTSX-IBRS</model>
        <feature policy='require' name='md-clear'/>
        <feature policy='require' name='spec-ctrl'/>
        <feature policy='require' name='ssbd'/>
      </cpu>
      <clock offset='utc'>
        <timer name='rtc' tickpolicy='catchup'/>
        <timer name='pit' tickpolicy='delay'/>
        <timer name='hpet' present='no'/>
      </clock>
      <on_poweroff>destroy</on_poweroff>
      <on_reboot>restart</on_reboot>
      <on_crash>destroy</on_crash>
      <pm>
        <suspend-to-mem enabled='no'/>
        <suspend-to-disk enabled='no'/>
      </pm>
      <devices>
        <emulator>/usr/libexec/qemu-kvm</emulator>
        <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
          <source file='/var/lib/libvirt/images/vm2.qcow2'/>       #修改为刚才复制的虚拟磁盘文件,后缀也可以是.img
          <target dev='vda' bus='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
        </disk>
        <disk type='file' device='cdrom'>
          <driver name='qemu' type='raw'/>
          <target dev='hda' bus='ide'/>
          <readonly/>
          <address type='drive' controller='0' bus='0' target='0' unit='0'/>
        </disk>
        <controller type='usb' index='0' model='ich9-ehci1'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci1'>
          <master startport='0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci2'>
          <master startport='2'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci3'>
          <master startport='4'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
        </controller>
        <controller type='pci' index='0' model='pci-root'/>
        <controller type='ide' index='0'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
        </controller>
        <controller type='virtio-serial' index='0'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
        </controller>
        <interface type='network'>
          <mac address='52:54:00:9d:76:53'/>          #修改mac地址,注意:只能修改后三段的,(后六位)
          <source network='default'/>
          <model type='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>
        <serial type='pty'>
          <target type='isa-serial' port='0'>
            <model name='isa-serial'/>
          </target>
        </serial>
        <console type='pty'>
          <target type='serial' port='0'/>
        </console>
        <channel type='unix'>
          <target type='virtio' name='org.qemu.guest_agent.0'/>
          <address type='virtio-serial' controller='0' bus='0' port='1'/>
        </channel>
        <channel type='spicevmc'>
          <target type='virtio' name='com.redhat.spice.0'/>
          <address type='virtio-serial' controller='0' bus='0' port='2'/>
        </channel>
        <input type='tablet' bus='usb'>
          <address type='usb' bus='0' port='1'/>
        </input>
        <input type='mouse' bus='ps2'/>
        <input type='keyboard' bus='ps2'/>
        <graphics type='spice' autoport='yes'>
          <listen type='address'/>
          <image compression='off'/>
        </graphics>
        <sound model='ich6'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
        </sound>
        <video>
          <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
        </video>
        <redirdev bus='usb' type='spicevmc'>
          <address type='usb' bus='0' port='2'/>
        </redirdev>
        <redirdev bus='usb' type='spicevmc'>
          <address type='usb' bus='0' port='3'/>
        </redirdev>
        <memballoon model='virtio'>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
        </memballoon>
        <rng model='virtio'>
          <backend model='random'>/dev/urandom</backend>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
        </rng>
      </devices>
    </domain>
    
  5. 重定义vm.xml文件使其生效

    [root@kvm qemu]# virsh define vm2.xml 
    Domain vm2 defined from vm2.xml
    
  6. 重启libvirt

    systemctl restart libvirtd
    
  7. 开启路由转发:

    [root@kvm qemu]# vi /etc/sysctl.conf 
    net.ipv4.ip_forward = 1      #添加这一行
    [root@kvm qemu]# sysctl -p         
    net.ipv4.ip_forward = 1
    
  8. 在图形化,可以看到有个vm2的虚拟机,

  9. 测试:

    使其ping www.paidu.com,正常的可以通的

    在宿主机上ssh 虚拟机的ip,也可以连

虚拟机升级配置

  1. 修改配置文件,添加磁盘,当然图形化点击也可以

    在.xml文件中找到标签

    复制一段,进行修改

     <disk type='file' device='disk'>
          <driver name='qemu' type='qcow2'/>
          <source file='/var/lib/libvirt/images/vm2-1.qcow2'/>      #这个需要自己创建,
          <target dev='vdb' bus='virtio'/>        #dev=,需要修改
          <address type='pci' domain='0x0000' bus='0x00' slot='0x17' function='0x0'/>
          #slot代表卡槽的位置,需要应该修改
    </disk>                      
    
  2. 创建个空白卷:

    [root@kvm qemu]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm2-1.qcow2 1G
    Formatting '/var/lib/libvirt/images/vm2-1.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off 
    
  3. 重定义vm2.xml文件

    [root@kvm qemu]# virsh define /etc/libvirt/qemu/vm2.xml 
    Domain vm2 defined from /etc/libvirt/qemu/vm2.xml
    

    然后Run虚拟机,查看磁盘

今天的文章Kvm–安装和基本管理以及命令行创建虚拟机分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/21416.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注