拾遗:Qemu/KVM
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的更多相关文章
- 理解 QEMU/KVM 和 Ceph(3):存储卷挂接和设备名称
本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...
- 理解 Linux 网络栈(3):QEMU/KVM + VxLAN 环境下的 Segmentation Offloading 技术(发送端)
本系列文章总结 Linux 网络栈,包括: (1)Linux 网络协议栈总结 (2)非虚拟化Linux环境中的网络分段卸载技术 GSO/TSO/UFO/LRO/GRO (3)QEMU/KVM + Vx ...
- 理解 QEMU/KVM 和 Ceph(2):QEMU 的 RBD 块驱动(block driver)
本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...
- 理解 QEMU/KVM 和 Ceph(1):QEMU-KVM 和 Ceph RBD 的 缓存机制总结
本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...
- 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设备直接分 ...
- 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设备直接分 ...
- 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设备直接分 ...
- QEMU/KVM功能测试
最近在对QEMU/KVM在HP服务器进行功能测试,项目刚刚启动,遇到不少问题,从Git上拿到最新的source build进行测试,在RHEL7.0a3 + Kernel version3.10 + ...
- qemu/kvm/qemu-kvm/virsh的区别
转自:http://www.2cto.com/os/201305/209596.html qemu/kvm/qemu-kvm/virsh的区别 qemu是一套虚拟机管理系统,kqemu是qemu的 ...
- 干货分享: 长达250页的Libvirt Qemu KVM的ppt,不实验无真相
下载地址:Libvirt Qemu KVM 教程大全 http://files.cnblogs.com/popsuper1982/LibvirtQemuKVM.pptx 1. 概论 1.1 虚拟化的基 ...
随机推荐
- Celery 'Getting Started' not able to retrieve results; always pending
参考 根据Celery的官方文档,当使用windows 10 64-bit, Python 2.7,Erlang 64-bit binary, RabbitMQ server and celery r ...
- Codeforces 388C Fox and Card Game (贪心博弈)
Codeforces Round #228 (Div. 1) 题目链接:C. Fox and Card Game Fox Ciel is playing a card game with her fr ...
- Visual Studio Code 修改字体
下载安装想要更换的字体,这里以 Fira Code 字体为例. Fira Code 字体的下载地址:https://github.com/tonsky/FiraCode 下载解压后安装字体,windo ...
- css3水平垂直居中(不知道宽高同样适用)
css水平垂直居中 第一种方法: 在父div里加: display: table-cell; vertical-align: middle; text-align: center; 内部div设置: ...
- 10.Jmeter 快速入门教程 -- 用Jmeter测试你的EJB
有时候,需要对EJB进行性能基准测试,这对开发非常有帮助. 有很多种方法可以这么做, 当然我们这里介绍Apache's Jmeter 来进行实验测试. 非常不幸的是, Jmeter没有提供一个现成的测 ...
- JSON Web Token (JWT),服务端信息传输安全解决方案。
JWT介绍 JSON Web Token(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑独立的基于JSON对象在各方之间安全地传输信息的方式.这些信息可以被验证和信任,因为它是数字签名的 ...
- 程序性能优化之APK大小优化(六)上
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将继续从APK瘦身来介绍APK大小优化:文章主要内容从理 ...
- springboot核心原理
1.基于你对springboot的理解描述一下什么是springboot 它是一个服务于spring框架的框架,能够简化配置文件,快速构建web应用, 内置tomcat,无需打包部署,直接运行. 2. ...
- 线程分离pthread_detach()中的return()和pthread_exit()
#include <stdio.h> #include <pthread.h> pthread_t tid[]; void *func_2(void *arg); void * ...
- 2018-8-10-win10-uwp-ping
title author date CreateTime categories win10 uwp ping lindexi 2018-08-10 19:17:19 +0800 2018-2-13 1 ...