阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在linux下搭建NFS服务器实现文件共享

277次阅读
没有评论

共计 9079 个字符,预计需要花费 23 分钟才能阅读完成。

导读 今天来给大家介绍一下在 linux 下搭建 NFS 服务器实现文件共享
目录
  • 一. 关于 NFS
  • 二. 搭建一台 NFS 服务器共享特定资源
  • 三. 调优

在 linux 下搭建 NFS 服务器实现文件共享

一. 关于 NFS

1.NFS 是 Network File System 的简写,即网络文件系统。网络文件系统是 FreeBSD 支持的文件系统中的一种,也被称为 NFS,NFS 允许一个系统在网络上与他人共享目录和文件。通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。

2. 在项目中,如果 A,B,C 服务器都需要 D 服务器上的某个目录下的文件,就可以把 D 服务器上的目录使用 NFS 的方式共享给 A,B,C 服务器,既方便又节省磁盘空间,D 服务器还可以设置权限限制 A,B,C 的访问。

3.NFS 的软件架构是 C / S 架构(即客户端 / 服务器端架构)。

4.NFS 的监听端口为 2049,可以使用如下方式查看:

[root@node5 ~]# cat /etc/services | grep "^nfs"
nfs             2049/tcp        nfsd shilp      # Network File System
nfs             2049/udp        nfsd shilp      # Network File System
nfs             2049/sctp       nfsd shilp      # Network File System
nfsd-keepalive  1110/udp                # Client status info
nfsrdma         20049/tcp               # Network File System (NFS) over RDMA
nfsrdma         20049/udp               # Network File System (NFS) over RDMA
nfsrdma         20049/sctp              # Network File System (NFS) over RDMA
二. 搭建一台 NFS 服务器共享特定资源
1. 部署环境

服务器 操作系统版本 CPU 架构 进程 功能描述
node5/192.168.110.184 CentOS Linux release 7.9.2009 (Core) x86_64 rpcbind,nfs-server NFS 服务器端
node8/192.168.110.186 CentOS Linux release 7.9.2009 (Core) x86_64 需要安装 nfs-server,但是不需要启动 NFS 客户端

2. 在 node5 上安装 NFS

# 安装 nfs

[root@node5 ~]# yum -y install rpcbind nfs-utils

[root@node5 ~]# rpm -qa | grep rpcbind 
rpcbind-0.2.0-49.el7.x86_64

[root@node5 ~]# rpm -qa | grep nfs
libnfsidmap-0.25-19.el7.x86_64
nfs-utils-1.3.0-0.68.el7.x86_64

# 查看已安装的 nfs-utils 命令,生成了哪些文件

[root@node5 ~]# rpm -ql nfs-utils
/etc/exports.d
/etc/gssproxy/24-nfs-server.conf
/etc/modprobe.d/lockd.conf
/etc/nfs.conf
/etc/nfsmount.conf
/etc/request-key.d/id_resolver.conf
/etc/sysconfig/nfs
......
/var/lib/nfs/state
/var/lib/nfs/v4recovery
/var/lib/nfs/xtab

#NFS 的核心配置文件

[root@node5 ~]# ls /etc/exports
/etc/exports

[root@node5 ~]# systemctl start rpcbind

# 启动 NFS

[root@node5 ~]# systemctl start nfs

[root@node5 ~]# systemctl status rpcbind
● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-12-21 23:38:40 CST; 31s ago
  Process: 75239 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 75240 (rpcbind)
   CGroup: /system.slice/rpcbind.service
           └─75240 /sbin/rpcbind -w

Dec 21 23:38:40 node5 systemd[1]: Starting RPC bind service...
Dec 21 23:38:40 node5 systemd[1]: Started RPC bind service.

# 查看 NFS 启动状态

[root@node5 ~]# systemctl status nfs
● nfs-server.service - NFS server and services
   Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
  Drop-In: /run/systemd/generator/nfs-server.service.d
           └─order-with-mounts.conf
   Active: active (exited) since Mon 2020-12-21 23:38:55 CST; 21s ago
  Process: 75283 ExecStartPost=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
  Process: 75266 ExecStart=/usr/sbin/rpc.nfsd $RPCNFSDARGS (code=exited, status=0/SUCCESS)
  Process: 75263 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
 Main PID: 75266 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/nfs-server.service

Dec 21 23:38:55 node5 systemd[1]: Starting NFS server and services...
Dec 21 23:38:55 node5 systemd[1]: Started NFS server and services.

# 查看 NFS 端口有没有监听

[root@node5 ~]# netstat -antup | grep 2049
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
udp        0      0 0.0.0.0:2049            0.0.0.0:*                           -                   
udp6       0      0 :::2049                 :::*                                -
# 设置 NFS 开机自启动 
[root@node5 ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

# 查看 NFS 是否开机自启动

[root@node5 ~]# systemctl is-enabled nfs
enabled

3. 修改配置文件,把 node5 的 Tomcat 发布目录分享给 node8

# 修改配置文件

[root@node5 ~]# vim /etc/exports

#/usr/local/apache-tomcat-8.0.51/webapps 表示要共享的目录
#192.168.110.186 表示只对 192.168.110.186 这台服务器共享
#rw,no_root_squash 表示访问权限,rw 表示有读写权限,no_root_squash 表示 root 用户具有根目录的完全管理访问权限
#其他可用参数说明(看情况配置即可):#ro             		 #只读访问。#rw                  	 #读写访问。#sync                	 #资料同步写入到内存与硬盘当中。#async                   #资料会先暂存于内存当中,而非直接写入硬盘。#secure                  #NFS 通过 1024 以下的安全 TCP/IP 端口发送。#insecure                #NFS 通过 1024 以上的端口发送。#wdelay                  #如果多个用户要写入 NFS 目录,则归组写入(默认)。#no_wdelay               #如果多个用户要写入 NFS 目录,则立即写入,当使用 async 时,无需此设置。#hide                    #在 NFS 共享目录中不共享其子目录。#no_hide                 #共享 NFS 目录的子目录。#subtree_check           #如果共享 /usr/bin 之类的子目录时,强制 NFS 检查父目录的权限(默认)。#no_subtree_check        #和上面相对,不检查父目录权限。#all_squash              #共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录。#no_all_squash           #保留共享文件的 UID 和 GID(默认)。#root_squash             #root 用户的所有请求映射成如 anonymous 用户一样的权限(默认)。#no_root_squash          #root 用户具有根目录的完全管理访问权限。
[root@node5 ~]# cat /etc/exports
/usr/local/apache-tomcat-8.0.51/webapps 192.168.110.186(rw,no_root_squash)

# 动态加载配置文件

[root@node5 ~]# exportfs -rv
exporting 192.168.110.186:/usr/local/apache-tomcat-8.0.51/webapps

#nfs 默认使用 nfsnobody 用户,所以修改共享目录拥有者

[root@node5 ~]# chown nfsnobody:nfsnobody -R /usr/local/apache-tomcat-8.0.51/webapps

4. 在客户端 node8 上查看是否能看到共享目录

# 首先在客户端 node8 安装 nfs, 不需要启动,但是需要 nfs 里包含的命令 showmount

[root@node8 ~]# yum -y install nfs-utils

[root@node8 ~]# rpm -qa | grep nfs
nfs-utils-1.3.0-0.48.el7.x86_64
libnfsidmap-0.25-17.el7.x86_64

# 查看服务器端的共享目录,showmount 语法:showmount -e NFS 服务器端 IP
#在客户端 node8 上可以看到服务器端的共享目录,则服务器端的 /etc/exports 配置正确

[root@node8 ~]# showmount -e 192.168.110.184
Export list for 192.168.110.184:
/usr/local/apache-tomcat-8.0.51/webapps 192.168.110.186

5. 挂载共享目录

# 创建挂载目录

[root@node8 ~]# mkdir /tomcatapp

# 挂载共享目录

[root@node8 ~]# mount -t nfs 192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps /tomcatapp

# 查看挂载情况

[root@node8 ~]# df -h
Filesystem                                               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root                                   17G   14G  3.6G  80% /
devtmpfs                                                 478M     0  478M   0% /dev
tmpfs                                                    489M     0  489M   0% /dev/shm
tmpfs                                                    489M   13M  476M   3% /run
tmpfs                                                    489M     0  489M   0% /sys/fs/cgroup
/dev/loop0                                               4.3G  4.3G     0 100% /mnt/cdrom
/dev/sda1                                               1014M  125M  890M  13% /boot
tmpfs                                                     98M     0   98M   0% /run/user/0
192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps   17G   14G  4.0G  77% /tomcatapp

# 此时在 /tomcatapp 就可以看到共享文件了

[root@node8 ~]# cd /tomcatapp/
[root@node8 tomcatapp]# pwd
/tomcatapp

# 具有读的权限

[root@node8 tomcatapp]# ls
docs  examples  host-manager  index.jsp  manager  ROOT  test

# 具有写的权限

[root@node8 tomcatapp]# mkdir 2358
[root@node8 tomcatapp]# ls
2358  docs  examples  host-manager  index.jsp  manager  ROOT  test

6. 配置开机自动挂载共享目录

[root@node8 tomcatapp]# vim /etc/fstab

# 在 /etc/fstab 的末尾添加“192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps /tomcatapp nfs defaults 0 0”,使其可以开机自动挂载

[root@node8 tomcatapp]# cat /etc/fstab
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=db58ac18-ddda-44e9-bbf5-2584fac03ed6 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/mnt/yum-iso/CentOS-7-x86_64-DVD-1708.iso /mnt/cdrom iso9660 loop 0 0
192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps /tomcatapp nfs defaults 0 0

自此,NFS 服务器搭建完毕。

三. 调优

1. 调优思路:先调节系统内核参数,使操作系统性能最优,然后再调节 NFS 客户端挂载参数。

2. 系统内核优化

[root@node8 ~]# vim /etc/sysctl.conf 

[root@node8 ~]# cat /etc/sysctl.conf 
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
#内核默认读缓存
net.core.wmem_default = 8388608
#内核默认写缓存
net.core.rmem_default = 8388608
#内核最大读缓存
net.core.rmem_max = 16777216
#内核最大写缓存
net.core.wmem_max = 16777216

# 使配置文件生效

[root@node8 ~]# sysctl -p
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

3.NFS 客户端挂载参数优化

[root@node8 ~]# df -h
Filesystem                                               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root                                   17G   14G  3.6G  80% /
devtmpfs                                                 478M     0  478M   0% /dev
tmpfs                                                    489M     0  489M   0% /dev/shm
tmpfs                                                    489M   13M  476M   3% /run
tmpfs                                                    489M     0  489M   0% /sys/fs/cgroup
/dev/loop0                                               4.3G  4.3G     0 100% /mnt/cdrom
/dev/sda1                                               1014M  125M  890M  13% /boot
tmpfs                                                     98M     0   98M   0% /run/user/0
192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps   17G   14G  4.0G  77% /tomcatapp

# 先卸载共享目录

[root@node8 ~]# umount 192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps
 
[root@node8 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G   14G  3.6G  80% /
devtmpfs                 478M     0  478M   0% /dev
tmpfs                    489M     0  489M   0% /dev/shm
tmpfs                    489M   13M  476M   3% /run
tmpfs                    489M     0  489M   0% /sys/fs/cgroup
/dev/loop0               4.3G  4.3G     0 100% /mnt/cdrom
/dev/sda1               1014M  125M  890M  13% /boot
tmpfs                     98M     0   98M   0% /run/user/0

# 优化 NFS 客户端挂载参数
#- o 后面跟挂载参数
#noatime:取消更新文件系统上的 inode 访问时间, 提升 I / O 性能,优化 I / O 目的,推荐使用。
#nodiratime:取消更新文件系统上的 directory inode 访问时间,高并发环境,推荐显式应用该选项,提高系统性能。
#intr:可以中断不成功的挂载。
#rsize/wsize:读取(rsize)/ 写入(wsize)的区块大小(block size),这个设置值可以影响客户端与服务端传输数据的缓冲存储量。一般来说,如果在局域网内,并且客户端与服务端都具有足够的内存,这个值可以设置大一点,比如说 32768(bytes), 提升缓冲区块将可提升 NFS 文件系统的传输能力。但设置的值也不要太大,最好是实现网络能够传输的最大值为限。

[root@node8 ~]# mount -t nfs -o noatime,nodiratime,rsize=131072,wsize=131072,intr 192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps /tomcatapp
[root@node8 ~]# df -h
Filesystem                                               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root                                   17G   14G  3.6G  80% /
devtmpfs                                                 478M     0  478M   0% /dev
tmpfs                                                    489M     0  489M   0% /dev/shm
tmpfs                                                    489M   13M  476M   3% /run
tmpfs                                                    489M     0  489M   0% /sys/fs/cgroup
/dev/loop0                                               4.3G  4.3G     0 100% /mnt/cdrom
/dev/sda1                                               1014M  125M  890M  13% /boot
tmpfs                                                     98M     0   98M   0% /run/user/0
192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps   17G   14G  4.0G  77% /tomcatapp
[root@node8 ~]# vim /etc/fstab 

# 把优化后的挂载参数也加入到配置文件中

[root@node8 ~]# cat /etc/fstab 
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=db58ac18-ddda-44e9-bbf5-2584fac03ed6 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/mnt/yum-iso/CentOS-7-x86_64-DVD-1708.iso /mnt/cdrom iso9660 loop 0 0
192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps /tomcatapp nfs noatime,nodiratime,rsize=131072,wsize=131072,intr 0 0

[root@node8 ~]# mount -a
[root@node8 ~]# df -h
Filesystem                                               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root                                   17G   14G  3.6G  80% /
devtmpfs                                                 478M     0  478M   0% /dev
tmpfs                                                    489M     0  489M   0% /dev/shm
tmpfs                                                    489M   13M  476M   3% /run
tmpfs                                                    489M     0  489M   0% /sys/fs/cgroup
/dev/loop0                                               4.3G  4.3G     0 100% /mnt/cdrom
/dev/sda1                                               1014M  125M  890M  13% /boot
tmpfs                                                     98M     0   98M   0% /run/user/0
192.168.110.184:/usr/local/apache-tomcat-8.0.51/webapps   17G   14G  4.0G  77% /tomcatapp

自此,NFS 调优完毕。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计9079字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7804198
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...