标签: virtio

如何有效地与 KVM 来宾共享主机的文件夹?

我正在配置服务,该服务将 nginx 上传的大量文件存储在主机系统的 /srv/storage 目录中。这些文件由工作 KVM 来宾处理,它们可能会创建新文件或为现有文件分配扩展属性。文件永远不会被覆盖,但最终会被其中一名工作人员删除。

因此主机服务器的文件写入速度约为 177MB/s。KVM 映像是存储在主机文件系统上的 QCOW2 文件,由于此 virtio 设置,映像在 KVM 实例内达到了约 155MB/s:

<driver name='qemu' type='raw' cache='none' io='native'/>
Run Code Online (Sandbox Code Playgroud)

但是我无法为共享文件夹获得这样的结果。我使用virtfs aka virtio 9p获得了最大 40MB/s 的速度。似乎没有挂载的 AIO 等效项:

mount -t 9p -o trans=virtio,version=9p2000.L uploads /srv/storage
Run Code Online (Sandbox Code Playgroud)

我也在想:

  • 没有 NFS - 缺少扩展属性
  • 没有 GlusterFS - 工作但性能比 virtio 差,因为联网,在单个硬件机器上有点矫枉过正,
  • 也许为 r/w 共享 LVM 卷?- 实际上文件夹存储在单独的分区中,但是我在某处读到 LV 不能 r/w 共享,因为这可能会导致 fs 损坏。
  • 将上传的文件保存在 QCOW2 上并让各方共享?
  • 将 nginx 和上传的文件保存在 QCOW2 上的 KVM 实例中,以某种方式与所有客人共享图像?
  • iSCSI - 可以使用单个分区吗?

那么如何使用扩展属性有效地与 KVM 来宾共享主机的文件夹)。

storage-area-network qemu kvm-virtualization 9p virtio

8
推荐指数
1
解决办法
8333
查看次数

我的 KVM 来宾使用 virtio 吗?

在我的一个 KVM 来宾中,当我输入以下命令时,我得到以下信息

/sbin/lsmod | grep vi
virtio_balloon          3692  0 
Run Code Online (Sandbox Code Playgroud)

那么这是否意味着我正在使用 virtio?

更新:

当我打字

cat "/boot/config-`uname -r`" | grep -i vir
Run Code Online (Sandbox Code Playgroud)

我可以看到

CONFIG_PARAVIRT_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_SPINLOCKS=y
CONFIG_PARAVIRT_CLOCK=y
# CONFIG_PARAVIRT_DEBUG is not set
CONFIG_VIRT_TO_BUS=y
CONFIG_NET_9P_VIRTIO=m
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
CONFIG_VIRTIO_CONSOLE=m
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
# CONFIG_FB_VIRTUAL is not set
CONFIG_SND_VIRMIDI=m
CONFIG_SND_VIRTUOSO=m
# CONFIG_DEBUG_VIRTUAL is not set
CONFIG_VIRTUALIZATION=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_RING=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BALLOON=m
Run Code Online (Sandbox Code Playgroud)

听起来我已经在使用 virtio 了吗?

virtualization linux linux-networking kvm-virtualization virtio

7
推荐指数
2
解决办法
2万
查看次数

通过 KVM 虚拟化安装 Windows 2012 R2

我正在尝试通过 linux KVM 虚拟化安装 Windows Server 2012 R2。

安装过程停止并需要驱动程序继续。

我正在尝试使用来自 Fedora 的 virtio 驱动程序,但不起作用。安装过程没有显示要安装的存储设备。

我正在尝试不同的存储选项:SATA、IDE、Virtio、Virtio SCSI。

Diskpart(列表磁盘)向我显示磁盘,但安装程序无法使用它。

我使用了不同版本的 virtio 驱动程序: virtio-win-0.1.105.iso 、 virtio-win-0.1.96.iso 和 virtio-win-0.1.101.iso 具有相同的结果。

我的安装盘是:SW_DVD9_Windows_Svr_Std_and_DataCtr_2012_R2_64Bit_Spanish_-4_MLF_X19-82897.ISO

virtualization kvm-virtualization virtio windows-server-2012-r2

7
推荐指数
1
解决办法
3万
查看次数

为什么 virtio-serial 在主机上有一个套接字接口,在客户机上有一个字符设备接口?

我正在尝试使用 kvm 作为虚拟机管理程序在主机与其客户虚拟机之一之间建立通信通道。为此,我使用virtio-serial

为了创建虚拟机,我发出了以下命令:

qemu-system-x86_64 \
-m 2048 -name ubuntu \
-hda ubuntu_image \
-device virtio-serial \
-chardev socket,path=/tmp/foo,server,nowait,id=foo \
-device virtconsole,name=jobsfoo,chardev=foo,name=org.ubuntu.foo \
Run Code Online (Sandbox Code Playgroud)

然后为了在客人上进行交流,我使用:

socat /dev/hvc0 -
Run Code Online (Sandbox Code Playgroud)

在主机上:

socat /tmp/foo -
Run Code Online (Sandbox Code Playgroud)

我开始明白这/tmp/foo是一个套接字和/dev/hvc0一个字符设备。

为什么有一个对称的通信接口:主机上的套接字和客户机上的字符设备?

socket kvm-virtualization virtio

5
推荐指数
1
解决办法
3354
查看次数

KVM(virtio 驱动程序)的网络性能不佳 - 更新:使用 vhost_net

我之前已经设置了几个基于 KVM 的网络,但从未遇到过这个问题,我一生都无法想象我以前会设置什么不同的网络。

设置

基本上,我已经完全拥有戴尔堆栈:

  • 2x Dell N2024(堆叠千兆交换机)
  • 几个用于 KVM 管理程序的 Dell R720
  • 2 个用于网关/防火墙的 Dell R320

所有机器都运行 CentOS6.5,hypervisor,基本上是标准安装,有一些 sysctl 调整。

目前,我有一些测试 VM 的设置,它们的设置与它们的主机相似(CentOS 6.X,基本安装带有基本的 puppet 驱动配置)。所有虚拟机都是:

  • 桥接到两个物理分离的网络之一(即每个管理程序有两个以太网连接,一个用于公共/DMZ 桥接 LAN,另一个用于私有)
  • 所有 VM 都使用 virtio 来处理网络、块设备(基本上是运行 virt-install 命令的标准结果)——例如(例如 libvirt 配置)

    <interface type='bridge'>
          <mac address='52:54:00:11:a7:f0'/>
          <source bridge='dmzbr0'/>
          <model type='virtio'/>
          <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    
    Run Code Online (Sandbox Code Playgroud)
  • 并且所有 VM 都可以访问 2 到 8 个 VCPU 以及 8 到 64GB 的 RAM,并且它们的驱动器是主机上的 LVM 卷

VM 中的一些简单文件副本和 dd 测试产生了完全可以接受的结果(在这些小规模综合测试中为 300MB/s - 800MB/s)

物理机之间的网络性能

我现在已经离开了 Jumbo …

networking centos libvirt kvm-virtualization virtio

5
推荐指数
1
解决办法
2万
查看次数

qemu-kvm 从低使用率来宾回收内存

有没有办法透明地回收或防止使用 qemu-kvm 来宾的内存?

场景A:

来宾在高峰时段使用 8GB 的​​ RAM,它在晚上返回到 4GB 的使用量,但来宾仍然要求主机提供 8GB 的​​ RAM。

场景B:

来宾使用 2GB 的 RAM,但页面缓存中有 6GB 的 RAM。来宾要求主机提供 8GB 的​​ RAM,但其中最多 6GB 可能是在另一个来宾系统中可能更重要的 RAM。


我对气球的第一个想法是客人不会“看到”气球效果,但是当发送“气球2048”时,客人内部的内存实际上减少到~2GB。

memory qemu kvm-virtualization virtio

5
推荐指数
1
解决办法
8519
查看次数

获取 virtio-net 网络适配器的链接速度

我有一个使用 virtio-net 在 kvm 上运行的 linux vm,我想检查链接速度。我怎样才能做到这一点?

到目前为止我尝试过的:

# ethtool eth0
Settings for eth0:
Link detected: yes
Run Code Online (Sandbox Code Playgroud)

似乎 ethtool 不支持 virtio-net(还没有?)我有来自 debian jessie 的 3.16-1 版本,ethtool 是否在较新版本中支持它?它接缝版本 6 是最新版本。

 # cat /sys/class/net/eth0/speed
cat: /sys/class/net/eth0/speed: Invalid argument


 # lspci | grep -iE --color 'network|ethernet'
00:12.0 Ethernet controller: Red Hat, Inc Virtio network device

  # lshw -class network
  *-network
       description: Ethernet interface
       product: Virtio network device
       vendor: Red Hat, Inc
       physical id: 12
       bus info: pci@0000:00:12.0
       logical name: eth0
       version: 00
       serial: …
Run Code Online (Sandbox Code Playgroud)

linux linux-networking kvm-virtualization virtio

4
推荐指数
1
解决办法
2万
查看次数

如何让 Linux 内核重新扫描 virtio 磁盘?

我有一个 virtio 磁盘安装到 KVM 来宾,由 LVM 逻辑卷支持。lvresize我增加了KVM 主机上逻辑卷的大小。

然后我必须virsh pool-refresh让 KVM 主机知道卷大小的变化。现在,如果我检查 中的卷virt-manager,我会看到正确的磁盘大小。但无论如何,来宾操作系统仍然会按照旧的大小看到磁盘。

如何强制 Linux 内核重新扫描 virtio 磁盘而不重新启动 guest 虚拟机?

我发现的其他解决方案并非特定于 virtio,而且它们不起作用。类似echo "- - -" > /sys/class/scsi_host/host0/scan应该适用于 SCSI 磁盘,但不适用于 virtio。另一个提示echo 1 > /sys/block/vda/device/rescan不起作用,因为该rescan文件不存在。

那么您知道有关重新扫描 virtio 磁盘的 virtio 特定技巧吗?

linux storage virtio

3
推荐指数
1
解决办法
2891
查看次数