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服务
- 怎么加大tcp传输的缓冲区
- 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=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
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服务器设置缓冲区大小的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。