virtio

Linux阅码场

六眼飞鱼酱① 提交于 2020-08-12 18:11:10
关于Linux内核月报 Linux阅码场 Linux阅码场内核月报栏目,是汇总当月Linux内核社区最重要的一线开发动态,方便读者们更容易跟踪Linux内核的最前沿发展动向。 限于篇幅,只会对最新技术做些粗略概括,技术细节敬请期待后续文章,也欢迎广大读者踊跃投稿为阅码场社区添砖加瓦。 本期月报(总第2期)主要贡献人员: 陈玮、张健、廖威雄 (月报的完善和专业,离不开大牛们的持续贡献,欢迎更多大牛加入月报贡献团队) 第一期链接: Linux阅码场 - Linux内核月报(2020年06月) 1. 虚拟化 1.1 Kishon Vijay Abraham I: Enhance VHOST to enable SoC-to-SoC communication 该PATCH系列对Linux vhost做了增强,从而让它支持 SoC与SoC之间基于MMIO的通信。该系列也对RPMSG进行了增强,让它可以支持两个SoC之间使用PCIe Root Complex<->Endpoint 连接方式和HOST1-NTB-HOST2连接方式的通信。 修改的内容包括: 1) 修改vhost,让它符合Linux标准驱动模型 2) 在vring中添加通过MMIO访问virtqueue支持 3) 在rpmsg中添加居于vhost的客户端驱动 4) 为通过PCIe Root Complex <->Endpoint

制作云计算平台的虚拟机镜像

淺唱寂寞╮ 提交于 2020-08-12 05:06:23
在基于OpenStack、CloudStack、ZStack、Proxmox Virtual Environment 等开源虚拟化或者云计算服务管理的VM实例中,推荐使用的VM镜像格式是raw或者是压缩率更高的qcow2。VMware ESXi使用的推荐格式是OVF或者vmdk。 鉴于本人主要从事开源产品的实践维护及适用场景解决方案研究,因此本文主要讨论qcow2格式的VM镜像的制作方法。 第一种方法是在基于Linux的KVM环境下创建虚拟机,主要通过 qemu、kvm、virtsh工具完成,如果自己有GUI的Linux环境还可以使用VNC进行GUI界面操作完成虚拟机的创建及Guest OS安装配置。这里我给出本人在 KVM 环境中创建虚拟机的主要操作命令: virt-install --virt-type kvm --name Windows7Bit64 --ram 2048 --vcpus=2 --os-type=windows \ --cdrom=/mnt/hgfs/VirtualLocalShare/VirtIO/win7caijing64.iso --disk path=/mnt/hgfs/VirtualLocalShare/VirtIO/Windows7Bit64.qcow2,format=qcow2,bus=virtio \ --disk path=/mnt/hgfs

QEMU Guest Agent

允我心安 提交于 2020-08-11 02:39:31
目录 文章目录 目录 QEMU Guest Agent 安装 QGA QGA 接口 利用 QGA 的 OpenStack 云主机监控方案 QEMU Guest Agent QEMU Guest Agent,简称 QGA,是运行在 QEMU 虚拟机内部的一个守护程序 qemu-guest-agent.service,类似于 VMware tools,主要用于辅助 Hypervisor 实现对 Guest 的管理。 官方网站: https://wiki.qemu.org/Features/GuestAgent https://wiki.libvirt.org/page/Qemu_guest_agent QEMU 通过建立 Host 和 Guest 之间的一个数据通道(channel)来实现两者之间的通讯功能,继而增强 Host 对 Guest 的控制能力。这种通讯方式是不依赖与网络的,而是依赖于 virtio-serial(默认首选方式)或者 isa-serial,在 Domain XML 文件中称为 org.qemu.guest_agent.0。QEMU 提供了串口设备的模拟及数据交换的通道,最终呈现出来的是一个串口设备(Guest)和一个 UNIX Socket 文件(Host)。 < channel type = ‘unix‘ > < source mode = ‘bind‘

spdk(三)----qemu使用spdk

可紊 提交于 2020-08-10 22:42:55
0. 配置 HUGEMEM=2048 ./scripts/setup.sh 1.启动vhost application: ./app/vhost/vhost -S /var/tmp -s 1024 -m 0x3 & 2. 创建SPDK bdev (注意:SPDK bdev是SPDK中对多种存储后端(storage backend)的抽象。 这些存储后端(storage backend)包括:ceph RBD,ramdisk,NVMe,iSCSI,逻辑卷,甚至是virtio)。这里就体现了SPDK block device layer的概念。 2.1 创建基于physical NVMe的spdk nvme bdev 这里要求运行qemu的Host上插有physical NVME SSD。 ./scripts/rpc.py bdev_nvme_attach_controller -b Nvme0 -t pcie -a 0000:01:00.0 ./scripts/rpc.py vhost_scsi_controller_add_target vhost.0 0 Nvme0n1 2.2 创建基于ramdisk的spdk bdev Malloc0 (vhost-scsi) ./scripts/rpc.py bdev_malloc_create -b Malloc0 128 4096

磁盘接口

久未见 提交于 2020-08-10 07:18:00
处理器: PAE-NX Standard PC (i440FX + PIIX, 1996) 半虚拟化接口KVM,hyper-V 硬件虚拟: 使用嵌套分页. 主板,芯片组: PIIX3, ICH9 USB触控板 USB多点触控板 使用主机输入输出缓存. 控制器. AHCI SATA, PIIX4 Default IDE, PIIX3 IDE ICH6 IDE LsiLogic Default SCSI BusLogic SCSI I82078 Floppy USB NVMe (PCIe) virtio-scsi 声音也有控制芯片. 网络 控制芯片.virtio-net 来源: oschina 链接: https://my.oschina.net/innovation/blog/4322045

2020 存储技术热点与趋势总结

我是研究僧i 提交于 2020-08-08 23:22:01
2 年前我们发表了一遍文章 2018 存储技术热点与趋势总结,受到了不少朋友的关注。2 年过去了,存储行业也在不断的发生着变化。今天,我们就结合过去两年学术界和工业界的进展,帮大家做一次总结,供大家参考。 本文内容会涉及到 Persistent Memory、Consensus、Consistency、 Persistent Memory(PMem) PMem 在 2018 年的时候还仅限于学术界的探讨,而如今已经来到了工业界。Intel 在 2019 年 4 月份发布了第一款 Intel Optane DC Persistent Memory(内部产品代号 Apache Pass),可以说是一个划时代的事件。如果你完全没有听说过 PMem,那么可以先通过我之前的文章了解一下。 我们先来看一下实物的样子 是的,DIMM 接口,看起来就像内存。所以很多人会把 Optane PMem 和 Optane SSD 弄混,因为都叫 Optane。实际上 Optane SSD 是 NVMe 接口,走 PCIe 总线。由于接口和总线不同,Optane PMem 和 Optane SSD 的使用方式也完全不同的。 目前单条(因为长得像内存,所以就用“条”来做量词了)容量一共有三种选择:128G、256G、512G,价格还是相当贵的。 这里我想强调的是:PMem 并不是更慢的内存,也不是更快的

DPDK — OvS和 OvS-DPDK 的对比

风格不统一 提交于 2020-08-08 07:31:52
目录 文章目录 目录 参考文献 OvS 架构 OvS-DPDK 架构 OvS-DPDK 在 VNF 中的应用 参考文献 https://networkbuilders.intel.com/docs/open-vswitch-enables-sdn-and-nfv-transformation-paper.pdf OvS 架构 openvswitch.ko :在内核态负责 “快速路径” 的数据转发。转发靠流表来完成,每一个流表都包含很多的匹配项(match fields)和相应的动作(actions)。 match fields:定义了能够标识一个数据包的头部字段。 actions:定义了能够对这个数据包操作的动作,比如:添加或去除 VLAN 标签、修改数据包的某个头部字段,以及控制数据包从端口的进出等等。 ovs-vswitchd :在用户态负责 “慢速路径” 的数据转发。 ofproto:OpenFlow 交换机实现。 netdev:和网络设备(包括物理的和虚拟的)交互的抽象接口层。 dpif:用户空间数据转发路径的实现。 OvS-DPDK 架构 上图中的深色模块就是引入 DPDK 的相关模块。 ofproto-dpif :实现了 ofproto 模块 API,直接操作 dpif 层。 dpif-netdev :用户空间中 “快速路径” 的实现,它实现了 dpif 模块 API

KVM虚拟化、创建、克隆、qemu-guest-agent安装等实践过程

大兔子大兔子 提交于 2020-07-28 11:13:27
由于公司需求,所以最近学习了KVM,下面是本人安装实践过程。 安装虚拟化软件 查看CPU是否支持KVM egrep 'vmx|svm' /proc/cpuinfo --color=auto 可以看到grep出来的内容,就说明支持kvm。 通过apt进行安装 apt-get install -y qemu-kvm libvirt-daemon libvirt-daemon-system 启动并设置开机启动 systemctl start libvirtd && systemctl enable libvirtd 配置网桥网卡,如下配置 ubuntu路径: vim /etc/netplan/01-network-manager-all.yaml network: version: 2 renderer: NetworkManager ethernets: enp2s0: dhcp4: yes dhcp6: yes #bridge: br0 bridges: br0: dhcp4: no dhcp6: no addresses: [192.168.10.163/23] gateway4: 192.168.10.1 nameservers: addresses: [223.5.5.5,223.6.6.6] 重启网卡 netplan apply 安装vncserver apt-get

这些年积攒的系统起不来以及root登陆异常排查的点

家住魔仙堡 提交于 2020-07-27 14:41:35
背景介绍: 最近在整理文档,这些年陆陆续续写了好多个不同排查点的文档去记录系统起不来,以及root登陆异常的案例,今天整理一下放出来,希望大家可以喜欢 系统启动异常: 1,部分centos启动黑屏,无异常报错的场景,可以fsck一下系统盘 2,根分区空间满,以及inode耗尽 3,升级内核或者从老的共享实例迁移到独享规格导致的启动异常 3.1 手动注入驱动 (mkinitrd virtio相关驱动 ) 3.2 修改grub 的启动顺序,优先尝试使用老内核启动 3.3 boot目录下面内核的关联文件是否全(下面仅为demo,不同系统内核版本文件不一致,部分内核版本boot下的i386目录也是有用的) config-4.9.0-7-amd64 initrd.img-4.9.0-7-amd64 System.map-4.9.0-7-amd64 vmlinuz-4.9.0-7-amd64 3.4 /boot/grub/device.map里面的hda改成vda 4,fstab/grub中的 uuid不对,可以直接修改为/dev/vda1这种形式尝试 数据盘分区异常加载起不来的场景,可以去注释ftab所有的行,添加类似下面的启动项尝试,也适用用系统盘快照创建云盘挂载后,uuid一致导致的启动异常,改成非UUID的挂载即可 /dev/vda1 / ext4 defaults 1 1 5

Linux Driver 入门

孤街浪徒 提交于 2020-05-08 10:04:14
: Linux Driver Device Major and Minor Numbers he Internal Representation of Device Numbers Within the kernel, the dev_t type (defined in <linux/types.h>) is used to hold device numbers—both the major and minor parts. As of Version 2.6.0 of the kernel, dev_t is a 32-bit quantity with 12 bits set aside for the major number and 20 for the minor number. Your code should, of course, never make any assumptions about the internal organization of device numbers; it should, instead, make use of a set of macros found in <linux/kdev_t.h>. To obtain the major or minor parts of a dev_t, use:   MAJOR(dev_t