当前位置: 首页 > news >正文

NFS读写性能评估与优化指南(上)

#作者:stackofumbrella

文章目录

  • 一、前言
  • 二、NFS简介
    • 2.1 NFS工作原理
    • 2.2 NFS历史版本
  • 三、NFS性能测试的方法 📊
    • 3.1 准备工作 🛠️
    • 3.2 选择性能测试工具
    • 3.3 使用dd进行基本性能测试
      • 连续写入性能测试
      • 连续读取性能测试

一、前言

在某些系统中使用NFS作为后端的数据存储,NFS由于通过网络传输存储数据,比本地存储多增加了网络层,使得数据传输和持久化会有较高的I/O资源消耗,因此测试NFS的读写性能,合理分配资源,显得尤为重要,本文通过介绍NFS的读写测试工具,为NFS的合理使用提供依据。

二、NFS简介

2.1 NFS工作原理

NFS(Network File System)是基于网络的客户端-服务器架构,它允许网络中的不同计算机如同访问本地磁盘一样透明地共享和存取远程主机上的文件系统。
NFS服务器在其操作系统上配置并启动相关的服务进程,如rpc.nfsd用于处理来自客户端的数据请求,并通过rpc.mountd管理共享目录的挂载权限。服务器在/etc/exports文件中定义了哪些目录可以被哪些客户端以何种权限访问。
当客户端需要访问服务器端的共享资源时,它会通过Portmapper(或rpcbind)服务查询到NFS服务器所监听的实际端口,并向这些端口发送挂载请求。一旦服务器验证并批准该请求后,客户端就可以将远端的共享目录“挂载”至本机的一个指定路径下。
在数据交换过程中,NFS协议借助于Remote Procedure Call (RPC)机制,使客户端能够执行诸如读、写、打开、关闭等与文件系统相关的操作。这些操作实际上是对服务器上对应文件系统的调用,而结果则通过网络返回给客户端。为了提高性能,NFS支持缓存技术,即客户端可以对常用文件的部分或全部内容进行缓存。同时,为了确保多用户环境下的数据一致性,NFS使用lock manager服务(如lockd)来管理和同步多个客户端对同一文件的并发访问。

2.2 NFS历史版本

NFS的各个版本的特性比较如下:
在这里插入图片描述

三、NFS性能测试的方法 📊

3.1 准备工作 🛠️

在开始NFS性能测试之前,确保服务端NFS环境已经安装和客户端目录配置已经就绪,NFS v3和NFS v4的测试方法相同。

3.2 选择性能测试工具

工具 描述
dd 简单的磁盘读写测试工具,适合基本性能评估。
fio 灵活且强大的I/O性能测试工具,支持多种测试模式。
nfsstat 用于统计NFS客户端和服务器的性能数据。

3.3 使用dd进行基本性能测试

dd是一个简单易用的工具,用于测试NFS连续的读写速度。

连续写入性能测试

# time dd if=/dev/zero of=/mnt/testfile bs=1M count=1024 conv=fdatasync​

解释:
if=/dev/zero:输入文件为零设备,生成连续的零数据流。
of=/mnt/testfile:输出文件路径,位于NFS挂载点。
bs=1M:块大小为1MB。
count=1024:写入1024个块,总计1GB数据。
conv=fdatasync:确保数据写入磁盘后再返回,保证写入完成。

连续读取性能测试

# time dd if=/mnt/testfile of=/dev/null bs=1M count=1024​

解释:
if=/mnt/testfile:输入文件为NFS挂载点的测试文件。
of=/dev/null:输出到空设备,不保存读取的数据。
bs=1M:块大小为1MB。
count=1024:读取1024个块,总计1GB数据。
示例输出
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 10.1234 s, 106 MB/s
解释:
显示了写入或读取的总字节数、所用时间及平均速率。

http://www.dtcms.com/a/286884.html

相关文章:

  • Android性能优化之电量优化
  • C 语言字符大小写互转:tolower / toupper 详解与实战
  • MySQL使用any_value()函数解决only_full_group_by报错
  • IT 和OT指的什么?
  • 短视频矩阵的时代结束了吗?
  • 智能点餐推荐网站,解决选择困难
  • Linux基础IO通关秘籍:从文件描述符到重定向
  • 使用wrk对api接口进行性能测试
  • 机器视觉基础(直播回放)
  • git从本地仓库添加到远程仓库
  • 人工智能day9——模块化编程概念(模块、包、导入)及常见系统模块总结和第三方模块管理
  • MinIO 分布式文件系统
  • 阿里云ubuntu建一个简单网页+公网访问+域名访问
  • android14截屏
  • 短视频矩阵系统:从源头到开发的全面解析
  • 电源PCB设计的热管理攻坚战:从散热瓶颈到高功率密度突破
  • 3.0 - 指针-序列化
  • 傅里叶积分法求解偏微分方程
  • 第七章 愿景09 海波龙的坑
  • 【Python练习】048. 编写一个函数,实现简单的命令行接口,接受用户输入并响应
  • springCloud -- 微服务01
  • MoveIt
  • GaussDB join 连接的用法
  • 已经安装numpy,但是报错ModuleNotFoundError: No module named ‘numpy‘
  • 船舶终端数据采集与监管平台解决方案
  • EasyGBS算法算力云平台:算法仓百种算法,全形态算力协同
  • Python 之地址编码识别
  • 判断数据类型的方法
  • 分享|技师院校人工智能技术应用专业—数字人教学辅助平台有哪些特点
  • java常见的jvm内存分析工具