openEuler的nfs+

点击这里查看配套的教学视频

点击跳转到nfs课程所有目录

1 我的贡献

点击这里查看我的openEuler nfs+贡献

2 问题分析

3 多个网卡环境

请查看《内核开发环境》

4 openeuler nfs+的使用

6.6内核可直接切换到OLK-6.6分支

4.19内核切换到openEuler-1.0-LTS分支,可以使用脚本create-enfs-patchset.sh生成完整的补丁文件, 再打上我修改的补丁, 也可以直接用我的仓库kernel-enfs。 编译前打开配置CONFIG_ENFS,可能还要关闭配置CONFIG_NET_VENDOR_NETRONOME

挂载:

modprobe enfs
mount -t nfs -o localaddrs=192.168.53.40~192.168.53.53,remoteaddrs=192.168.53.215~192.168.53.216 192.168.53.216:/s_test /mnt/

如果没有创建/etc/enfs/config.ini,会报错failed to open file:/etc/enfs/config.ini err:-2,配置文件请参考eNFS 使用指南。只需要在nfs client端支持enfs就可以,/etc/enfs/config.ini默认配置如下:

path_detect_interval=10 # 路径连通探测周期,单位 : 秒
path_detect_timeout=10 # 路径连通探测消息超时时间,单位 : 秒
multipath_timeout=0 # 选择其他路径达到的文件操作的超时阈值,0表示使用 mount 命令指定的 timeo 参数,不使用 eNFS 模块的配置,单位 : 秒。
multipath_disable=0 # 启用 eNFS 特性

除了mount命令查看之外,还可以用以下方式:

cat /proc/enfs/192.168.53.216_0/path
cat /proc/enfs/192.168.53.216_0/stat

5 测试

dnf install -y java-latest-openjdk
# dnf install -y java-1.8.0-openjdk # jdk 8
apt install -y openjdk-25-jdk-headless # ubuntu24.04最新的jdk版本,headless代表无图形界面版本
# apt install -y openjdk-8-jdk-headless # jdk 8

下载Vdbench

vdbench_8k_io配置文件:

create_anchors=yes
# 最新的jdk版本不支持这个参数
# messsagescan=no

fsd=fsd1,anchor=/mnt/,depth=2,width=2,files=20,size=1m
fwd=fwd1,fsd=fsd*,fileio=random,fileselect=random,openflags=o_direct
# rd=rd1,fwd=fwd*,fwdrate=max,xfersize=8k,format=yes,operation=(write,read,getattr),elapsed=120000,interval=1,threads=64
rd=rd1,fwd=fwd*,fwdrate=max,xfersize=128k,format=restart,operation=(write),elapsed=120000,interval=1,threads=64
./vdbench -f vdbench_8k_io