基于滴滴云搭建 NFS Server

1. NFS 简介

NFS 即网络文件系统,用户可以通过网络将自己服务器上的目录共享出来,具有访问权限的服务器就可以将远程服务器上的目录挂载到本地,对本地目录的读写将会映射到远程服务器。在本地机器上看,远程服务器上的目录就好像自己的一个磁盘分区一样。

2. NFS Server 安装

本次安装环境为:Centos 7.5

2.1 安装 NFS

NFS 服务主要涉及到两个软件:rpcbind 和 nfs-utls。Rpcbind 主要用来提供 RPC 服务,由于 NFS 提供的功能非常多,设计时没有将其各个功能的端口固定,而是在启动时,向 rpcbind 注册自己的服务端口,客户端进行连接时,首先向 rpcbind 询问 NFS 服务所在端口,然后再与 NFS 进行通信。这里 rpcbind 的端口固定为 111,所以客户端总能与 rpcbind 取得联系。

在 Centos 上,我们使用 yum 来进行安装:

yum -y install nfs-utils rpcbind

2.2 配置 NFS 共享目录

安装完 NFS 后,我们需要配置 NFS 对外共享哪些目录,以及对哪些客户端进行共享。比如,我想在 DC2 上将 /data/dorothy 这个目录共享出去,同时规定只有 172.22.51.28 这台机器可以访问,我可以这样设置:

mkdir -p /data/dorothy  #注意一下目录的访问权限
chmod 777 /data
chmod 777 /data/dorothy
vi /etc/exports  #没有这个文件的话需要自己手动创建

/data/dorothy 111.202.154.66(insecure,rw,no_root_squash,no_all_squash,sync)

上述配置中括号里的内容表示 172.22.51.28 这台机器对 /data/dorothy 这个目录的操作权限,常见参数有:

参数值内容说明
rw、ro该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关
sync、asyncsync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘
no_root_squash、root_squash客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行
all_squash不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody)
insecure允许客户端从大于1024的tcp/ip端口连接服务器

使用 exportfs -r 使配置生效。

配置完成后我们就可以启动相关服务了:

image-20181210173159571

服务启动后查看一下相关端口信息:

rpcinfo -p 

image-20181210173420087

除了 111 和 2049 这两个端口是固定的,其他端口都是随机的。我们在滴滴云上创建 DC2 时,默认只有 22 和 80 端口是开放的,我们还要在滴滴云上开放 status、mountd 以及 nlockmgr 对应的端口(这一步很重要!!!)。但是每次启动 NFS 时,这些端口都是随机的,所以我们需要固定这些端口。在 /etc/sysconf/nfs 中添加如下配置:

RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004  

重启服务:

service nfs restart

再用 rpcinfo -p 查看一下端口信息:

image-20181210174821561

可以看到 mountd 和 status 服务的端口已经生效了。

修改 /ect/modprobe.d/lockd.conf 加入如下配置:

options lockd nlm_tcpport=30002
options lockd nlm_udpport=30002

然后重新加载 NFS 配置和服务:

systemctl restart nfs-config
systemctl restart nfs-idmap
systemctl restart nfs-lock
systemctl restart nfs-server

滴滴云上选择重新服务器,上述配置就生效了。

image-20181210175127170

image-20181210175218778

可以看到 nlockmgr 服务的端口也变成固定端口了。

下一步我们需要在 DC2 的安全组里开放 NFS 相关的端口, 这里主要有 111、2049、30002、30003、30004 。

具体操作为:

在你的 DC2 页面点击安全组:

image-20181210175554359

点击创建安全组:

image-20181210175649347

填写安全组名和应用到的 DC2:

image-20181210175812639

点击立即创建,然后在你刚刚创建的安全组里添加新的安全规则,把 111、2049、30002、30003、30004 这几个端口的 TCP、UDP 以及接入接出规则都创建一下。这里展示一下 111 端口的安全规则,其他端口相同:

image-20181210180346697

这样,NFS 服务端的配置就完成了。

3. 客户端设置

客户端需要安装 nfs-utils 这个软件:

yum -y install nfs-utils

创建挂在目录:

mkdir /home/morespace/dorothy/nfs

使用 showmount 命令查看服务端共享出的目录信息:

image-20181210181103951

如果这一步卡住了,报错:clnt_create rpc port mapper failure - timed out , 那么可能是服务端 NFS 相关端口没有开放,可以尝试 telnet ip port 看看能不能 telnet 通,如果不能,还需要在安全组里开放相关端口。

下一步我们就可以挂在远程目录了。首先我们在服务器共享出来的目录下创建一个 hello.txt 文件:

image-20181210181603072

挂载远程目录:

image-20181210182111463

可以看到本地挂在的目录与远程目录的内容相同,说明挂在成功了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值