从SAS到NVMe-oF:手把手带你搭建一套基于Ubuntu 22.04和RDMA的NVMe over TCP测试环境
从SAS到NVMe-oF手把手带你搭建一套基于Ubuntu 22.04和RDMA的NVMe over TCP测试环境在存储技术快速迭代的今天NVMe over FabricsNVMe-oF正逐渐成为高性能存储网络的代名词。相比传统的SAS和SATA接口NVMe协议通过PCIe直连大幅提升了存储性能而NVMe-oF则进一步将这些优势扩展到了网络存储领域。本文将带你从零开始在一台普通的x86服务器上搭建NVMe over TCP测试环境无需昂贵的专用硬件仅凭标准的以太网卡即可体验这项前沿技术。1. 环境准备与系统配置1.1 硬件与操作系统要求搭建NVMe over TCP测试环境对硬件要求相对友好以下是推荐配置服务器至少两台x86架构机器可物理机或云主机CPU建议4核以上内存8GB以上存储至少一块NVMe SSD用于target端网络普通以太网卡建议10Gbps及以上操作系统Ubuntu 22.04 LTS本文所有命令基于此版本提示虽然NVMe over RDMA性能更优但需要支持RDMA的网卡。NVMe over TCP对硬件无特殊要求是入门体验NVMe-oF的理想选择。1.2 系统基础配置首先在两台机器上执行系统更新sudo apt update sudo apt upgrade -y安装必要的工具链sudo apt install -y git build-essential linux-headers-$(uname -r)检查内核版本需5.0以上uname -r2. NVMe-oF软件栈安装与配置2.1 内核模块加载NVMe over TCP需要以下内核模块sudo modprobe nvme sudo modprobe nvme-tcp sudo modprobe nvmet sudo modprobe nvmet-tcp将模块加入开机自动加载echo nvme | sudo tee -a /etc/modules echo nvme-tcp | sudo tee -a /etc/modules echo nvmet | sudo tee -a /etc/modules echo nvmet-tcp | sudo tee -a /etc/modules2.2 NVMe管理工具安装安装nvme-cli工具包sudo apt install -y nvme-cli验证安装nvme list3. Target端配置存储服务器3.1 创建NVMe命名空间首先识别NVMe设备lsblk -d -o NAME,MODEL,SIZE | grep nvme假设设备为/dev/nvme0n1创建命名空间sudo nvme create-ns /dev/nvme0n1 -s 1000000000 -c 1000000000 -f 03.2 配置NVMe over TCP Target创建target目录结构sudo mkdir /sys/kernel/config/nvmet/subsystems/nvme-test cd /sys/kernel/config/nvmet/subsystems/nvme-test配置子系统参数echo 1 | sudo tee -a attr_allow_any_host /dev/null创建命名空间并附加设备sudo mkdir namespaces/1 cd namespaces/1 echo -n /dev/nvme0n1 | sudo tee -a device_path /dev/null echo 1 | sudo tee -a enable /dev/null配置端口sudo mkdir /sys/kernel/config/nvmet/ports/1 cd /sys/kernel/config/nvmet/ports/1 echo 127.0.0.1 | sudo tee -a addr_traddr /dev/null echo tcp | sudo tee -a addr_trtype /dev/null echo 4420 | sudo tee -a addr_trsvcid /dev/null echo ipv4 | sudo tee -a addr_adrfam /dev/null链接子系统和端口sudo ln -s /sys/kernel/config/nvmet/subsystems/nvme-test /sys/kernel/config/nvmet/ports/1/subsystems/nvme-test3.3 防火墙配置允许4420端口通信sudo ufw allow 4420/tcp4. Initiator端配置客户端4.1 发现Target存储在客户端机器上执行发现命令sudo nvme discover -t tcp -a 192.168.1.100 -s 4420注意将192.168.1.100替换为你的target服务器实际IP地址。4.2 连接Target存储连接发现的存储sudo nvme connect -t tcp -n nvme-test -a 192.168.1.100 -s 4420验证连接nvme list你应该能看到类似这样的输出Node SN Model Namespace Usage Format FW Rev ---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- -------- /dev/nvme0n1 ABCDEFG123456 Linux 1 1.00 GB / 1.00 GB 512 B 0 B 5.10.05. 性能测试与优化5.1 FIO基准测试安装fio工具sudo apt install -y fio创建4K随机读测试fio --namerandread --ioenginelibaio --iodepth32 --rwrandread --bs4k --direct1 --size1G --numjobs4 --runtime60 --group_reporting --filename/dev/nvme1n1关键参数说明参数说明--iodepthIO队列深度--rw读写模式--bs块大小--direct绕过缓存--numjobs并发线程数5.2 性能优化建议网络优化启用巨帧MTU 9000使用高性能网络设备系统参数调整echo vm.dirty_ratio 10 | sudo tee -a /etc/sysctl.conf echo vm.dirty_background_ratio 5 | sudo tee -a /etc/sysctl.conf sudo sysctl -p多路径配置sudo apt install -y multipath-tools sudo systemctl enable multipathd sudo systemctl start multipathd6. 实际应用场景与注意事项6.1 典型应用场景数据库加速MySQL、PostgreSQL等关系型数据库虚拟化存储KVM、VMware等虚拟化平台容器持久化存储Kubernetes PV/PVCAI/ML训练大规模数据集快速访问6.2 常见问题排查问题1连接时出现Invalid argument错误解决方案# 检查target端服务是否运行 lsmod | grep nvmet_tcp # 检查端口监听状态 sudo ss -tulnp | grep 4420问题2性能低于预期排查步骤检查网络带宽利用率验证SSD本地性能检查CPU使用率特别是软中断6.3 维护与管理命令常用管理命令速查表命令功能nvme list列出所有NVMe设备nvme disconnect-all断开所有NVMe-oF连接nvme disconnect -n 设备名断开指定设备dmesggrep nvme7. 进阶RDMA加速配置可选对于支持RDMA的硬件环境可以通过以下步骤升级到NVMe over RDMA7.1 安装RDMA驱动sudo apt install -y rdma-core ibverbs-utils7.2 配置NVMe over RDMA Targetsudo modprobe nvme-rdma echo nvme-rdma | sudo tee -a /etc/modules修改端口配置cd /sys/kernel/config/nvmet/ports/1 echo rdma | sudo tee addr_trtype /dev/null echo 4420 | sudo tee addr_trsvcid /dev/null7.3 Initiator端连接sudo nvme connect -t rdma -n nvme-test -a 192.168.1.100 -s 4420在实际测试中NVMe over RDMA通常能比TCP版本降低30-50%的延迟提升20%以上的吞吐量。不过正如我们在性能测试部分看到的即使是NVMe over TCP其性能也已经远超传统的iSCSI方案。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2574520.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!