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. 机器学习笔记--classification_report&精确度/召回率/F1值

    https://blog.csdn.net/akadiao/article/details/78788864 准确率=正确数/预测正确数=P 召回率=正确数/真实正确数=R F1 F1值是精确度和召回 ...

  2. POJ 2254 Globetrotter (计算几何 - 球面最短距离)

    题目链接:POJ 2254 Description As a member of an ACM programming team you'll soon find yourself always tr ...

  3. charles使用教程

    概述 Charles是目前最强大的http调试工具,在界面和功能上远胜于Fiddler,同时是全平台支持.是收费软件,可以试用15分钟,下面提供了破解方法.   安装破解 https://www.cn ...

  4. 洛谷 P2023 维护序列——线段树

    先上一波题目 https://www.luogu.org/problem/P2023 复习了一波线段树 题目涉及的操作有区间加 区间乘以及区间求和 tips:线段树在传标记的时候 优先传乘法标记再传加 ...

  5. python+tushare获取沪深港股通持股明细

    接口:hk_hold 描述:获取沪深港股通持股明细,数据来源港交所. 限量:单次最多提取3800条记录,可循环调取,总量不限制 积分:用户积120积分可调取试用,2000积分可正常使用,单位分钟有流控 ...

  6. 实用的Python(2)利用Python制作gif动图

    一.简介 moviepy是一个专门用于视频剪辑制作的模块,可以自动化完成很多繁琐的视频剪辑处理工作,除了处理视频数据之外,moviepy中还内置了可以制作gif动图的功能,通过使用moviepy.ed ...

  7. json数据扁平化处理

    json数据扁平化处理 /* * name:json数组拉平处理 * data:json对象或者数组 * k:前面开始可传空 */ function expandJsonTool(data, k) { ...

  8. 使用mybatis时,sql查出来的结果映射不进逆向工程生成的该模型

    为了逆向工程生成驼峰效果,我们会在两个单词中间加_,但是在mybatis中,写sql语句时,要加别名,使别名和你逆向工程生成的该数据模型里面的属性名一致,否则查出来的结果映射不进去.

  9. Android蓝牙自动配对Demo,亲测好使!!!(转)

    蓝牙自动配对,即搜索到其它蓝牙设备之后直接进行配对,不需要弹出配对确认框或者密钥输入框. 转载请注明出处http://blog.csdn.net/qq_25827845/article/details ...

  10. Vuex的管理员Module(实战篇)

    Module按照官方来的话,对于新手可能有点难以接受,所以想了下,决定干脆多花点时间,用一个简单的例子来讲解,顺便也复习一下之前的知识点. 首先还是得先了解下 Module 的背景.我们知道,Vuex ...