searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

有关virtio_blk的介绍及FPGA的实现一

2024-05-29 02:47:10
95
0

一、virtio_blk基础知识介绍

1. 块设备简介

  这里首先简单介绍一下块设备的相关概念。

  在Linux操作系统有三类主要的设备文件:字符设备、网络设备、块设备。其中的字符设备是以字节为单位进行顺序I/O操作的设备;网络设备主要提供网络数据相关的通信服务;块设备以块单位输入输出的,对于I/O请求有对应的缓冲区,可以随机访问,块设备的访问位置必须能够在介质的不同区间前后移动。在块设备中,最小的可寻址单元是扇区,扇区的大小一般是2的整数倍,常见的大小为512个字节;

  块的含义是由Linux制定对内核或文件系统等数据处理的基本单位。一般1个块由1个或多个扇区组成。

  扇区的含义是任何块设备硬件对数据处理的基本单位。一般情况1个扇区的大小为512byte,也有以4096byte大小为基本单位。

2. virtio_blk简介

      virtio-blk是KVM-Qemu虚拟化生态中的虚拟化块存储的一种实现方式,利用了virtio共享内存的机制,提供了一种高效的块存储挂载的方法。Virtio-blk设备在虚拟机以一个磁盘的方式呈现。Guest OS内核通过加载virtio-blk驱动,实现对后端的块存储的读写,无需额外的厂家专用驱动。

      virtio-blk驱动使用Virtio机制为Guest提供了一个高性能的块设备I/O的方法。

  在KVM平台中,qemu程序负责模拟一台PC的整个工作过程。

      qemu对设备的模拟可以分成全模拟和半模拟。其中全模拟,不需要提供专门针对虚拟化场景的设备驱动,可以复用物理环境下的驱动程序。不过全模拟时,虚拟机内部驱动会频繁访问虚拟机IO端口,KVM平台下会产生大量的陷入和陷出操作。此外虚拟机内外数据传输时拷贝方式只能以字节为单位进行,无法直接采用共享内存的方式,因此大大降低访问性能。而半摸拟技术中,虚拟化设备配合前端驱动,采用全新的事件通知和数据传递机制,进而大幅提升性能,例如以virtio-blk实现访问磁盘的行为中,采用io_event_fd进行前端到后端通知,采用中断注入方式实现后端到前端的通知,并通过IO环(Vring)进行数据的共享。

  现在业界,Virtio通过硬件加速已经是行业的一个通用的做法。因此,在智能网卡中,实现virtio_blk硬件加速,也是必然趋势。将virtio-blk到后端映射到远端磁盘上,这样不需要在主机系统中挂载很多的远端磁盘,由智能网卡直接完成映射,更加安全。

0条评论
0 / 1000
l****n
9文章数
0粉丝数
l****n
9 文章 | 0 粉丝
原创

有关virtio_blk的介绍及FPGA的实现一

2024-05-29 02:47:10
95
0

一、virtio_blk基础知识介绍

1. 块设备简介

  这里首先简单介绍一下块设备的相关概念。

  在Linux操作系统有三类主要的设备文件:字符设备、网络设备、块设备。其中的字符设备是以字节为单位进行顺序I/O操作的设备;网络设备主要提供网络数据相关的通信服务;块设备以块单位输入输出的,对于I/O请求有对应的缓冲区,可以随机访问,块设备的访问位置必须能够在介质的不同区间前后移动。在块设备中,最小的可寻址单元是扇区,扇区的大小一般是2的整数倍,常见的大小为512个字节;

  块的含义是由Linux制定对内核或文件系统等数据处理的基本单位。一般1个块由1个或多个扇区组成。

  扇区的含义是任何块设备硬件对数据处理的基本单位。一般情况1个扇区的大小为512byte,也有以4096byte大小为基本单位。

2. virtio_blk简介

      virtio-blk是KVM-Qemu虚拟化生态中的虚拟化块存储的一种实现方式,利用了virtio共享内存的机制,提供了一种高效的块存储挂载的方法。Virtio-blk设备在虚拟机以一个磁盘的方式呈现。Guest OS内核通过加载virtio-blk驱动,实现对后端的块存储的读写,无需额外的厂家专用驱动。

      virtio-blk驱动使用Virtio机制为Guest提供了一个高性能的块设备I/O的方法。

  在KVM平台中,qemu程序负责模拟一台PC的整个工作过程。

      qemu对设备的模拟可以分成全模拟和半模拟。其中全模拟,不需要提供专门针对虚拟化场景的设备驱动,可以复用物理环境下的驱动程序。不过全模拟时,虚拟机内部驱动会频繁访问虚拟机IO端口,KVM平台下会产生大量的陷入和陷出操作。此外虚拟机内外数据传输时拷贝方式只能以字节为单位进行,无法直接采用共享内存的方式,因此大大降低访问性能。而半摸拟技术中,虚拟化设备配合前端驱动,采用全新的事件通知和数据传递机制,进而大幅提升性能,例如以virtio-blk实现访问磁盘的行为中,采用io_event_fd进行前端到后端通知,采用中断注入方式实现后端到前端的通知,并通过IO环(Vring)进行数据的共享。

  现在业界,Virtio通过硬件加速已经是行业的一个通用的做法。因此,在智能网卡中,实现virtio_blk硬件加速,也是必然趋势。将virtio-blk到后端映射到远端磁盘上,这样不需要在主机系统中挂载很多的远端磁盘,由智能网卡直接完成映射,更加安全。

文章来自个人专栏
紫金DPU存储卸载硬件实现有关技术探讨
9 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
1