KVM管理

qemu命令参考 https://blog.csdn.net/bravezhe/article/details/8461386

KVM管理

作者:狂客,原创文章.转载请注明来源,侵权必究

  1. 虚拟机管理
    1. virsh list --all #可以查看所有虚拟机
      
    2. virsh undefine 虚拟机名  #删除虚拟机
      
    3. virsh undefine 虚拟机名 --nvram #删除虚拟机并忽略硬盘
      
  2. 磁盘管理
    1. qemu-img create -f 类型 磁盘名 大小 #磁盘创建
      
    2. qemu-img info 磁盘名 #查看磁盘信息
      
    3. qemu-img convert -O 目标格式 源磁盘名 新磁盘名  #转换磁盘格式
      
    4. qemu-img resize 磁盘名 +大小 #改变磁盘大小
      
  3. 快照管理
    1. qemu-img snapshot -l 磁盘名 #查看快照
      
    2. qemu-img snapshot -c 快照名 磁盘名 #创建快照
      
    3. qemu-img snapshot -a 快照ID 磁盘名 #快照恢复 - 快照ID 换成 快照名 应该也可以 没试过
      
    4. qemu-img snapshot -d 快照ID 磁盘名 #快照删除 - 同上
      
  4. 派生镜像

    这里的 镜像名 与 磁盘名 可以理解为一个东西

    1. 派生镜像是什么 和 vmware的克隆一个意思。

      # 6.2.0之前
      qemu-img create -f 格式 派生镜像名 -o backing_file=源镜像名 派生镜像大小  #创建派生镜像
       # 6.2.0之后
      qemu-img create -f 格式 -F 格式 派生镜像名 -o backing_file=源镜像名 派生镜像大小  #创建派生镜像
      
    2. 如果在派生镜像做了很多操作 想以派生镜像作为源镜像 又不想牵扯镜像太多 可以使用以下方式将 派生镜像和源镜像合并。但是不建议这么搞。完全可以继续派生。

      qemu-img convert -O 格式 派生镜像 新生成的源镜像名 #源镜像和派生镜像合并
      
  5. 磁盘清理

    在基于qcow2格式的虚拟机中进行删除文件操作后,物理磁盘文件并不会变小。可以用以下方法对磁盘文件瘦身。

    1. linux系统
      dd if=/dev/zero of=~/junk #已删除的空间全填充0
      rm junk #执行完成关闭客户机
      #上面两步是在客户机完成的。如果是派生镜像需要加 -B 来指定back_file原镜像,不够要注意清理后 快照 都会消失
      qemu-img convert -O 格式 源磁盘名 新磁盘名
      
    2. win系统
      #需要安装 SDelete 软件
      C:\>sdelete -z c:
      #上面两步是在客户机完成的。如果是派生镜像需要加 -B 来指定back_file原镜像,不够要注意清理后 快照 都会消失
      # 6.2.0之后需要加上 -F qcow2
      qemu-img convert -O 格式 源磁盘名 新磁盘名
      
  6. 双机调试

host

<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm">
  ......
  <qemu:commandline>
    <qemu:arg value="-serial"/>
    <qemu:arg value="tcp::6666,server=on,nowait"/>
  </qemu:commandline>
</domain>

guest

<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm">
  ......
  <qemu:commandline>
    <qemu:arg value="-serial"/>
    <qemu:arg value="tcp:0.0.0.0:6666,reconnect=3"/>
  </qemu:commandline>
</domain>
  1. Linux文件共享

<filesystem type="mount" >
<driver type="virtiofs"/>
<source dir="/home/kuangke/kvmShare/"/>
<target dir="kvmShare"/>
</filesystem>

虚拟机里执行

sudo mount -t virtiofs kvmShare /home/kuangke/kvmShare
#mount -t 9p kvmShare /home/kuangke/kvmShare
#如果报错 wrong fs type, bad option, bad superblock. 切换个目录再试试. 如 /home/kuangke/kvmShare  就切换到 /root 文件夹.总之不能再目标文件夹路径内. 
  1. 关于远程rdp

 #使用freerdp2
  xfreerdp /u:administrator /p: /v:192.168.122.240 /size:2560x1440 /scale:140 /f /sound
  1. 关于libvirt 和 dnsmasq定义 (加入dnsmasq配置)

 <!--以下是个示例 /etc/libvirt/qemu/networks/default.xml-->
 <network xmlns:dnsmasq='http://libvirt.org/schemas/network/dnsmasq/1.0'>
  <name>default</name>
  <uuid>8081cdec-7861-4598-a0c9-703ca2ef2208</uuid>
  <forward mode='nat'>
      <nat>
          <port start='1024' end='65535'/>
      </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='52:54:00:73:9b:6b'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
      <dhcp>
          <range start='192.168.122.2' end='192.168.122.254'/>
      </dhcp>
  </ip>
  <dnsmasq:options>
      <!--置缓存大小-->
      <dnsmasq:option value="cache-size=10240"/>
      <!--监听地址-->
      <dnsmasq:option value="listen-address=127.0.0.1"/>
      <!--泛域名解析-->
      <dnsmasq:option value="address=/lxxxx/192.168.122.179"/>
  </dnsmasq:options>
</network>

需要注意的是 default.xml 在销毁网络时也会被删除.所以复制个副本出来. 需要重新定义时 把副本复制下 重命名 default.xml 即可

  1. bios信息

  <os firmware="efi">
  ....
<smbios mode="sysinfo"/>
  </os>
<sysinfo type="smbios">
   <bios>
     <entry name="vendor">biosLEN1OVO</entry>
     <entry name="version">1.24</entry>
     <entry name="date">06/21/21</entry>
   </bios>
   <system>
     <entry name="manufacturer">systemF1edora</entry>
     <entry name="product">systemManager</entry>
     <entry name="version">01.9.4</entry>
     <entry name="serial">systemk1</entry>
     <entry name="uuid">48ad498a-ef56-4388-9c90-8876d16a20f2</entry>
   </system>
   <baseBoard>
     <entry name="manufacturer">baseBoardLE1NOVO</entry>
     <entry name="product">baseBoard20BE10061MC</entry>
     <entry name="version">baseBoard0B981401 Pro</entry>
     <entry name="serial">baseBoardW1KS4127111E</entry>
   </baseBoard>
   <chassis>
     <entry name="manufacturer">chassisDe1ll Inc.</entry>
     <entry name="version">2.112</entry>
     <entry name="serial">chassis65X10XF2</entry>
     <entry name="asset">chassis400010101</entry>
     <entry name="sku">chassisType13Sku1</entry>
   </chassis>
   <oemStrings>
     <entry>oemStrings1</entry>
     <entry>oemStrings2</entry>
   </oemStrings>
 </sysinfo>
  1. 如果虚拟机不稳定.比如运行段时间 假死 或者 蓝屏CLOCK_WATCHDOG_TIMEOUT(101) 可以试试下面的 主要是-cpu, 其他是调试用的

  <qemu:commandline>
   <qemu:arg value="-trace"/>
   <qemu:arg value="/var/log/libvirt/qemu/kuangke-trace.log"/>
   <qemu:arg value="-monitor"/>
   <qemu:arg value="stdio"/>
   <qemu:arg value="-D"/>
   <qemu:arg value="/var/log/libvirt/qemu/kuangke.log"/>
   <qemu:arg value="-cpu"/>
   <qemu:arg value="host,hv_time,hv_relaxed,hv_vpindex,hv-synic,hv-ipi,hv-tlbflush,hv-runtime,hv-frequencies,hv_vapic,hv-stimer,hv-stimer-direct,hv_spinlocks=0x1fff,hv_vendor_id=xeon"/>
 </qemu:commandline>
  <!--使用VT调试情况下 使用以下参数-->
 <!-- 排除 hv-ipi, hv-tlbflush -->
   <qemu:arg value="host,hv_time,hv_relaxed,hv_vpindex,hv-synic,hv_vapic,hv-stimer,hv-stimer-direct,hv-runtime,hv-frequencies,hv_spinlocks=0x1fff,hv_vendor_id=xeon"/>
posted @ 2022-05-05 10:44  狂客  阅读(61)  评论(0编辑  收藏  举报