专题:Qemu/KVM

目标:构造 *nix 高速虚拟机平台

特点:KVM支持、大页内存、内存预分配、virtio存储设备、桥接网卡(或VFIO直接分配物理网卡)

USE/Gentoo:vhost-net -nls -iscsi -nfs -opengl -jpeg -png -usb -usbredir -curl -selinux -spice -ncurses -sdl -gtk -xen

INT.sh:

#!/bin/bash

qemu-system-x86_64 -enable-kvm \

-machine q35,accel=kvm -device intel-iommu \

-cpu host -smp 4,sockets=1,cores=4,threads=1 \

-m 4096 -mem-path=/var/2Mpages -mem-prealloc \

####################网络设备#############################################################

-netdev tap,ifname=T_0,script=TAP.sh,downscript=no,smb=/home/QemuSMB,vhost=on,id=N_0 \

-device virtio-net-pci,mac=00:11:22:33:44:07,netdev=N_0 \

####################磁盘设备#############################################################

-drive file=RHEL.img,if=none,cache=writeback,media=disk,discard=on,id=RHEL

-device virtio-blk-pci,drive=RHEL \

   #########################################################################################

-drive file=RHEL.iso,readonly=on,media=cdrom \

-boot order=cdn \

-display none -monitor stdio

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

CONF.sh

#!/bin/bashIpAddr="10.4.4.4/8"GateWay="10.0.0.1"
Switch=br0If_0=eth0If_1=eth1
Mem=4096
#All interfaces‘ IPs have been deleted except "lo".
Del_IP() {
    IFs=$(ip addr | grep -oP ‘\w+(?=:\s+<)‘ | grep -v ‘lo‘)
    local I
    for InterFace in $IFs
    do        ip addr flush dev $InterFace
    done
}

Set_IP() {  if [[ ‘0‘ == $(ip link | grep -c $Swith) ]]  then
    ip link add $switch type bridge  fi
  ip link set $switch up
  ip link set $If_0 up
  ip link set $If_0 master $switch  ip link set $If_0 up  ip link set $If_0 master $switch  ip addr add $IpAddr dev $switch  ip route replace default via $GateWay dev $switch}
2M_hugepages() {
    local Num=$(sysctl vm.nr_hugepages)
    if [[ $Num -lt $Mem ]]
    thenmkdir -p /var/2Mpagesmount -t hugetlbfs hugetlbfs /var/2Mpages #可在 /etc/fstab 中挂载
        sysctl vm.nr_hugepages=$Memfi
}

(2M_hugepages; del_IP; Set_IP) 2>/dev/null

TAP.sh

ip link set $1 up
sleep 0.5s
ip link set $1 master br0
时间: 2024-11-07 04:01:34

专题:Qemu/KVM的相关文章

QEMU KVM libvirt 手册(1)

安装 对虚拟化的支持通常在BIOS中是禁掉的,必须开启才可以. 对于Intel CPU,我们可以通过下面的命令查看是否支持虚拟化. # grep "vmx" /proc/cpuinfo flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdp

几篇QEMU/KVM代码分析文章

QEMU/KVM结合起来分析的几篇文章,代码跟最新的版本有些差异,但大体逻辑一样,写得通俗易懂.我把链接放这里主要是为自己需要查看时调转过去方便,感谢作者的付出! QEMU Source Code Study - 1 QEMU Source Code Study (2) - KVM_init QEMU Source Code Study (3) - KVM_CREATE_VCPU QEMU Source Code Study - KVM_RUN

qemu,kvm,qemu-kvm,xen,libvir 区别

KVM:(Kernel-based Virtual Machine)基于内核的虚拟机 KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案.它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度.内存管理与硬件设备交互等. 从存在形式看, KVM是两个内核模块kvm.ko和kvm_intel.ko(对AMD处理器来说,就是kvm_amd.ko),这两个模块用来实现CPU的虚拟化. 如果要让

QEMU KVM libvirt手册(2)

Administrating Virtual Machines with QEMU Monitor When QEMU is running, a monitor console is provided for performing interaction with the user. Using the commands available in the monitor console, it is possible to inspect the running operating syste

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

<iframe height=570 width=100% scrolling="no" src="http://share.csdn.net/frame/9070" frameborder=0 allowfullscreen></iframe> 1. 概论 1.1 虚拟化的基本类型 无虚拟化 半虚拟化Paravirtualization 非硬件辅助全虚拟化 硬件辅助全虚拟化 实验一:查看系统是否支持硬件辅助虚拟化 1.2 KVM Qemu

QEMU KVM Libvirt手册(6) &ndash; Network Block Device

网络块设备是通过NBD Server将虚拟块设备通过TCP/IP export出来,可以远程访问. NBD Server通常是qemu-nbd 可以提供unix socket qemu-nbd -t -k /home/cliu8/images/ubuntutest-nbd ubuntutest.img 打开另一个窗口,可以连接这个unix socket qemu-system-x86_64 -enable-kvm -name ubuntutest  -m 2048 -hda nbd:unix:/

qemu,kvm,qemu-kvm,xen,libvirt的区别

KVM:(Kernel-based Virtual Machine)基于内核的虚拟机 KVM是集成到Linux内核的Hypervisor,是X86架构且硬件支持虚拟化技术(Intel VT或AMD-V)的Linux的全虚拟化解决方案.它是Linux的一个很小的模块,利用Linux做大量的事,如任务调度.内存管理与硬件设备交互等. 从存在形式看,KVM是两个内核模块kvm.ko和kvm_intel.ko(对AMD处理器来说,就是kvm_amd.ko),这两个模块用来实现CPU的虚拟化. 如果要让用

QEMU KVM libvirt手册(4) &ndash; images

RAW raw是默认的格式,格式简单,容易转换为其他的格式.需要文件系统的支持才能支持sparse file 创建image # qemu-img create -f raw flat.img 10GFormatting 'flat.img', fmt=raw size=10737418240 如果我们ls则看到 ls -lh flat.img -rw-r--r-- 1 root root 10G Jun 30 22:27 flat.img 但是并不真正占用10G # du -h flat.im

Guest CPU model configuration in libvirt with QEMU/KVM

每个hypervisor对于guest能看到的cpu model定义都不同,Xen 提供host pass through,所以guest能看到的cpu和host完全相同. QEMU/KVM中guest能看到自定义的通用cpu model  “qemu32” or “qemu64”,而VMWare 要高级一些,它把host cpu划分成组,guest 能看到每组的baseline CPU model,这样guest就能在改组迁移. 每种CPU models都采用不同方式来暴露其architect

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

本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存储卷挂接和设备名称 这篇文章分析一下一个 Ceph RBD 卷是如何被映射到一个 QEMU/KVM 客户机的,以及客户机中设备的命名问题. 1. 遇到的设备命名问题 1.1 通过 Nova 和 Cinder 做 Ceph RDB 卷挂接和卸载步骤 挂接一个卷: #运行nova-attach 命令no