WinXP:

#!/bin/bash

name=winxp

qemu-system-x86_64 \
-enable-kvm \
-cpu host -smp ,sockets=,cores=,threads= \
-m \
-net user \
-drive file=./WinXP.img,if=none,cache=writeback,id=${name}_disk -device ide-hd,drive=${name}_disk \
-drive file=./WinXP.iso,readonly=on,media=cdrom \
-boot order=cd \
-name ${name} \
-display gtk

一、管理 images

1、创建

  qemu-img create -f raw -o size=10G,nocow=on base.raw  #nocow 用于关闭 btrfs 的写时复制,仅对新创建的文件生效

2、扩容

  qemu-img resize base.raw +20G

3、查询信息

  qemu-img info base.raw

4、转换格式

  qemu-img convert -c -O qcow2 base.raw base.qcow2

5、增量创建

  qemu-img create -f qcow2 -o size=20G,nocow=on,backing_file=base.qcow2 linux.qcow2  #批量运行时减少磁盘占用

6、重改基础镜像

  qemu-img rebase [-u] -b /PATH/TO/xxx.qcow2 linux.qcow2  # -u 指 unsafe 模式,无需检验,通常用于基础镜像移动位置或重命名之后

二、管理 snapshot

1、创建

  qemu-img snapshot -c v0.1_snapshot linux.qcow2

2、查询

  qemu-img snapshot -l linux.qcow2

3、应用

  qemu-img snapshot -a v0.1_snapshot linux.qcow2

4、删除

  qemu-img snapshot -d v0.1_snapshot linux.qcow2

三、热拔插

# 首先需要客户机载入:modprobe pci_hotplug

# 然后在 monitor 中操作

  drive_add 0 media=disk,file=/PATH/TO/xxx.qcow2,if=none,id=vd0  #添加到 Qemu

  device_add virtio-blk-pci,drive=vd0  #插入到客户机

  drive_del tmp_0  #移除

四、Gentoo

  /etc/portage/package.use/qemu:

  vhost-net -nls -iscsi -nfs -opengl -jpeg -png -usb -usbredir -curl -selinux -spice -ncurses -sdl -gtk -xen -alsa -bluetooth

五、示例

  init.sh:

 #!/usr/bin/env sh
#
# 、目录结构:conf、images、ISOs
# 、安装镜像存放于"../ISOs"路径下,命名格式:FreeBSD.iso
# 、配置好每个OS的基础镜像,置于"../images"路径下,命名格式:FreeBSD_base.img
# if [[ $ == '' ]];then
VmNum=
printf "\033[31;01m\$VmNum is not specified, defaults to 1\n\033[00m"
elif [[ $ =~ [-] ]];then
VmNum=$
else
printf "\033[31;01m\$1 is not a number!!!\n\033[00m"
exit
fi if [[ $ == '' ]];then
OS=Gentoo
printf "\033[31;01mOS is not specified, defaults to \"Gentoo\"\n\033[00m"
else
OS=$
fi ISO=${OS}.iso
BaseImg=${OS}_base.img
CpuNum=
Mem=4G
MaxMem=8G
DiskSiz=200G
MaxVmNum=
HostIP=192.168.0.254 if [[ $ -gt $MaxVmNum ]];then
printf "\033[31;01mvmNum > ${MaxVmNum}!!!\n\033[00m"
exit
fi case $OS in
FreeBSD)
Version=
AddrPos=
;;
Gentoo)
Version=
AddrPos=
;;
RHEL)
Version=
AddrPos=
;;
Debian)
Version=
AddrPos=
;;
Ubuntu)
Version=
AddrPos=
;;
*)
printf "\033[31;01mUnknown OS name!!!\n\033[00m"
printf "Supported OS name:FreeBSD Gentoo RHEL Debian Ubuntu\n"
exit
;;
esac vmFunc() {
qemu-system-x86_64 \
-enable-kvm \
-machine q35,accel=kvm -device intel-iommu \
-cpu host -smp $CpuNum,sockets=$CpuNum,cores=,threads= \
-m $Mem,slots=,maxmem=$MaxMem \
-netdev tap,ifname=${OS}_$,script=tap.sh,downscript=no,id=vmNic_${OS}_$ -device virtio-net-pci,mac=::::$:${Version},netdev=vmNic_${OS}_$ \
-drive file=../images/$ImgName,if=none,cache=writeback,media=disk,id=vmDisk_${OS}_$ -device virtio-blk-pci,drive=vmDisk_${OS}_$ \
-drive file=../ISOs/$ISO,readonly=on,media=cdrom \
-boot order=cd \
-name vm${OS}_$ \
-monitor tcp:$HostIP:$(($ * )),server,nowait \
-vnc :$ \
-daemonize
} OpsFunc() {
eval x=$(($ + $AddrPos))
local ImgName=${OS}_$x.img if [[ -eq $(ls ../images | grep -c $ImgName) ]];then
qemu-img create -f qcow2 -o size=$DiskSiz,nocow=on,backing_file=../images/$BaseImg ../images/$ImgName
if [[ -ne $? ]];then
printf "\033[31;01mCan't create $ImgName!!!\n\033[00m"
exit
fi
fi vmFunc $x
} i=
while [[ $i -lt $VmNum ]]
do
OpsFunc $i
let i+=
done

...

/*基于硬件IOMMU支持的硬件直接分配技术:VFIO*/
#modprobe vfio-pci
#echo 8c20 > /sys/bus/pci/drivers/vfio-pci/new_id
#echo ::1b. > /sys/bus/pci/devices/::1b./driver/unbind
#echo ::1b. > /sys/bus/pci/drivers/vfio-pci/bind
/*Qemu设置直连物理网卡示例*/
#-device vfio-pci,host=:1b.
#-net none

  net.sh

#!/usr/bin/env sh

modprobe tun
modprobe vhost
modprobe vhost_net
modprobe bonding IF_0=enp2s0
IF_1=eno1
BD=bond0
SW=br0 ADDR=192.168.0.254/
ROUTE=192.168.0.1 ip link del $BD #echo -$BD > /sys/class/net/bonding_masters if [[ -eq $(ip link | grep -c $SW) ]];then
ip link add $SW type bridge
fi
ip link add $BD type bond #echo +$BD > /sys/class/net/bonding_masters for x in $IF_0 $IF_1 $BD $SW
do
ip addr flush dev $x
ip route flush dev $x
done ip link set $IF_0 down
ip link set $IF_1 down
ip link set $BD down
echo active-backup > /sys/class/net/$BD/bonding/mode #balance-rr/active-backup/broadcast
echo > /sys/class/net/bond0/bonding/miimon
echo +$IF_0 > /sys/class/net/$BD/bonding/slaves
echo +$IF_1 > /sys/class/net/$BD/bonding/slaves
ip link set $IF_0 up
ip link set $IF_1 up
ip link set $BD up #ip link set $IF_0 promisc on
#ip link set $IF_1 promisc on
#ip link set $BD promisc on ip link set $BD master $SW
ip addr add $ADDR dev $SW
ip link set $SW up
ip route replace default via $ROUTE dev $SW printf "\033[31;01mSlaves of $BD:\033[00m\n"
cat /sys/class/net/$BD/bonding/slaves #printf "\n\033[31;01m$BD info:\033[00m\n"
#cat /proc/net/bonding/$BD

  tap.sh

      开头必须加 #!/usr/bin/env bash  一行

#!/usr/bin/env bash

ip link set $ up
sleep .1s
ip link set $ master br0

拾遗:Qemu/KVM的更多相关文章

  1. 理解 QEMU/KVM 和 Ceph(3):存储卷挂接和设备名称

    本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...

  2. 理解 Linux 网络栈(3):QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(发送端)

    本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...

  3. 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)

    本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...

  4. 理解 QEMU/KVM 和 Ceph(1):QEMU-KVM 和 Ceph RBD 的 缓存机制总结

    本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...

  5. KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  6. KVM 介绍(7):使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 (Nova Instances Snapshot Libvirt)

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  7. KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  8. QEMU/KVM功能测试

    最近在对QEMU/KVM在HP服务器进行功能测试,项目刚刚启动,遇到不少问题,从Git上拿到最新的source build进行测试,在RHEL7.0a3 + Kernel version3.10 + ...

  9. qemu/kvm/qemu-kvm/virsh的区别

    转自:http://www.2cto.com/os/201305/209596.html qemu/kvm/qemu-kvm/virsh的区别   qemu是一套虚拟机管理系统,kqemu是qemu的 ...

  10. 干货分享: 长达250页的Libvirt Qemu KVM的ppt,不实验无真相

    下载地址:Libvirt Qemu KVM 教程大全 http://files.cnblogs.com/popsuper1982/LibvirtQemuKVM.pptx 1. 概论 1.1 虚拟化的基 ...

随机推荐

  1. 异步编程与scrapy

    https://python-parallel-programmning-cookbook.readthedocs.io/zh_CN/latest/chapter1/index.html https: ...

  2. Windows环境下Oracle数据库的自动备份脚本自动删除30天前的备份

    @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo ...

  3. promise基础用法

    /** * Created by liyinghao on 2016/11/6. */ const fs = require('fs'); /* * 新建一个Promise对象,Promise就是一个 ...

  4. Django 模型层关系映射

    一.一对一映射 1.什么是一对一 A表中的一条记录只能与B表中的一条记录相关联如:一夫一妻制 2.语法 允许在关联的两个类的任何一个类中 增加: 属性 = models.OneToOneField(E ...

  5. Struts2的Action访问

    ● 示例项目结构 ●  demo1.jsp <%@ page language="java" import="java.util.*" pageEncod ...

  6. Pytest---yield

    场景:你已经可以将测试方法前要执行的或依赖的解决了,测试 方法后销毁清除数据的要如何进行呢?范围是模块级别的.类似 setupClass 解决:通过在同一模块中加入 yield关键字,yield是调用 ...

  7. myeclipse中使用maven插件的时候,报错-Dmaven.multiModuleProjectDirectory system propery is not set.

    -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable a ...

  8. 2018-2-13-win10-uwp-资源字典

    title author date CreateTime categories win10 uwp 资源字典 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17: ...

  9. OpenGL学习——自定义Shader工具类

    从文件读取Vertex Shader 和 Fragment Shader的工具类. 代码如下: Shader.h #ifndef Shader_h #define Shader_h // GLEW # ...

  10. 华南理工大学“三七互娱杯”程序设计竞赛 G: HRY and tree

    题意:给出一棵树,定义两点间代价为两点路径上最长的边权,问任两点间的代价和. 解法:这道题的解法十分巧妙:直接用Kruskal对这棵树求最小生成树,然后对于即将加入到MST的这条边(u,v,w),这条 ...