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. java commons-fileupload servlet 多文件上传

    commons-fileupload servlet 多文件上传 需要引入的 jar 包. commons-fileupload-1.3.2.jar commons-io-2.2.jar 工程路劲:查 ...

  2. 动态规划及LCS

    LCS的python实现: #!/usr/bin/env python #-*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultenco ...

  3. upc组队赛1 小C的数学问题【单调栈】(POJ2796)

    小C的数学问题 题目描述 小C是个云南中医学院的大一新生,在某个星期二,他的高数老师扔给了他一个问题. 让他在1天的时间内给出答案. 但是小C不会这问题,现在他来请教你. 请你帮他解决这个问题. 有n ...

  4. jupyter notebook的魔法命令 % %%

    Magic单元分为两种,一种是line magics,另外一种cell magics. Line magic是通过在前面加%,表示magic只在本行有效. Cell magic是通过在前面加%%,表示 ...

  5. JS的常用正则表达式 验证密码用户名等

    //校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{1,20}$/; if (!patrn.exec(s)) return false retur ...

  6. docker内的应用访问宿主机上的mysql和Redis

    背景:宿主机部署MySQL.Redis,docker内部署tomcat.jdk 需求:tomcat内的应用访问宿主机的MySQL和Redis 方法:     一.连接地址切记不能用localhost和 ...

  7. JPA 唯一索引

    @Table(name = "adam_module", uniqueConstraints = @UniqueConstraint(columnNames = {"in ...

  8. Vue篇1

    2019 Vue 面试题汇总(持续更新中...) 1. vue中的MVVM模式 即Model-View-ViewModel. Vue是以数据为驱动的,Vue自身将DOM和数据进行绑定,一旦创建绑定,D ...

  9. Unity应用怎么暂停(Pause)

    非常多时候,应用程序或者是游戏须要用上暂停功能,unity提供了不少便捷的方式,列在以下: 1.在editor中,按下pausebutton就可以暂停 2.假设在代码中控制,能够通过设置Time.ti ...

  10. Error(10028):Can't resolve multiple constant drivers for net “ ” at **.v

    两个进程里都有同一个条件判断的话,会产生并行信号冲突的问题. 同一个信号不允许在多个进程中赋值,否则则为多驱动. 进程的并行性决定了多进程不同能对同一个对象进行赋值.