Ubuntu NFS配置

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

1、 开启portmap和nfs服务

apt-get install nfs-kernel-server

/etc/init.d/portmap start

/etc/init.d/nfs-kernel-server start

2、 将要共享的目录写到exports文件中 假设共享的目录为 /sharedisk/

vim /etc/exports

这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:

            [共享的目录] [主机名或IP(参数,参数)] 

其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。

当主机名或IP地址为空时,则代表共享给任意客户机提供服务。

当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:

            [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]

/home/share 192.168.102.15(rw,sync) *(ro)

#对192.168.102.15赋予读写权限,其他机器仅有只读权限。

括号中的参数设置意义为:

ro                      只读访问 

rw                      读写访问 

sync                    所有数据在请求时写入共享 

async                   NFS在写入数据前可以相应请求 

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_squas           root用户具有根目录的完全管理访问权限 

anonuid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的UID 

anongid=xxx             指定NFS服务器/etc/passwd文件中匿名用户的GID 


3、重启nfs 或者使用exportfs命令使设置生效

   重启nfs:/etc/init.d/nfs-kernel-server restart

   用exportfs: 

   exportfs -rv

-a :全部mount或者unmount /etc/exports中的内容 

-r :重新mount /etc/exports中分享出来的目录 

-u :umount 目录 

-v :将详细的信息输出到屏幕上

exportfs可以根据/etc/exports配置生成一个 /var/lib/nfs/etab文件,此文件是共享目录的最终权限的设置。

4、在客户端挂载该目录:

在本地创建挂载的目录 

mkdir /sharedisk

mount -t nfs 192.168.0.10:/sharedisk  /sharedisk

#将服务器192.168.0.10上的/sharedisk/ 路径挂载到本地

   

5、NFS 防火墙设置

由于nfs服务需要开启 nfs,portmapper,mountd,nlockmgr,rquotad这5个服务,需要将这5个服务的端口加到iptables里面

而nfs 和 portmapper两个服务是固定端口的,nfs为2049,portmapper为111。其他的3个服务是用的随机端口,那就需要

先把这3个服务的端口设置成固定的。

查看当前这5个服务的端口并记录下来 用rpcinfo -p

root@server:~# rpcinfo -p

    program vers proto   port  service

    100000    4   tcp    111  portmapper

    100000    3   tcp    111  portmapper

    100000    2   tcp    111  portmapper

    100000    4   udp    111  portmapper

    100000    3   udp    111  portmapper

    100000    2   udp    111  portmapper

    100024    1   udp  32802  status

    100024    1   tcp  54040  status

    100003    2   tcp   2049  nfs

    100003    3   tcp   2049  nfs

    100003    4   tcp   2049  nfs

    100227    2   tcp   2049

    100227    3   tcp   2049

    100003    2   udp   2049  nfs

    100003    3   udp   2049  nfs

    100003    4   udp   2049  nfs

    100227    2   udp   2049

    100227    3   udp   2049

    100021    1   udp  54770  nlockmgr

    100021    3   udp  54770  nlockmgr

    100021    4   udp  54770  nlockmgr

    100021    1   tcp  44903  nlockmgr

    100021    3   tcp  44903  nlockmgr

    100021    4   tcp  44903  nlockmgr

    100005    1   udp  44541  mountd

    100005    1   tcp  54030  mountd

    100005    2   udp  47762  mountd

    100005    2   tcp  57530  mountd

    100005    3   udp  35485  mountd

    100005    3   tcp  56965  mountd

将这3个服务的端口设置为固定端口:

vim  /etc/services

在文件的最后一行添加:

mountd  54030/tcp

mountd  35485/udp

rquotad  966/tcp

nlockmgr  44903/tcp

nlockmgr  54770/udp

把相关的端口添加到iptables

6、启动时自动挂栽

修改客户机的 /etc/fstab文件,加入类似如下行:

            192.168.102.47:/home/share      /mnt    nfs     rsize=8192,wsize=8192,timeo=14,intr

重启客户机,即可实现系统启动时自动挂栽共享资源


7、使用 autofs 实现资源挂栽

autofs 使用 automount 守护进程来管理你的挂载点,它只在文件系统被访问时才动态地挂载它们。

autofs 查询主配置文件 /etc/auto.master 来决定要定义哪些挂载点。然后它使用适用于各个挂载点的参数来启动 automount 进程。

主配置中的每一行都定义一个挂载点,然后用单独的配置文件定义在该挂载点下要挂载的文件系统。

安装 autofs

             # aptitude  install autofs

修改/etc/auto.master文件, 加入如下内容:

            /mnt      /etc/auto.nfs

创建 /etc/auto.nfs 文件内容如下:


            nfs -rw,soft,intr,rsize=8192,wsize=8192 192.168.102.47:/home/share


这样,每当您进入 /mnt/nfs 目录时,系统都会尝试将服务器的共享资源挂栽到该目录上。

应当注意nfs目录是由 automount 动态地创建的,它不应该在客户机器上实际存在。

===============================================================================================

centos系统的iptables设置

配置针对NFS Server的防火墙

[root@mes-bk backup]# vi /etc/sysconfig/nfs

# Port rquotad should listen on.

RQUOTAD_PORT=875

# TCP port rpc.lockd should listen on.

LOCKD_TCPPORT=32803

# UDP port rpc.lockd should listen on.

LOCKD_UDPPORT=32769

# Port rpc.mountd should listen on.

MOUNTD_PORT=892

其中 portmapper nfs 服务端口是固定的分别是 111 2049

另外 rquotad nlockmgr mountd 服务端口是随机的。由于端口是随机的,这导致防火墙无法设置。

这时需要配置/etc/sysconfig/nfs 使 rquotad nlockmgr mountd 的端口固定。

找到以下几项,将前面的#号去掉。

[root@mes-bk backup]# rpcinfo -p localhost

   程序采用的协议连接阜

100000    2   tcp    111  portmapper

100000    2   udp    111  portmapper

100024    1   udp    907  status

100024    1   tcp    910  status

100011    1   udp    897  rquotad

100011    2   udp    897  rquotad

100011    1   tcp    900  rquotad

100011    2   tcp    900  rquotad

100003    2   udp   2049  nfs

100003    3   udp   2049  nfs

100003    4   udp   2049  nfs

100021    1   udp  47851  nlockmgr

100021    3   udp  47851  nlockmgr

100021    4   udp  47851  nlockmgr

100003    2   tcp   2049  nfs

100003    3   tcp   2049  nfs

100003    4   tcp   2049  nfs

100021    1   tcp  56501  nlockmgr

100021    3   tcp  56501  nlockmgr

100021    4   tcp  56501  nlockmgr

100005    1   udp    911  mountd

100005    1   tcp    914  mountd

100005    2   udp    911  mountd

100005    2   tcp    914  mountd

100005    3   udp    911  mountd

100005    3   tcp    914  mountd

-A RH-Firewall-1-INPUT -s 0.0.0.0/24 -m state --state NEW -p tcp --dport 33993 -j ACCEPT

-A RH-Firewall-1-INPUT -s 0.0.0.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT



挂接nfs server的client端执行nfsstat -m命令,可以得出nfs server端nfs版本




本文转自 freeterman 51CTO博客,原文链接:http://blog.51cto.com/myunix/1433510,如需转载请自行联系原作者

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
网络协议 Java 应用服务中间件
Springboot+ubuntu+Let‘s Encrypt配置https
Springboot+ubuntu+Let‘s Encrypt配置https
33 0
|
2月前
|
Ubuntu
百度搜索:蓝易云【Ubuntu开机自启服务systemd.service配置教程】
现在,你的服务将在Ubuntu开机时自动启动,并在之后的启动中持续运行。记得根据你的实际需求修改 `your_service_name.service`文件中的相关信息。
54 2
|
3月前
|
存储 网络协议 Ubuntu
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
如何在Ubuntu安装配置SVN服务端并实现无公网ip访问内网资料库
69 0
|
3月前
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统SSH服务端配置】
现在,你已经成功在Ubuntu系统上配置了SSH服务端。这将允许其他计算机通过SSH协议连接到你的Ubuntu系统,并进行远程管理和操作。请注意,远程访问有安全风险,建议在生产环境中采取必要的安全措施来保护系统。
39 3
|
3月前
|
存储 Ubuntu
百度搜索:蓝易云【在ubuntu系统下安装配置onedrive步骤】
现在,你已经成功在Ubuntu系统下安装和配置了OneDrive,可以使用该工具与OneDrive云端存储进行同步。
40 0
|
3月前
|
Ubuntu
百度搜索:蓝易云【Ubuntu系统新增硬盘,配置自动挂载教程】
现在,您的新硬盘应该已经成功配置为开机自动挂载到 `/mnt/new_disk`目录下了。在每次开机后,Ubuntu会自动将该硬盘挂载到指定的挂载点,您可以在该挂载点下访问和使用新硬盘。
38 0
|
2月前
|
负载均衡 Ubuntu 应用服务中间件
|
11天前
|
Ubuntu 开发工具 git
ubuntu18.04下配置muduoC++11环境
以上步骤将在Ubuntu 18.04下配置C++11环境,并编译安装muduo库。请根据实际情况对配置步骤进行调整。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
15 0
|
13天前
|
Ubuntu 网络安全 数据安全/隐私保护
ubuntu篇-配置FTP服务,本机和docker安装
通过以上步骤,你可以在Ubuntu上配置FTP服务,无论是本机安装还是Docker内安装,都可以提供FTP文件传输服务。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
20 1
|
16天前
|
Ubuntu 开发工具
Ubuntu vim配置支持鼠标
Ubuntu vim配置支持鼠标
12 0