如何设置NFS服务器的缓冲区大小? (nfs服务器设置缓冲区大小)

NFS(Network File System)是一种分布式文件系统协议,它允许Unix/Linux操作系统上的计算机之间共享文件和目录。NFS使用TCP/IP协议进行通信,可以在局域网甚至是广域网上共享文件和目录,是Unix/Linux系统中重要的网络共享服务之一。

在使用NFS共享文件和目录时,NFS服务器的缓冲区大小需要正确设置。缓冲区大小的设置可以影响NFS服务器的性能和可靠性,如果设置不当,可能会导致NFS服务器故障、性能下降甚至数据丢失等问题。

本文将介绍如何设置NFS服务器的缓冲区大小,帮助读者正确配置NFS服务器,提高NFS服务器的性能和可靠性。

之一步:了解NFS服务器的缓冲区

在讨论如何设置NFS服务器的缓冲区大小之前,我们需要先了解NFS服务器的缓冲区。

NFS服务器的缓冲区是指Linux内核中的网络缓存。当NFS客户端请求访问NFS服务器上的文件时,NFS服务器需要将文件数据从磁盘读取到内存中,然后通过网络发送给NFS客户端。在整个过程中,Linux内核会创建和管理网络缓存,以提高NFS服务器的性能和可靠性。

网络缓存包含两个缓存池:page cache和buffer cache。

page cache是用于缓存文件的内存页的缓存池。当NFS服务器将文件从磁盘读取到内存中时,它会将文件数据存储在page cache中,以便加快下一次访问文件的速度。

buffer cache是包含了文件系统元数据(如inode和目录)的缓存池。当NFS服务器需要访问目录或执行文件系统上的操作时,它会将元数据存储在buffer cache中,以避免频繁地访问磁盘。

第二步:了解NFS服务器的缓冲区大小对性能的影响

NFS服务器的缓冲区大小会影响NFS服务器的性能和可靠性。如果缓冲区过小,NFS服务器会经常从磁盘读取文件和元数据,影响其性能;如果缓冲区过大,NFS服务器将使用过多的内存资源,影响其可靠性和其他应用程序的性能。

根据经验,一个良好的缓冲区大小应该能够满足系统整体I/O负载,并在不占用系统过多内存资源的情况下提供出色的性能。

第三步:设置NFS服务器的缓冲区大小

为了更大程度地利用NFS服务器的性能,需要根据实际情况设置NFS服务器的缓冲区大小。

以下是设置NFS服务器的缓冲区大小的步骤:

Step 1:确认系统内核版本并编辑文件 /etc/sysctl.conf

在终端中输入以下命令,确认系统的内核版本:

uname -r

编辑文件 /etc/sysctl.conf,添加以下配置:

# 设置page cache大小

vfs_cache_pressure = 50

vm.swappiness = 10

vm.dirty_bytes = 2023152

其中,vfs_cache_pressure参数用于控制page cache所占的内存比例,vm.swappiness参数用于设置page cache和swap空间之间的交换比例,vm.dirty_bytes参数用于设置page cache的更大大小,单位为字节。

Step 2:确认系统内存大小,并设置buffer cache大小

在终端中输入以下命令,确认系统的内存大小:

free -h

根据系统的内存大小,设置buffer cache大小:

# 内存小于4GB

echo 5 > /proc/sys/vm/dirty_background_ratio

echo 30 > /proc/sys/vm/dirty_ratio

# 内存大于4GB

echo 5 > /proc/sys/vm/dirty_background_bytes

echo 3000 > /proc/sys/vm/dirty_bytes

其中,dirty_background_ratio参数和dirty_ratio参数用于设置buffer cache中数据和元数据所占的比例。dirty_background_bytes参数和dirty_bytes参数用于设置buffer cache的大小,单位为字节。

Step 3:重新启动系统

完成以上配置后,需要重新启动系统生效。

结论

在使用NFS服务器共享文件和目录时,正确设置NFS服务器的缓冲区大小对提高NFS服务器的性能和可靠性至关重要。本文介绍了如何设置NFS服务器的缓冲区大小,并希望能对读者正确配置NFS服务器,提高NFS服务器的性能和可靠性产生帮助。

相关问题拓展阅读:

LINUX怎样安装和使用NFS服务

LINUX NFS安装和使用,具体步骤如下:

1 安装

需要安装 portmap和nfs-utils这两个包,下载rpm包后用rpm安装或者直接用yum安装都可以。

rpm -ivh portmap-4.0-65.2.2.1.i386.rpm

rpm -ivh nfs-utils-1.0.9-50.el5.i386.rpm

2 配置

配置文件是/etc/exports,如果不存在需要自己创建。

/etc/exports文件内容格式:

NFS主要的选项有3类:

A 访问权限选项

设置输出目录只读:ro

设置输出目录读写:rw

B 用户映射选项

all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash:与all_squash相反(默认设置);

root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);

no_root_squash:与rootsquash相反;

anonuid=:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=);

anongid=:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=);

C 其它选项

secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

insecure:允许客户端从大于1024的tcp/ip端口连接服务器;

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);

no_wdelay:若有写操好早作则立即执行,应与sync配合使用;

subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

例如,我们在namenode1机器上配置做如下配置

/home/dfs/nfs_share_edits/ namenode2(rw)

这个配置是把namenode1上的/home/dfs/nfs_share_edits目录设置成共享,可以给namenode2来访问,访问权限是可读写。

3 启动

sudo service portmap start

sudo service nfs start

查询状态

service portmap status

service nfs status

停止服务

service nfs stop

service portmap stop

4 客户端挂载

命令格式旁袜衫

mount NFS服务器IP/域名:共享目录本地挂载运腔目录

例如,在namenode2机器上运行mount命令挂载namenode1的NFS共享目录

mkdir /home/dfs/nfs_share_edits

sudo mountnamenode1:/home/dfs/nfs_share_edits /home/dfs/nfs_share_edits

这是把namenode2把namenode1的NFS共享目录挂载到本地,这样就可以访问远程的共享目录了,挂载前需要先创建本地的挂载目录。

挂载之后,可以用mount命令查看挂载状态

sudo mount | grep -i nfs

卸载命令

sudo umount namenode1:/home/dfs/nfs_share_edits

5 相关的守护进程

nfsd

它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;

mountd

它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。

portmap

主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。

6 相关的命令

#查看配置

exportfs

#默认查看共享的服务

showmount -e

#查看已经与客户端连接上的目录信息

showmount -a

举例,有台机器叫AAA,想把自己机器根下的一个叫abc的目录极其里面的所有文件都共享给一台叫BBB的机器。

在这里AAA就可看成是服务器,BBB为客户端,方法如下:

(在AAA上先配置)

1.

vi /etc/唤敬友exports

(用vi编辑器打开共享资源,在里面填写共享稿绝的属性,linux下nfs的共享资源路径为etc下的exports)

打开编辑器后,里面可能什么都没有,需要自己填写,然后保存即可,在这里填写

2.

/abc BBB(ro)

之后按Esc停止和槐文字录入,然后按Shift+;键,在出来的冒号后输入wq,表示保存退出!

(这个的格式是这样的:先给出要共享的路径,然后空格,后面写共享给谁,可以是IP地址或主机名。再后面的括号里表示以什么方式来共享,ro是客户端只能读,如果想让客户端可以改,可设为rw,即可读写)

目前好像是不可以的,识别不了的

怎么加大tcp传输的缓冲区

大家可能有的人看过这样一个帖子,大概意思是说,如果你是宽带上网,还想提高网速,那么你可以在注册表中设定适当的Tcpip Window值,修改默认数值。那么,这种“修改Tcpip Window值提高网速”的说法是否有原理依据呢?让我们一起来分析下。

  操作方法:打开注册表编辑器,在其中 找到“HKEY_LOCAL_MACHINE\System\CurrenControlSet\Services\Tcpip\Parameters”子键,在右边键值区中,找到或新建一个名为“GlobalmaxTcp WindowSize”的DWORD键值项,将其数据值数据设为“256960”(十进制),关闭注册表编辑器,重新启动电脑即可。

  原理介绍:通常情况下,TCP/IP默认的数据宴昌传输单元接受缓冲区的大小为576字节,要是将这个缓冲区的大小设置得比较大的话,一旦某个TCP/IP分组数据发生错误时,那么整个数据缓冲区中的所有分组内容,都将被丢失并且进行重新传送;显然不断地重新进行传输,会大大影响ADSL传输数据的效率。为此,设置合适缓冲区大小,确保ADSL传输数据的效率始终很高,将会对ADSL传输速度有着直接的影响!

  那么,这一说法是否真有科学依据呢?

  回答:没有科学依据。这一注册表键值是无效的,修改该注册表键值前后的网络速度不会发生变化。

  宽带上网的优化原理是对操兆芦作系统的网络设置进行修改,使其更加贴合上网数据传输的需要。一般情况下,上网数据传输主要采用了TCP/IP协议,该协议将传输的数据分成大小相同的数据包,数据包越大,冗余数据就会越多。数据包的更大容量就是Maxmtu。在Windows中系统默认的Maxmtu值是1500字节,而宽带实际的传输单元要略晌猜扒小于这个数值。这样在上网的数据传输过程中,数据包中的数据就需要分组重装成宽带适合的数据包大小了,传输速度骤减,上网速度就会减慢了。

  另外,各个宽带运营商的Maxmtu的值可能是不同的,因此手动修改系统的Maxmtu值才能更快地上网。那么,我们怎么来获得宽带运营商的Maxmtu值呢?最简单的方法是,在命令提示符窗口输入“ping -f -l.96.107.28”(其中1464是测试的数据包大小,202.96.107.28是DNS服务器IP,如图1),如果返回“来自 202.96.107.28 的回复: 字节=1464 时间=92ms TTL=251”的提示则说明该数据包小于宽带运营商的Maxmtu值,如果返回“ 需要拆分数据包但是设置 DF。”(在Vista命令提示符下测试的数据)类似的回复则说明数据包超过宽带运营商的Maxmtu值,可以适当缩小该数值。经过以上方法获得更佳的数值后,宽带运营商的Maxmtu值就是测试值加上28(如1464合适,则Maxmtu为1492)。

NFS笔记(二)NFS服务器配置实例

一、NFS服务器配置实例

实验拓扑

二、实验要求及环境

2.1实验环境

NFS服务器 IP:192.168.8.5

环境:

# uname -a

Linux server7.ctos.zu 3.10.0-514.el7.centos.plus.i686 #1 P Wed Jan 25 12:55:04 UTC 2023 i686 i686 i386 GNU/Linux

# cat /etc/redhat-release

CentOS release 7.3.1611 (AltArch)

客户端IP:192.168.8.7

环境:

# uname -a

Linux client-A.ctos.zu 2.6.32-696.el6.i686 #1 P Tue Mar 21 18:53:30 UTC 2023 i686 i686 i386 GNU/Linux

# cat /etc/redhat-release

CentOS release 6.9 (Final)

2.2、实验要求

NFS服务器

1、/home/share 目录可读写,并且不限制用户身份,共享给192.168.8.0/24网段不的所有主机;

2、/home/zhidata 这个目录仅共享给192.168.8.7这台主机,以供该主机上面的zhi这个用户来使用,

也就是说zhi在192.168.8.5和192.168.8.7上均有账号,且账号均为zhi;

3、/home/upload 这个目录做为192.168.8.0/24网段的数据上传目录,其中/home/upload

的用户和所属组为nfs-upload这个名字,它的辩友埋UID和GID均为222;

4、/home/nfs  这个目录的属性为携蚂只读,可提供除了网段内的工作站外,向Internet也提供数据内容。

三、服务器端设置

1、 编辑/etc/exports内容

# cat /etc/exports

/home/share  192.168.8.0/24(rw,no_root_squash)

/home/zhidata  192.168.8.7(rw)

/home/upload   192.168.8.0/24(rw,all_squash,anonuid=222,anongid=222)

/home/nfs.168.8.0/24(ro)  *(ro,all_squash)

2、按要求建立每个对应目录

    2.1、创建/home/share目录 任何人都可以在 /home/share内新增、修改文件,但

    仅有该文件/目录的建立者与root能够删除自己告陪的目录或文件。

    # mkdir -p  /home/share

    # ll -d /home/share/

    drwxr-xr-x. 2 root root 6 9月:50 /home/share/

    # chmod/home/share/

    # ll -d /home/share/

    drwxrwxrwt. 2 root root 6 9月:50 /home/share/

    2.2、创建/home/nfs

    # ll -d /home/nfs/

    drwxr-xr-x. 2 root root 6 9月:52 /home/nfs/

    2.3、创建/home/zhidata目录

    # mkdir -v /home/zhidata

    mkdir: 已创建目录 “/home/zhidata”

    # ll -d /home/zhidata/

    drwxr-xr-x. 2 root root 6 9月:57 /home/zhidata/

    # useradd zhi

    root@server7 etc># passwd zhi

    更改用户 zhi 的密码 。

    新的 密码:

    无效的密码: 密码少于 8 个字符

    重新输入新的 密码:

    passwd:所有的身份验证令牌已经成功更新。

    # cat /etc/passwd | grep zhi

    zhi:x:1000:1000:zhi:/home/zhi:/bin/bash

    # chmod 700 /home/zhidata/

    # chown -R zhi:zhi /home/zhidata/

    # ll -d /home/zhidata/

    drwx——. 2 zhi zhi 6 9月:57 /home/zhidata/

    2.4、创建/home/upload目录

#先建立对应账号与组名及UID

# groupadd  -g 222 nfs-upload

# useradd -g 222 -u 222 -M nfs-upload

# cat /etc/passwd|grep nfs

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/in/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/in/nologin

nfs-upload:x:222:222::/home/nfs-upload:/bin/bash

#创建目录,修改属主

# mkdir /home/upload

# chown -R nfs-upload:nfs-upload  /home/upload/

# ll -d /home/upload/

drwxr-xr-x. 2 nfs-upload nfs-upload 6 9月:38 /home/upload/

2.5、重启NFS服务

# systemctl restart  nfs

# systemctl status  nfs

● nfs-server.service – NFS server and services

   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)

   Active: active (exited) since 三:41:40 CST; 8s ago

  Process: 9171 ExecStopPost=/usr/in/exportfs -f (code=exited, status=0/SUCCESS)

  Process: 9169 ExecStopPost=/usr/in/exportfs -au (code=exited, status=0/SUCCESS)

  Process: 9168 ExecStop=/usr/in/rpc.nfsd 0 (code=exited, status=0/SUCCESS)

  Process: 9181 ExecStart=/usr/in/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)

  Process: 9180 ExecStartPre=/usr/in/exportfs -r (code=exited, status=0/SUCCESS)

 Main PID: 9181 (code=exited, status=0/SUCCESS)

   CGroup: /system.slice/nfs-server.service

9月 06 08:41:40 server7.ctos.zu systemd: Starting NFS server and services…

9月 06 08:41:40 server7.ctos.zu systemd: Started NFS server and services.

# tail /var/log/messages

Sep  6 08:41:40 server7 systemd: Started NFS Mount Daemon.

Sep  6 08:41:40 server7 rpc.mountd: Version 1.3.0 starting

Sep  6 08:41:40 server7 systemd: Started NFSv4 ID-name mapping service.

Sep  6 08:41:40 server7 systemd: Starting NFS server and services…

Sep  6 08:41:40 server7 kernel: NFSD: starting 90-second grace period (net c0c932c0)

Sep  6 08:41:40 server7 systemd: Started NFS server and services.

Sep  6 08:41:40 server7 systemd: Starting Notify NFS peers of a restart…

Sep  6 08:41:40 server7 -notify: Version 1.3.0 starting

Sep  6 08:41:40 server7 -notify: Already notifying clients; Exiting!

Sep  6 08:41:40 server7 systemd: Started Notify NFS peers of a restart.

2.6、查看NFS服务器共享出来目录

2.7、关闭防火墙、selinux

2.8查看配置

# exportfs -v

/home/zhidata.168.8.7(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

/home/share.168.8.0/24(rw,wdelay,no_root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

/home/upload.168.8.0/24(rw,wdelay,root_squash,all_squash,no_subtree_check,anonuid=222,anongid=222,sec=sys,rw,secure,root_squash,all_squash)

/home/nfs.168.8.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

/home/nfs(ro,wdelay,root_squash,all_squash,no_subtree_check,sec=sys,ro,secure,root_squash,all_squash)

四、客户端配置

4.1、客户端也要安装nfs-utils和rcpbind软件包

# yum install nfs-utils rpcbind -y

4.2、启动RPC

# service rpcbind start  /systemctl start rpcbind

Starting rpcbind:

# service rpcbind status

rpcbind (pid  1926) is running…

# chkconfig –list |grep rpcbind

4.3、客户端关闭防火墙、selinux

# service iptables stop /systemctl stop firewalld

iptables: Setting chains to policy ACCEPT: filter

iptables: Flushing firewall rules:

iptables: Unloading modules:  

4.4 测试网络

# ping 192.168.8.5

PING 192.168.8.5 (192.168.8.5) 56(84) bytes of data.

64 bytes from 192.168.8.5: icmp_seq=1 ttl=64 time=2.16 ms

64 bytes from 192.168.8.5: icmp_seq=2 ttl=64 time=0.697 ms

64 bytes from 192.168.8.5: icmp_seq=3 ttl=64 time=0.346 ms

64 bytes from 192.168.8.5: icmp_seq=4 ttl=64 time=0.336 ms

64 bytes from 192.168.8.5: icmp_seq=5 ttl=64 time=0.335 ms

64 bytes from 192.168.8.5: icmp_seq=6 ttl=64 time=0.317 ms

64 bytes from 192.168.8.5: icmp_seq=7 ttl=64 time=0.512 ms

64 bytes from 192.168.8.5: icmp_seq=8 ttl=64 time=0.320 ms

^C

.168.8.5 ping statistics —

8 packets tranitted, 8 received, 0% packet loss, time 7555ms

rtt min/avg/max/mdev = 0.317/0.629/2.169/0.595 ms

4.5 在客户端查看NFS服务器共享出来目录

# showmount -e 192.168.8.5

Export list for 192.168.8.5:

/home/nfs     (everyone)

/home/upload  192.168.8.0/24

/home/share   192.168.8.0/24

/home/zhidata 192.168.8.7

4.6、挂载NFS服务器上/home/nfs目录到本地/opt/data目录下

#临时挂载

#永久挂载

编辑、/etc/fstab文件,新增如下条目:

192.168.8.5:/home/nfs  /opt/data/nfs4 defaults 0 0

更多信息参考 nfs参数详解

#查看信息

# df -h

FilesystemSize  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

.5G  644M  5.6G  11% /

tmpfs   250MM   0% /dev/shm

/dev/sda477M   26M  426M   6% /boot

192.168.8.5:/home/nfs

.0G  1.6G  6.5G  20% /opt/data

# mount

/dev/mapper/VolGroup-lv_root on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

nfsd on /proc/fs/nfsd type nfsd (rw)

192.168.8.5:/home/nfs on /opt/data type nfs (rw,vers=4,addr=192.168.8.5,clientaddr=192.168.8.7)

#创建文件测试

# touch testabc

touch: cannot touch `testabc’: Read-only file system

4.7挂载/home/upload 目录到客户端/opt/upload目录下

#挂载

# mkdir /opt/upload

# mount -t nfs  192.168.8.5:/home/upload   /opt/upload/

#查看挂载是否成功

# df -h

FilesystemSize  Used Avail Use% Mounted on

/dev/mapper/VolGroup-lv_root

.5G  644M  5.6G  11% /

tmpfs   250MM   0% /dev/shm

/dev/sda477M   26M  426M   6% /boot

192.168.8.5:/home/nfs

.0G  1.6G  6.5G  20% /opt/data

192.168.8.5:/home/upload

.0G  1.6G  6.5G  20% /opt/upload

#客户端创建nfs-upload用户

# groupadd  -g 222 nfs-upload

# useradd -g 222 -u 222 -m nfs-upload

#测试,可以看到创建的文件及目录默认属主为nfs-upload属组为nfs-upload

$ pwd

/opt/upload

$ ll

total 0

#测试创建文件

$ touch test123

测试创建目录

$ mkdir  testdir

$ ll -a

total 4

drwxr-xr-x  3 nfs-upload nfs-upload   36 Sep  6 10:28 .

drwxr-xr-x. 4 rootrootSep  6 18:22 ..

-rw-rw-r–  1 nfs-upload nfs-upload    0 Sep  6 10:28 test123

drwxrwxr-x  2 nfs-upload nfs-upload    6 Sep  6 10:28 testdir

# 在客户端用root用户创建文件测试

root@client-A upload># touch testabc

# ll

total 0

-rw-r–r– 1 rootrootSep  6 10:31 nfstest123

-rw-r–r– 1 nfs-upload nfs-upload 0 Sep  6 10:32 testabc

drwxrwxr-x 2 nfs-upload nfs-upload 6 Sep  6 10:28 testdir

可以看到用root用户创建的文件属主仍是nfs-upload

#测试删除文件

$ rm test123

$ ll

total 0

关于nfs服务器设置缓冲区大小的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 如何设置NFS服务器的缓冲区大小? (nfs服务器设置缓冲区大小)