zoukankan      html  css  js  c++  java
  • KVM -> 虚拟机管理&console登录_02

    1、KVM虚拟机管理操作

    virsh命令常用参数总结

     

      1、开机关机:

    virsh list (只可以查看运行的虚拟机)

    virsh list  --all (全部都可以查看)

    开机与关机

    virsh start centos7    //开启虚拟机centos7
    virsh destroy centos7    //关闭电源模式关闭虚拟机centos7,如果跑了数据库,不允许使用destroy关闭

     virsh shutdown  centos7     //正常关机

      2、配置文件&备份恢复

    • 磁盘文件   例: centos7.raw   -> 在虚拟机的安装目录
    • 配置文件   例: centos7.xml  -> /etc/libvirt/qemu/centos7.xml

    1、当第一次安装完成后,查看虚拟机的安装目录如下,centos2.raw是磁盘文件。

    2、虚拟机的默认配置文件,/etc/libvirt/qemu/

    3、备份配置文件,virsh dumpxml centos7 > centos7.xml(关机时备份)

    配置文件内容如下

    [root@kvm01 opt]# virsh dumpxml web-49 
    <domain type='kvm' id='1'>
      <name>web-49</name>      -----------------------------  虚拟机名字
      <uuid>3eebab41-4355-4d7e-8532-d7a0bbb6d7b0</uuid>
      <memory unit='KiB'>1048576</memory>    ----------------------  内存大小  
      <currentMemory unit='KiB'>1048576</currentMemory>
      <vcpu placement='static'>1</vcpu>  -------------------  Cpu核心
      <resource>
        <partition>/machine</partition>
      </resource>
      <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='full'>
        <model fallback='forbid'>Broadwell</model>
        <feature policy='disable' name='hle'/>
        <feature policy='disable' name='rtm'/>
        <feature policy='require' name='hypervisor'/>
        <feature policy='disable' name='erms'/>
        <feature policy='require' name='xsaveopt'/>
      </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='raw'/>
          <source file='/opt/centos2.raw'/>    -------------   硬盘路径
          <backingStore/>
          <target dev='vda' bus='virtio'/>
          <alias name='virtio-disk0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
        </disk>
        <disk type='file' device='cdrom'>
          <driver name='qemu' type='raw'/>
          <backingStore/>
          <target dev='hda' bus='ide'/>
          <readonly/>
          <alias name='ide0-0-0'/>
          <address type='drive' controller='0' bus='0' target='0' unit='0'/>
        </disk>
        <controller type='usb' index='0' model='ich9-ehci1'>
          <alias name='usb'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x7'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci1'>
          <alias name='usb'/>
          <master startport='0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0' multifunction='on'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci2'>
          <alias name='usb'/>
          <master startport='2'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x1'/>
        </controller>
        <controller type='usb' index='0' model='ich9-uhci3'>
          <alias name='usb'/>
          <master startport='4'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x2'/>
        </controller>
        <controller type='pci' index='0' model='pci-root'>
          <alias name='pci.0'/>
        </controller>
        <controller type='ide' index='0'>
          <alias name='ide'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
        </controller>
        <controller type='virtio-serial' index='0'>
          <alias name='virtio-serial0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
        </controller>
        <interface type='network'>
          <mac address='52:54:00:82:75:2f'/>
          <source network='default' bridge='virbr0'/>
          <target dev='vnet0'/>
          <model type='virtio'/>
          <alias name='net0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
        </interface>
        <serial type='pty'>
          <source path='/dev/pts/0'/>
          <target port='0'/>
          <alias name='serial0'/>
        </serial>
        <console type='pty' tty='/dev/pts/0'>
          <source path='/dev/pts/0'/>
          <target type='serial' port='0'/>
          <alias name='serial0'/>
        </console>
        <channel type='unix'>
          <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-1-web-49/org.qemu.guest_agent.0'/>
          <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
          <alias name='channel0'/>
          <address type='virtio-serial' controller='0' bus='0' port='1'/>
        </channel>
        <input type='tablet' bus='usb'>
          <alias name='input0'/>
          <address type='usb' bus='0' port='1'/>
        </input>
        <input type='mouse' bus='ps2'>
          <alias name='input1'/>
        </input>
        <input type='keyboard' bus='ps2'>
          <alias name='input2'/>
        </input>
        <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'>
          <listen type='address' address='0.0.0.0'/>
        </graphics>
        <video>
          <model type='cirrus' vram='16384' heads='1' primary='yes'/>
          <alias name='video0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
        </video>
        <memballoon model='virtio'>
          <alias name='balloon0'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
        </memballoon>
      </devices>
      <seclabel type='none' model='none'/>
      <seclabel type='dynamic' model='dac' relabel='yes'>
        <label>+107:+107</label>
        <imagelabel>+107:+107</imagelabel>
      </seclabel>
    </domain>
    View Code

    4、删除虚拟机配置

    # 查看
    [root@kvm ~]# virsh list --all 
     Id    名称                         状态
    ----------------------------------------------------
     -     centos7                      关闭
    # 删除
    [root@kvm ~]# virsh undefine centos7 
    域 centos7 已经被取消定义                //这是翻译
    [root@kvm ~]# virsh list --all 
     Id    名称                         状态

    删除虚拟机,配置文件会被删除,但是磁盘文件不会删除

     

    5、导入虚拟机,只能恢复配置文件丢失的情况,恢复备份的配置文件

    # 导入
    [root@kvm ~]# virsh define centos7.xml 
    定义域 centos7(从 centos7.xml)      //翻译内容
    # 查看
    [root@kvm ~]# virsh list --all 
     Id    名称                         状态
    ----------------------------------------------------
     -     centos7                        关闭

     

    6、当磁盘文件丢失,恢复如下

    模拟:把磁盘文件改名为7.raw。提示找不到/opt/centos2.raw。

    使用: virsh edit centos7(这个是虚拟机的名称)   -> 查找 centos2.raw 改成 centos7.raw

    注释:用virsh edit 去修改配置文件,有语法检查,如果使用centos7.xml没有语法检测。(修改用edit,自带语法检查)

      3、修改虚拟机名称

    开机状态下修改会报如下错误:

      4、虚拟机挂起与恢复

      5、查询虚拟机vnc端口

    [root@kvm ~]# virsh vncdisplay centos7 
    :0  
    # :0 即 为 5900 端口,以此类推 :1为5901 。  

    VNC也可以使用短的端口号连接:

     

      6、开机自启与取消开机自启

    # 设置 libvirtd 服务开机自启动。
    [root@kvm ~]# systemctl is-enabled libvirtd.service 
    enabled
    
    设置宿主机开机虚拟机在其他
    [root@kvm ~]# virsh autostart centos7 
    域 clsn7标记为自动开始    //翻译英文内容
    
    # 实质为创建软连接 [root@kvm ~]# ll /etc/libvirt/qemu/autostart/centos7.xml lrwxrwxrwx 1 root root 27 1月 22 12:17 /etc/libvirt/qemu/autostart/centos7.xml -> /etc/libvirt/qemu/centos7.xml 取消开机自启动 [root@kvm ~]# virsh autostart --disable centos7 域 clsn7取消标记为自动开始    //翻译英文内容

    有软连接,就会开机自启虚拟机登录

    2、kvm虚拟机console登录

    注:就是执行 virsh console 的时候,宿主机可以控制虚拟机

    如果是10网段想远程控制172网段的宿主机,是无法使用VNC的(10网段只能访问10网段的,不可以访问172网段)。那这个时候我们有修改宿主机的需求,就可以使用console登录的方式。

    通过连接跳板机,再通过跳板机,远程控制宿主机。

    KVM宿主机:就是在宿主机上会运行大量的虚拟机,我们称之为KVM宿主机

      CentOS 7.X 版本console登录

     1、使用ssh 远程登录虚拟机:ssh root@虚拟机的Ip地址。

    2、 查看登录的ip

    3、查看宿主机,也有相同的ip地址,因为有这块网卡的存在,才能使用ssh远程连接虚拟机。

    该操作仅限centos7

    centos7的kvm虚拟机:
    grubby --update-kernel=ALL --args="console=ttyS0,115200n8"   ----->  使用命令直接插入

    可以使用命令插入,也可以进入配置文件修改,(修改配置文件的100行,和114行,加入 : console=ttyS0,115200n8

    使用diff命令比较

    重启完成后reboot,使用virsh console 连接虚拟机。  

    [root@kvm ~]# virsh console centos7 (虚拟机名字)
    连接到域 centos7
    换码符为 ^]
    CentOS Linux 7 (Core)
    Kernel 3.10.0-327.el7.x86_64 on an x86_64
    
    centos7 login: root
    Password: 
    Last login: Mon Jan 22 12:24:48 from 192.168.122.1
    [root@clsn7 ~]# w
     12:26:11 up 0 min,  1 user,  load average: 0.09, 0.03, 0.01
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     ttyS0                     12:26    3.00s  0.02s  0.01s w

     注:ttys0是终端的名字,和配置时候的参数一致,后面的内容为频率。(串口的频率,交换机的一些内容)

      CentOS 6.X 版本console登录

    作业1:实现centos6的kvm虚拟机,console命令行登录? 

    安装一台centos6的kvm虚拟机:需要在/data目录下导入6.9的镜像

    virt-install --virt-type kvm --os-type=linux --os-variant rhel6 
    --name clsn6 --memory 1124 --vcpus 1 
    --disk /data/clsn6/clsn-6.raw,format=raw,size=10 
    --cdrom /data/CentOS-6.9-x86_64-bin-DVD1.iso 
    --network network=default --graphics vnc,listen=0.0.0.0,port=5901 
    --noautoconsole

    新安装一台虚拟机后,是无法通过virsh console 命令连入虚拟机中的,这时我们需要开启虚拟机的console功能。

    以下操作都在虚拟机中进行:

    1、添加ttyS0的许可,允许root登陆:

    [root@clsn6 ~]# echo "ttyS0" >> /etc/securetty 
    

    2、编辑/etc/grub.conf中加入console=ttyS0

    在该文件的第16行。kernel选项后添加

    [root@clsn6 ~]# sed -i '/	kernel/s#.*#& console=ttyS0#g' /etc/grub.conf
    [root@clsn6 ~]# sync  # 同步配置到 /boot/grub/grub.conf
    [root@clsn6 ~]# cat -n  /etc/grub.conf 
         1    # grub.conf generated by anaconda
         2    #
         3    # Note that you do not have to rerun grub after making changes to this file
         4    # NOTICE:  You have a /boot partition.  This means that
         5    #          all kernel and initrd paths are relative to /boot/, eg.
         6    #          root (hd0,0)
         7    #          kernel /vmlinuz-version ro root=/dev/vda3
         8    #          initrd /initrd-[generic-]version.img
         9    #boot=/dev/vda
        10    default=0
        11    timeout=5
        12    splashimage=(hd0,0)/grub/splash.xpm.gz
        13    hiddenmenu
        14    title CentOS 6 (2.6.32-696.el6.x86_64)
        15        root (hd0,0)
        16        kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=48532582-c271-4c0a-b55f-395fe16cd8aa rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet console=ttyS0
        17        initrd /initramfs-2.6.32-696.el6.x86_64.img

    3、编辑/etc/inittab

    在最后一行加入内容 S0:12345:respawn:/sbin/agetty ttyS0 115200  

    [root@clsn6 ~]# echo 'S0:12345:respawn:/sbin/agetty ttyS0 115200' >>/etc/inittab
    

    4、以上操作都完成后,重启虚拟机

    [root@clsn6 ~]# reboot
    

    以下操作在kvm宿主机上执行:  

    1、检查虚拟机的状态

    [root@kvm ~]# virsh list --all
     Id    名称                         状态
    ----------------------------------------------------
     11    clsn7                          running
     21    clsn6                          running

    2、进行连接测试

    [root@kvm ~]# virsh console clsn6 
    连接到域 clsn6
    换码符为 ^]  # 注:退出virsh console连接的方法,使用组合键Ctrl+]即可
    
    CentOS release 6.9 (Final)
    Kernel 2.6.32-696.el6.x86_64 on an x86_64
    
    clsn6 login: root
    Password: 
    Last login: Mon Jan 22 05:44:25 on ttyS0
    [root@clsn6 ~]# who
    root     ttyS0        2018-01-22 05:50
    # 登陆成功,查看登陆接口为之前设置的ttyS0
  • 相关阅读:
    Linux 系统中用户切换(su user与 su
    linux 用户打开进程数和文件数调整
    hive sql 语法详解
    iOS
    iOS
    MySQL的事务的处理
    iOS
    iOS AOP编程思想及实践
    iOS 静态库和动态库(库详解)
    iOS 沙盒目录结构及正确使用
  • 原文地址:https://www.cnblogs.com/tim1blog/p/9915189.html
Copyright © 2011-2022 走看看