Photo By xzllll

Linux block ram disk 块设备创建指南与性能测试

指南 | Guides 2025年3月7日

1.First | 序

Block RAM Disk 即 brd

是 Linux 内核中的一个模块,用于创建基于 RAM 的块设备

与 tmpfs 和 ramfs 对比如下


特性 Block RAM Disk (brd) ramfs tmpfs
存储方式 内存映射块设备,无压缩 内存存储,无压缩 内存存储,支持压缩
内存使用 使用指定大小的内存空间 动态分配内存,大小不受限制 动态分配内存,大小可限制
是否使用 Swap 不使用 swap 不使用 swap 可以使用 swap(受内存压力时)
是否支持压缩 不支持压缩 不支持压缩 支持内存压缩(减少占用空间)
适用场景 高速缓存、大文件存储、临时存储等 临时文件存储、不持久数据 临时文件存储、/tmp、日志缓存等
是否易导致 OOM 不容易,容量受系统内存限制 容量没有限制,可能导致 OOM 容量有限,容易在内存不足时使用 swap
使用方式 需要格式化为文件系统,挂载为块设备 无需格式化,直接挂载为文件系统 无需格式化,直接挂载为文件系统

与 zram 对比如下


特性 zram Block RAM Disk (brd)
数据存储 压缩后存储在内存中,节省内存空间 不进行压缩,直接存储在 RAM 中
目的 节省内存并提高 I/O 性能,常用作 swap 设备 创建一个虚拟的块设备,通常用于高速缓存
容量 可以存储更多数据,因为数据被压缩 受物理内存限制,容量较小
适用场景 临时存储、高效 swap、低延迟应用(如数据库缓存) 高速缓存、临时文件存储、文件系统测试等
Linux 支持 使用 zram 模块,可以通过 swapon 进行启用 使用 brd 模块,可以通过 mount 挂载
系统负担 提供压缩功能,但会消耗 CPU 进行压缩和解压 不需要压缩,但内存会直接占用

1.2.OS Version | 示例环境

  1. OS | 系统

2.Knowledgebase | 知识库

首先熟悉了解 brd 模块

在 Linux 系统下 当加载 brd 模块时会创建其 brd=block ram disk

有三个参数分别是

  • rd_nr
    • brd 设备的最大数量
  • rd_size
    • 每个 RAM 磁盘的大小(以千字节为单位)
  • max_part
    • 每个 RAM 磁盘的最大分区数

3.Procedure | 步骤

具体步骤如下:

  1. 创建
  2. 格式化
  3. 挂载
  4. 测试
  5. 移除

3.1.create brd

以下为一些示例,实际根据自身需求创建即可

  1. 创建一个有一个分区的大小为 10G 的 brd

    modprobe brd rd_size=10240000 rd_nr=1 max_part=1
    

    Ex PIC | 示例图片

  2. 创建一个有一个分区的大小为 1G 的 brd

    modprobe brd rd_size=1024000 rd_nr=1 max_part=1
    
  3. 创建两个个有一个分区的大小为 1G 的 brd

    modprobe brd rd_size=1024000 rd_nr=2 max_part=1
    

    Ex PIC | 示例图片

3.2.format brd

使用 mkfs 命令格式化 brd


mkfs.ext4 /dev/ram0

Ex PIC | 示例图片

3.3.mount brd

使用 mount 命令挂载 brd


mount /dev/ram0 /mnt/ram0

3.4.Test brd

使用 yabs.sh 脚本中的 fio 测试

curl -sL yabs.sh | bash -s -- -ig

Ex PIC | 回显图片

3.5.rm brd

使用完毕后删除 brd

  1. (若仍在挂载) 取消挂载

    umount /dev/ram0
    
  2. 移除 brd 模块

    modprobe -r brd
    

4.Ex | 拓展

4.1.brd

如果在创建 brd 时不指定 rd_nr 参数

Linux 默认会创建 ram0~ram15 这 16 个块设备

这些块设备均有相应的 rd_size 但互相共享

Ex | 示例

4.2.Test (NVMe-oF)

手头正好有相应的 NVMe-oF 环境

跟测一下

NVMe Over RDMA(RoCE) 配置指南
1x1.First | 序 此篇记录 NVMe Over RDMA(RoCE) 配置过程 2x1.What is NVMe-oF | 什么是 NVMe-oF 以下释义来自于ChatGPT NVMe-oF(Non-Volatile Memory Express over Fabrics是一种将NVMe(非易失性存储器表达)协议扩展到网络环境中的技术 NVMe 本身是一种用于固态硬盘(SSD) 的高速存储协议,能够充分发挥基于NAND闪存 的存储设备的性能 NVMe-oF 则是将 NVMe 协议通过不同的网络协议(如RDMA、Ethernet、Fibre Channel等)传输到远程存储设备,从而支持分布式存储系统 2x2.What is RDMA | 什么是 RDMA 以下释义来自于ChatGPT RDMA(远程直接内存访问,Remote
  1. NVMe-oF target


    fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/ram0):
    ---------------------------------
    Block Size | 4k            (IOPS) | 64k           (IOPS)
      ------   | ---            ----  | ----           ----
    Read       | 1.32 GB/s   (330.3k) | 5.43 GB/s    (84.8k)
    Write      | 1.32 GB/s   (331.2k) | 5.46 GB/s    (85.3k)
    Total      | 2.64 GB/s   (661.5k) | 10.89 GB/s  (170.2k)
               |                      |
    Block Size | 512k          (IOPS) | 1m            (IOPS)
      ------   | ---            ----  | ----           ----
    Read       | 3.49 GB/s     (6.8k) | 3.50 GB/s     (3.4k)
    Write      | 3.67 GB/s     (7.1k) | 3.73 GB/s     (3.6k)
    Total      | 7.16 GB/s    (14.0k) | 7.24 GB/s     (7.0k)
    

  2. NVMe-oF host


    fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/nvme0n1):
    ---------------------------------
    Block Size | 4k            (IOPS) | 64k           (IOPS)
      ------   | ---            ----  | ----           ----
    Read       | 604.44 MB/s (151.1k) | 2.43 GB/s    (38.0k)
    Write      | 606.03 MB/s (151.5k) | 2.45 GB/s    (38.2k)
    Total      | 1.21 GB/s   (302.6k) | 4.88 GB/s    (76.3k)
               |                      |
    Block Size | 512k          (IOPS) | 1m            (IOPS)
      ------   | ---            ----  | ----           ----
    Read       | 2.08 GB/s     (4.0k) | 1.93 GB/s     (1.8k)
    Write      | 2.19 GB/s     (4.2k) | 2.05 GB/s     (2.0k)
    Total      | 4.28 GB/s     (8.3k) | 3.99 GB/s     (3.8k)
    

Thanks & Copy

Using the RAM disk block device with Linux — The Linux Kernel documentation

docs.kernel.org


Creating a RAM Disk | Support | SUSE

suse.com

标签

xzllll

三分钟热度三分钟收获