关于nfs:openEuler-NFS协议全新发布实现NAS存储性能与可靠性倍增

4月21日,在openEuler Developer Day 2023上,openEuler公布NFS+协定,实现单客户端拜访NAS存储可靠性晋升3倍、性能晋升6倍,助力NAS存储全面满足新型生产外围场景下刻薄要求。 传统NFS面临挑战 网络文件系统(NFS)是一种分布式文件系统协定,最后由Sun公司于1984年开发,它容许客户端上的用户通过网络拜访服务端文件系统中的数据。因为其配置简略,使用方便,已广泛应用于金融数据交换平台,EDA仿真,话单,票据影像等行业。随着利用场景扩张,数据重要性一直进步,各行业对NAS存储的可靠性和性能提出了更高的诉求。传统NFS单个挂载点仅指定一个服务端IP地址,在应用过程中面临以下挑战: 首先,在网口故障或者链路故障场景下,挂载点无法访问,导致业务IO挂死,可靠性有余; 其次,NAS存储部署于公共区,主机拜访须要跨三层组网,一端故障时IP无奈感知,以后依附应用层手动挂载文件系统,双活链路无奈主动切换。 再次,单个挂载点性能受限于单个物理链路性能,重要业务存在性能瓶颈。 基于openEuler操作系统的NFS多路径技术原理 生产NAS存储应用NFS协定,要求Client及Server端到端提供故障解决方案,以及超过本地文件系统的高性能数据共享能力。例如,在Client侧,要求链路高牢靠、并发高性能;在Server侧,要求具备权限/资源管控/灾备/平安等能力。 面对以上要害挑战,openEuler推出全新NFS+协定。NFS+协定是运行在openEuler操作系统内核中的驱动模块,蕴含NFS协定层的挂载参数治理模块和传输层多路径治理模块。NFS+通过指定多个本地IP地址和多个服务端IP地址,实现不同IP地址建设多条TCP/RDMA链路,实现多路径建链、故障复原和倒换、负载平衡等个性。 多条物理链路能力,实现单个挂载点NFS性能晋升。 最优门路算法自定义NFS+协定提供厂商自定义选路算法接口,存储服务端厂商可基于本身特点自定义最优选路算法,实现性能最优。   NFS+协定全面晋升NAS性能与可靠性 NFS+协定未修改操作系统数据面,对主机CPU资源无占用,仅在管制面新增多路径性能,实现跨控、跨设施、跨站点故障秒级主动切换,NAS存储拜访性能晋升6倍,可靠性晋升3倍。 故障切换和复原NFS+协定主动感知链路故障异样,对故障链路进行降级隔离,通过业界独创三层网络双活门路主动切换,实现上层存储故障或主机侧IO超时,跨站点AA双活被动切换,解决跨引擎生效、主机无感知问题。 故障切换:NFS+协定发现链路故障时会主动将IO切换到其余可用链路上,实现链路故障IO无感知。故障复原:NFS+协定可自动检测链路状态,在链路故障复原后主动将I/O从新下发到该门路。<!----> 链路负载平衡NFS+通过网卡端口/多网卡/多节点聚合,晋升主机并发拜访能力。NFS+协定为NFSv3协定提供根本的Round Robin选路算法,实现单个挂载点在多条链路上平衡下发IO,充分利用 面对新场景、新业务、新需要,企业须要及时响应疾速变动的用户需要,能力在强烈的竞争中放弃当先。openEuler将联结社区搭档与开发者继续共建NAS生态,打造性能、可靠性倍增的NFS+协定,助力NAS存储性能及可靠性全面晋升,提供高牢靠、高性能、易运维的NAS存储解决方案,减速数字化转型。

April 26, 2023 · 1 min · jiezi

关于nfs:NFS服务详解

一.NFS概述1.概述NFS是一种基于TCP/IP 传输的网络文件系统协定。通过应用NFS协定,客户机能够像拜访本地目录一样拜访近程服务器中的共享资源NAS存储: NFS服务的实现依赖于RPC (Remote Process Call,远端过程调用)机制,以实现近程到本地的映射过程。在Centos 7零碎中,须要装置nfs-utils、 rpcbind 软件包来提供NFS共享服务,前者用于NFS共享公布和拜访,后者用于RPC反对。手动加载NFS共享服务时,应该先启动rpcbind, 再启动nfs。nfs端口:2049RPC端口:111w2.特点采纳TCP/IP传输网络文件安全性低简略易操作适宜局域网环境 二.NFS工作原理NFS服务器能够让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的零碎中来看,那个近程主机的目录就如同是本人的一个磁盘分区一样,在应用上相当便当; 2.1NFS工作流程 1.首先服务器端启动RPC服务,并开启111端口2.服务器端启动NFS服务,并向RPC注册端口信息3.客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务申请服务端的NFS端口4.服务端的RPC(portmap)服务反馈NFS端口信息给客户端。5.客户端通过获取的NFS端口来建设和服务端的NFS连贯并进行数据的传输。 2.2挂载原理 当咱们在NFS服务器设置好一个共享目录/opt后,其余的有权拜访NFS服务器的NFS客户端就能够将这个目录挂载到本人文件系统的某个挂载点,这个挂载点能够本人定义,如上图客户端A与客户端B挂载的目录就不雷同。并且挂载好后咱们在本地可能看到服务端/opt的所有数据。 三.NFS服务部署3.1常用命令 罕用选项 形容rw 容许读写ro 只读sync 同步写入async 先写入缓冲区,必要时才写入磁盘,速度快,但会丢数据subtree_check 若输入一个子目录,则nfs服务将查看其父目录权限no_subtree_check 若输入一个字目录,不查看父目录,提高效率no_root_squash 客户端以root登录时,赋予其本地root权限oot_squash 客户端以root登录时,将其映射为匿名用户all_squash 将所有用户映射为匿名用户 exportfs -v //查看具体的nfs信息exportfs -r //重读配置文件showmount -e //查看本机公布的NFS共享目录showmount -e +IP //查看IP地址公布的NFS共享目录mount -t nfs 192.168.48.6:/opt /mnt //将NFS服务端192.168.48.6下的/opt挂载到/mnt下rpcinfo -p localhost //查看rpc注册的端口信息 3.2服务器端配置我应用的是两台3a服务器,带宽比拟高,yum装置老快了。 1.查看并装置软件rpm -q rpcbind nfs-utilsyum install -y rpcbind nfs-utils2.创立共享目录vim /etc/exports //NFS的配置文件,默认文件内容为空(无任何共享)/opt 192.168.48.0/24(rw,sync,no_root_squash)//设置/opt为共享目录,容许192.168.48.0网段的IP地址主机拜访3.启动服务systemctl start rpcbind //肯定要先开启rpcbind服务systemctl start nfs //如服务已启动,更改完配置信息后须要重启服务 查看服务端的共享目录及网段 查看服务端的nfs详细信息 3.3客户端配置1.1.查看并装置软件rpm -q rpcbind nfs-utilsyum install -y rpcbind nfs-utilssystemctl start rpcbindsystemctl start nfs2.将共享目录挂载到本地 ...

August 16, 2022 · 1 min · jiezi

关于nfs:k8s中使用nfs共享存储

长久卷应用(nfs存储数据)Kubernetes 为了使应用程序及其开发人员可能失常申请存储资源,防止解决存储设施细节,引入了 PV 和 PVC。创立 PV 有两种形式: 集群管理员通过手动形式动态创立利用所须要的 PV;用户手动创立 PVC 并由 Provisioner 组件动态创建对应的 PV。搭建nfs服务器(ip:192.168.0.29)找一台服务器搭建nfs服务端, 我以centos7为例 装置nfsyum -y install nfs-utils#创立nfs目录mkdir -p /nfs/data/#批改权限chmod -R 777 /nfs/data#编辑export文件vim /etc/exports/nfs/data *(rw,no_root_squash,sync) (“*“代表所有人都能连贯,倡议换成具体ip或ip段,如192.168.20.0/24)#配置失效exportfs -r#查看失效exportfs#启动rpcbind、nfs服务systemctl restart rpcbind && systemctl enable rpcbindsystemctl restart nfs && systemctl enable nfs#查看 RPC 服务的注册情况rpcinfo -p localhost#showmount测试showmount -e 192.168.92.56#所有node节点装置nfs客户端yum -y install nfs-utilssystemctl start nfs && systemctl enable nfs1.动态创立PV卷增加pv卷对应目录,这里创立2个pv卷,则增加2个pv卷的目录作为挂载点。#nfs服务器操作#创立pv卷对应的目录mkdir -p /nfs/data/pv001mkdir -p /nfs/data/pv002#配置exportrsvim /etc/exports/nfs/data *(rw,no_root_squash,sync)/nfs/data/pv001 *(rw,no_root_squash,sync)/nfs/data/pv002 *(rw,no_root_squash,sync)#配置失效exportfs -r#重启rpcbind、nfs服务systemctl restart rpcbind && systemctl restart nfs第一步:集群管理员创立 NFS PV,NFS 属于 K8s 原生反对的 in-tree 存储类型。yaml 文件如下: ...

October 9, 2021 · 3 min · jiezi

关于nfs:k8s使用nfs存储数据

1. 名词解释in-tree:代码逻辑在 K8s 官网仓库中;out-of-tree:代码逻辑在 K8s 官网仓库之外,实现与 K8s 代码的解耦;PV:PersistentVolume,集群级别的资源,由 集群管理员 or External Provisioner 创立。PV 的生命周期独立于应用 PV 的 Pod,PV 的 .Spec 中保留了存储设备的详细信息;PVC:PersistentVolumeClaim,命名空间(namespace)级别的资源,由 用户 or StatefulSet 控制器(依据VolumeClaimTemplate) 创立。PVC 相似于 Pod,Pod 耗费 Node 资源,PVC 耗费 PV 资源。Pod 能够申请特定级别的资源(CPU 和内存),而 PVC 能够申请特定存储卷的大小及拜访模式(Access Mode);StorageClass:StorageClass 是集群级别的资源,由集群管理员创立。SC 为管理员提供了一种动静提供存储卷的“类”模板,SC 中的 .Spec 中具体定义了存储卷 PV 的不同服务质量级别、备份策略等等;CSI:Container Storage Interface,目标是定义行业标准的“容器存储接口”,使存储供应商(SP)基于 CSI 规范开发的插件能够在不同容器编排(CO)零碎中工作,CO 零碎包含 Kubernetes、Mesos、Swarm 等。2. 组件介绍PV Controller:负责 PV/PVC 绑定及周期治理,依据需要进行数据卷的 Provision/Delete 操作;* AD Controller:负责数据卷的 Attach/Detach 操作,将设施挂接到指标节点;Kubelet:Kubelet 是在每个 Node 节点上运行的次要 “节点代理”,性能是 Pod 生命周期治理、容器健康检查、容器监控等;Volume Manager:Kubelet 中的组件,负责管理数据卷的 Mount/Umount 操作(也负责数据卷的 Attach/Detach 操作,需配置 kubelet 相干参数开启该个性)、卷设施的格式化等等;Volume Plugins:存储插件,由存储供应商开发,目标在于扩大各种存储类型的卷治理能力,实现第三方存储的各种操作能力,即是下面蓝色操作的实现。Volume Plugins 有 in-tree 和 out-of-tree 两种;External Provioner:External Provioner 是一种 sidecar 容器,作用是调用 Volume Plugins 中的 CreateVolume 和 DeleteVolume 函数来执行 Provision/Delete 操作。因为 K8s 的 PV 控制器无奈间接调用 Volume Plugins 的相干函数,故由 External Provioner 通过 gRPC 来调用;External Attacher:External Attacher 是一种 sidecar 容器,作用是调用 Volume Plugins 中的 ControllerPublishVolume 和 ControllerUnpublishVolume 函数来执行 Attach/Detach 操作。因为 K8s 的 AD 控制器无奈间接调用 Volume Plugins 的相干函数,故由 External Attacher 通过 gRPC 来调用。3. 长久卷应用(nfs存储数据)k8s应用NFS共享存储有两种形式: ...

October 9, 2021 · 1 min · jiezi

关于nfs:URLOS发布NFS文件加速功能可有效提升NFS小文件读取性能

在服务器集群的分布式环境下,多台服务器之间的文件共享的形式多见于采纳NFS,NFS是一种网络共享文件系统,它能够让计算机通过网络将远端的共享文件挂载到本机的零碎中,就像是在应用本地文件一样,然而,NFS的读取性能却饱受诟病,因为它的文件读写性能切实太慢了,如果是在分布式网站环境中采纳NFS作为文件共享存储,那么优化NFS的读取性能则是重中之重的事件。 如果采纳URLOS构建集群网站,则NFS的小文件读取性能将失去极大晋升,URLOS提供的NFS文件减速功次要是为解决第三方NFS设施读写性能瓶颈而专门研发的优化解决方案,该计划简略易用,一键开启NFS文件减速,极大晋升小 NFS文件减速到底能给网站性能带来多大的晋升? 咱们简略的进行了一个测试,硬件采纳2核4G的阿里云主机,采纳AB压力测试失去下图数据: NFS文件减速,其原理和思路基本上与CDN类型,将网站动态文件缓存到本地磁盘,晋升小文件的读取速率,从而进步网站并发能力。 对于URLOS提供的NFS文件减速性能,你怎么看? URLOS官网近期正在做618流动,如果您想体验NFS文件减速,那么千万别错过哦!! 流动页面:https://www.urlos.com/pn_2021...

June 1, 2021 · 1 min · jiezi

armlinux之旅挂载NFS根文件目录

为了加快应用的开发速度,比较推荐的方式是在引导kernel之后通过网络挂载到主机设置的nfs文件夹中。减少了来回拷贝的麻烦开发环境 主机:ubuntu 16.04 x64开发板:NUC980 linux-4.4内核NFS服务器配置sudo apt install nfs-kernel-server // 安装NFS服务器sudo vim /etc/exports // 配置NFS文件夹exportfs -r // 检查NFS配置sudo /etc/init.d/nfs-kernel-server restart // 重启服务器sudo ufw disable // 关闭防火墙NFS文件夹配置配置文件位置为 /etc/exports,写完后通过exportfs -r检查/NFS_ROOT_NAME (rw,sync,insecure,all_squash)ro 该主机对该共享目录有只读权限rw 该主机对该共享目录有读写权限root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户no_root_squash 客户机用root访问该共享文件夹时,不映射root用户sync 资料同步写入到内存与硬盘中async 资料会先暂存于内存中,而非直接写入硬盘insecure 允许从这台机器过来的非授权访问all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户anonuid 将客户机上的用户映射成指定的本地用户ID的用户anongid 将客户机上的用户映射成属于指定的本地用户组ID内核配置在内核的menuconfig中,打开以下选项 打开网络相关选项 Networking support ---> Networking options ---> [*] TCP/IP networking [*] IP: kernel level autoconfiguration [*] IP: DHCP support [*] IP: BOOTP support [*] IP: RARP support打开NFS文件系统相关选项 File systems ---> [*] Network File Systems ---> <*> NFS client support <*> NFS client support for NFS version 2 <*> NFS client support for NFS version 3 [*] Root file system on NFS内核引导参数 ...

July 15, 2019 · 1 min · jiezi

在Linux系统中快速搭建NFS服务的新途径

也许各位朋友看到这个标题会觉得很奇怪,会问:在Linux中搭建NFS网络存储服务有多难?小菜一碟。也许对给位老手来说这是一件再简单不过的事,但是,这里给到大家的是一个全新的,能一键部署NFS服务的方案,感兴趣的朋友不妨了解一下。 这里的方案就是通过URLOS一键部署NFS,话不多说,直接开始: 打开URLOS系统后台,在应用市场中搜索“nfs”,点击安装:填写服务名称其实也没有什么需要设置的,点击提交即可。写到到这里,我们已经将nfs服务部署完,是的,就是这么快! 下面是演示如何挂载nfs共享存储,首先在别的机器上安装nfs客户端工具 root@ubuntu:/# apt-get install -y nfs-common安装完成后在根目录下新建一个目录nfsdir root@ubuntu:/# mkdir nfsdir在用以下命令挂载nfs root@ubuntu:/# mount 192.168.43.121:/ /nfsdir/192.168.43.121:/即我们刚才部署的nfs服务器,以上的意思就是将nfs服务器的根目录挂载到该机器的nfsdir目录。 我们在该机器创建一个文件a.txt,然后在urlos主控面板可以查看到该文件,说明共享存储服务生效了 root@ubuntu:/# cd nfsdir/root@ubuntu:/nfsdir# lsa.txt

May 23, 2019 · 1 min · jiezi

Directory-Not-Empty-删不掉的幽灵

无法删除的文件最近部门NAS测试团队遇到一个非常诡异的问题,在删除一棵存在SMB共享文件夹的文件树时,删除完子目录的所有文件后,再删除这个子目录的时候居然系统报出“Directory Not Empty”的错误从而导致用例测试未通过,打开这个目录一看,确实有一个文件并未删除成功,再查看I/O工具的日志,报告所有的文件都已经成功删除。难道是I/O工具出了问题而没有正确报出错误,这个经过工具开发者的研究后确认后貌似工具没有任何问题,这个问题起初被开发团队踢皮球,死活不承认是SMB2服务器的问题。死活非得让抓取网络包来证实。 作为一个网络分析的伪专家,自己也厚着脸皮主动蹭入NAS测试团队强行出力,希望把这个悬案搞个谁落石出。 抓包重现首先,设置好抓包参数,同时重现问题,这一步很顺利。由于测试参数没有任何更改,很顺利的重现了问题,并且将出问题对应时间点的网络包悉数抓到。 在Windows2106的客户端开启抓包工具wireshark(其对应的命令行工具为 tshark), 并且设置好相关参数: $ tshark -i ens1 -B 4096 -s 1024 -w client-traffic.pcap参数的含义就是在接口ens1上抓取长度为1024字节的每一个帧, 并把这些帧存在client-traffic.pcap的文件里 分析在抓取到网络包以后,我们开始解包分析: 同样通过tshark命令解包分析, 并将揭开的内容分别重定向到摘要文件client-traffic.summary和详细展开格式的client-traffic.detail文件当中: $ tshark -t ud -Y "ip.addr==<server-ip>" -r client-traffic.pcap >>client-traffic.summary$ tshark -t ud -O smb2 -Y "ip.addr==<server-ip>" -r client-traffic.pcap >>client-traffic.detail打开client-traffic.summary文件后的一步就是要找到对应未删除成功的文件(文件名: VCg8iMkGWgll2VJoEFMUa0FKp1DJHEG2)最后一次出现的帧,简单的通过文本搜索便可定位,找到对应的帧以后发现,这个操作是一个Create操作,根据协议[MS-SMB2], 删除操作是通过一组三元操作 Create/SetInfo/Close来实现的,称为Delete-On-Close,由于我们正要寻找的是删除操作,借此可以大胆推测,这个Create (Frame #210725)请求正是三元删除重的第一步, 再往后的帧一个个寻找,果然找到了第二步SetInfo (Frame #210727) 和第三步Close (Frame #210757, 通过该帧展开后确认其FileID属性与前两步操作对象一致) 两个请求以及对应的服务器端的回复:最后Close并未得到服务器回复 Delete-On-Close 操作中的前两步Delete-On-Close 操作中的前两步然而最后的一步的close 请求(Frame #210757)并未得到服务器端的回复,那么问题显然出在了这里,继续往下分析,为什么服务器没有对最后一步close操作作出响应呢? 最后Close并未得到服务器回复 奇怪的是,这个close操作发出后在0.1秒内没有得到任何回复,于是出发了TCP层的超时重传(RTO)(Frame #210765),按道理说在同一个实验室的内部网络下,网络状况是十分好的,基本上不可能发生RTO的情况(即便连快速重传也是极为罕见的),除非服务器出现了宕机。此时我突然想到我们测试当中为了测试SMB2的CA功能(Continues Availability:高可靠性,容忍服务器重启或者故障转移), 经常会引入错误注入的测试用例,再次翻看测试日志,果然发现在创建和删除文件操作的同时有重启服务器节点的操作执行,查看时间戳和发生问题的时间点一直,现在基本可以明确的是,发生的问题和CA有关了。 删除文件同时服务器重启 现在来看看正常的CA流程,当客户端一个SMB2请求遇到服务器重启的情况下,网络会暂时断开,发出的请求在若干次超时重传以后会收到服务重启后发出的TCP重置请求(RST)(Frame #210769), 客户端在收到此请求后便可得知网络发生了断连,为是后续操作得以延续,必须再次建立TCP的连接(通过三次握手 Frame #210770, #210771, #210772), 重新协商(Negotiate. Frame #210773)建立会话(Session Setup. Frame #210776)和共享文件根目录的连接(Tree Connect. Frame #210785), 最后,因为客户端知道在网络断连之前最后一次没有响应的操作即目标文件,此时客户端会通过Create操作(Frame #210787)重新发起一个对目标文件的连接(在client-traffic.detail可看到展开后的Create操作的RECONNECT信息),从而接续上服务器从其前的步骤,实现CA的功能特性 ...

May 11, 2019 · 1 min · jiezi

网络存储之 NFS

网络存储之 NFS资源http://nfs.sourceforge.net/ 官网http://cn.linux.vbird.org/lin… 客户端安装http://cn.linux.vbird.org/lin… 服务端安装http://alephnull.com/benchmar… 性能测试对比特性NFS也是非常稳定和久经考验的解决方案。NFS的缺点也是比较明显的,单节点风险,比如NFS服务挂掉,整个文件就能访问,网站Down掉,因此NFS只能作为一个暂存的解决方案,使用NFS一定要有一个备份系统。NFS协议从诞生到现在为止,已经有多个版本 v4比v3快百分之20NFS v4 可以设置更大的块 524288 512k 要求使用TCP,有状态的自身实现了文件锁功能,NFSv4支持delegation实现多客户端文件同步NFS v3 无状态 只能设置块最大为32768 32kNFS v2 设计成为只使用UDP协议,v2 只能支持设置块最大为8192 8k概念安装yum install nfs-utils 安装nfs 和rpcbindrpm -ql nfs-utils 查看安装包详情/etc/sysconfig/nfs #配置文件配置账号cat /etc/passwd # 查看系统用户groupadd -g 45 nfsuser #添加用户组nfsuser,GID 45值可以设置没有占用的useradd -u 45 -g nfsuser nfsuser #添加用户,并加入用户组,设置用户UID值mkdir /home/sharefiles #创建分享目录,分享目录所在磁盘注意容量问题setfacl -m u:nfsuser:rwx /home/sharefiles #设置分享目录ACL用户权限vim /etc/exports #编辑分享目录配置文件#设置要分享的目录,分享给谁,定义相关属性权限/home/sharefiles 10.29.167.186(rw,sync,all_squash,anonuid=45,anongid=45)/home/sharefiles 10.29.168.24(rw,sync,all_squash,anonuid=45,anongid=45)#分享目标可以是完整IP或IP域192.168.100.0/24表示一个网段主机,支持通配符* 表示所有主机#权限:rw读写权限、ro只读、sync数据同步写入内存硬盘生产环境使用、async异步先写入内存后再写入硬盘、all_squash不论登录NFS的用户是谁都会改成匿名用户(nfsnobody)配合anonuid和anongid指定用户身份、root_squash默认值将root登陆用户转为匿名用户、fsid=0 根文件系统NFS4no_root_squash 客户端使用 root 身份来操作服务器的文件系统sudo systemctl start rpcbind 启动服务RPC服务 先启动centos7以下service rpcbind startsudo systemctl start nfs-server 启动服务nfs service nfs-server startsudo systemctl enable nfs-server 加入开机启动 或命令 chkconfig nfs-server onsudo systemctl enable rpcbindsudo systemctl list-unit-files|grep nfs #查看系统中NFS服务开启状态sudo systemctl status/stop nfs-server #status为查看服务状态,stop为关闭服务。sudo systemctl disable nfs-server #关闭开机启动netstat -tulnp| grep -E ‘(rpc|nfs)’ 查看NFS开启的端口rpcinfo -p localhost 查看本机RPC注册情况 rpcinfo 无法输出,那就表示注册的数据有问题!可能需要重新启动 rpcbind 与 nfsshowmount -e localhost #显示出刚刚我们所设定好的相关 exports 分享目录信息客户端安装yum install nfs-utils #同样安装启动 rpcbindsystemctl enable rpcbind #开机启动systemctl start rpcbind #启动mkdir -p /home/nfs/ 创建挂载点目录mount -t nfs -o noatime,nodiratime,noexec,nosuid,nodev,rw,tcp,bg,intr,vers=4,rsize=65536,wsize=65536 10.29.167.233:/home/sharefiles /home/nfs #挂载grep nfs /proc/mounts #查看本机挂载的默认nfs4版本df -m 查看系统目录将可以看到挂载的NFSvim /etc/rc.local #开机挂载NFS写入加载命令 mount -achmod +x /etc/rc.d/rc.local 给命令赋予执行权限vim /etc/fstab #开机挂载NFS10.29.167.233:/home/sharefiles /home/nfs nfs4 noexec,nosuid,nodev,rw,tcp,bg,intr,vers=4,rsize=65536,wsize=65536 0 0umount -vl /home/nfs #取消挂载mount -a # 加载文件“/etc/fstab”中描述的所有文件系统如果NFS还有客户端联机,NFS服务端服务器将无法关机,必须先关掉rpcbind和nfs才行。netstat -utlp 命令找出PID kill杀掉进程或者所有客户端卸载挂载常用操作命令nfsstat -rc 查看服务端是否存在瓶颈 retrans值过高说明NFS线程数不够,默认值为8修改/etc/sysconfig/nfs配置文件中RPCNFSDCOUNT值调整,调整之后需重新加载配置exportfs -rv生产服务器上,在系统资源够的情况下,可以按照一核CPU 8个nfs进程来算,2核16个进程ps -efl|grep nfsd 查看进程数通过查看 cat /proc/net/rpc/nfsd文件的th行,第一个是nfsd的个数,后十个是线程是用的时间数,第二个到第四个值如果非常大,那么就需要增加nfsd的个数-l 打印输出状态列表信息-r 显示RPC 状态-v 显示全部状态信息-o net 显示包网络信息TCP UDPshowmount -e 10.29.167.186 或 localhost 显示指定端的信息nfsstat -o net 查看网络包状态 TCP UDP的丢包率rpcinfo -p localhost 查看本机或指定IP的RPC服务注册情况rpcinfo -t localhost nfs #查看本机或指定IP的主机TCP使用的软件版本号rpcinfo -u localhost nfs #查看本机或指定IP的主机UDP使用的软件版本号tail /var/lib/nfs/etab 查看分享目录可以设置的其他参数exportfs -arv #修改exports配置分享文件之后重新挂载不需要重启nfsexportfs -auv #卸载所有已经分享的NFS目录资源,不能乱用exportfs -v #查看配置配置功能调试优化客户端加载优化:mount -t nfs4 -o noexec,nosuid,nodev,rw,tcp,bg,intr,rsize=65536,wsize=65536 10.29.167.233:/home/sharefiles /home/nfsnoatime 取消更新文件系统上的inode访问时间,提升I/O性能,优化I/O目的,推荐使用nodiratime 取消更新文件系统上的directory inode访问时间,高并发环境,推荐显式应用该选项,提高系统性能noexec 挂载的这个文件系统,要不要执行程序(安全选项)nosuid 挂载的这个文件系统上面,可不可以设置UID(安全选项)rsize/wsize 读取(rsize)/写入(wsize)的区块大小(block size),这个设置值可以影响客户端与服务端传输数据的缓冲存储量对于小块读取 32k会在读取64k数据文件时读取性能下降。对于小块写入性能都差不多大块读取性能随配置变化大,其中值为32k,64k和128k具有最高和最一致的性能。对于大块写入性能都差不多内存越大性能越好,cpu多少不影响性能NFS4比NFS3性能高所以建议:避免32k和1m。使用64k。使用“同步”和其他默认值。使用大内存,使用NFS4async 异步同步,此参数会提高I/O性能,但会降低数据安全(除非对性能要求很高,对数据可靠性不要求的场合。一般生产环境,不推荐使用)异步会超时不稳定NFS官方优化可以修改,官方的建议:a.命令行调整cat /proc/sys/net/core/rmem_max #该文件指定了发送套接字缓冲区大小的最大值124928 cat /proc/sys/net/core/rmem_default #该文件指定了发送套接字缓冲区 大小的默认值124928echo 8388608 > /proc/sys/net/core/rmem_default echo 16777216 > /proc/sys/net/core/rmem_max内核优化:cat >>/etc/sysctl.conf<<EOFnet.core.wmem_default = 8388608net.core.rmem_default = 8388608net.core.rmem_max = 16777216net.core.wmem_max = 16777216EOF/sbin/sysctl -p 生效配置常见问题客户端的主机名或 IP 网段不被允许使用,没有配置IP允许分享挂载服务器或客户端某些服务未启动 启动rpcbind防火墙的问题,防火墙开放NFSfirewall-cmd –permanent –zone=public –add-service=nfsfirewall-cmd –reload实际应用测试NFS性能sync; echo 1 > /proc/sys/vm/drop_caches #安全清除缓存阿里云服务器 云磁盘性能测试SSD硬盘 最大IOPS :20000 最大吞吐量:256MBps 计算公式:IOPS=min{30容量,20000} 吞吐量=min{50+0.5容量,256}MBps 取最小值高效云盘 最大IOPS: 3000 最大吞吐量: 80MBps 计算公式:IOPS=min{1000+6容量,3000} 吞吐量=min{50+0.1容量,80}MBps 取最小值普通云盘 最大IOPS:数百 最大吞吐量:30MBps 200G高效云盘最大IOPS为 1000+6200=2200 最大吞吐量为: 50+0.1200= 70MBpsyum install fio测试随机写IOPS:fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Write_Testing测试随机读IOPS:fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Rand_Read_Testing测试写吞吐量:fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=64k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Write_PPS_Testing测试读吞吐量:fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=64k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=iotest -name=Read_PPS_Testingdd 测试写性能的命令/dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!/dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0if=文件名:输入文件名 of=文件名:输出文件名 bs=bytes:同时设置读入/输出的块大小为bytes个字节 count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数测试时文件的大小至少是系统RAM的两倍,每次测试都使用umount 和mount对/testfs进行挂载,通过比较不同的块大小,得到优化的块大小。这样才能不用系统缓存time dd if=/dev/zero of=/home/nfs/nfs.dat bs=64k count=16384 #循环向nfs目录中写入大小为64k的文件 写入次数16384 总共文件大小为1.GBdd 测试读性能的命令time dd if=/home/nfs/nfs.dat of=/dev/null bs=64ksync; echo 1 > /proc/sys/vm/drop_caches #安全清除缓存云盘 fio 结果read : io=1024.0MB, bw=8803.4KB/s, iops=2200, runt=119111msec #随机读 带宽8.7M/秒write: io=1024.0MB, bw=8804.7KB/s, iops=2201, runt=119093msec #随机写 带宽8.7M/秒write: io=1024.0MB, bw=71737KB/s, iops=1120, runt= 14617msec #吞吐量写 带宽70M/秒read : io=1024.0MB, bw=71776KB/s, iops=1121, runt= 14609msec #吞吐量读 带宽70M/秒云盘dd结果写性能结果: 耗时4.67692 s, 速度 81 MB/s cpu使用率为7% 无文件217M 覆盖写81M读性能结果: 耗时0.237726 s, 速度73 MB/sio= 执行了多少M的IO bw= 平均IO带宽 iops= IOPS runt= 线程运行时间slat 提交延迟 clat 完成延迟 lat响应时间 bw 带宽 cpu利用率NFS fio 结果write: io=1024.0MB, bw=6786.3KB/s, iops=1696, runt=154520msec #随机写 带宽6.7M/秒read : io=1024.0MB, bw=13263KB/s, iops=3315, runt= 79062msec #随机读 带宽13M/秒 cpu消耗大了5倍write: io=1024.0MB, bw=67615KB/s, iops=1056, runt= 15508msec #吞吐量写 带宽66M/秒read : io=1024.0MB, bw=67606KB/s, iops=1056, runt= 15510msec #吞吐量读 带宽66M/秒NFS dd结果写性能结果:耗时19.9055 s, 速度 50 MB/s cpu使用率为 3%读性能结果:耗时0.248948 s, 速度 70 MB/s正式环境普通云盘dd测试结果 带缓存不同配置写性能:17.2018 s, 62.4 MB/s读性能:0.267751 s, 4.0 GB/s正式环境普通云盘fio测试结果 带缓存效果不同配置write: io=1024.0MB, bw=31542KB/s, iops=492 , runt= 33244msec #吞吐量写 带宽31M/秒read : io=1024.0MB, bw=77437KB/s, iops=1209 , runt= 13541msec #吞吐量读 带宽77M/秒write: io=1024.0MB, bw=4563.3KB/s, iops=1140 , runt=229787msec #随机写 带宽4.5M/秒read : io=1024.0MB, bw=5342.4KB/s, iops=1335 , runt=196275msec #随机读 带宽5.3M/秒 ...

December 18, 2018 · 3 min · jiezi