NFS(Network File System)即网络文件系统,是 FreeBSD 支持的文件系统中的一种,它容许网络中的计算机之间经过 TCP/IP 网络共享资源。在 NFS 的应用中,本地 NFS 的客户端应用能够透明地读写位于远端 NFS 服务器上的文件,就像访问本地文件同样。php
目前 NFS 主要有三个版本(NFSv2,NFSv3,NFSv4)。 NFSv2 和 NFSv3 除了 3 版本支持更多的新特性之外,最主要的区别应该就是 NFSv2 是使用 UDP 协议进行传输的,因此 NFSv2 的链接在复杂网络环境下可能没有那么可靠,而 NFSv3 同时支持 UDP 和 TCP 协议。而 NFSv4 则是在 NFSv3 的基础上提高了性能,强制了安全策略,引入有状态的协议等...html
当 Client 端要挂载 NFS 共享卷的时候,会发送 RPC 请求给服务端,而 NFS 服务端会在用户验证后将一个随机的 Cookie 传送至客户端,以便客户端使用这个 Cookie 来认证那些要访问的共享卷。 NFS 的验证支持内置的 IP/主机权限分配,同时也被 tcp wrappers 所限制。linux
上面这段话以及架构图都是我从网上找的,主要的做用大概就是撑个场子这样,你懂的。若是你只想快速地搭建一个 CentOS 上的 NFS 环境,跳过这段 ...vim
Windows 10 x64
VMWare 12 x64
CentOS 6.7 x64 * 3
nfs-utils
nfs-utils-lib
rpcblind
复制代码
IP | OS | Function Modlue | Shared Folder | Mount Folder |
---|---|---|---|---|
192.168.174.200 | CentOS 6.7 x64 | NFS Server | /data/shared | |
192.168.174.201 | CentOS 6.7 x64 | NFS Client | /data/shared | |
192.168.174.202 | CentOS 6.7 x64 | NFS Client | /data/shared |
注:centos
登陆链接到规划的 NFS Server 节点,使用 root 用户执行以下命令建立共享目录安全
[root@hadoop1 ~]# mkdir -p /data/shared
复制代码
注:bash
建立的共享目录的位置根据实际状况而定。好比,若是你的服务器上专门挂载了一块用于存放数据的大容量磁盘,该磁盘挂载到了 /data1 目录,那么你能够将共享目录建立在 /data1 下面(/data1/shared)服务器
这个共享目录是实际存放数据文件的位置,其余的 NFS Client 访问该位置获取共享的文件信息。网络
root 用户执行以下命令架构
[root@hadoop1 data]# cd /data
[root@hadoop1 data]# pwd
/data
[root@hadoop1 data]# chmod -R 777 shared
[root@hadoop1 data]# ll -d shared
drwxrwxrwx. 2 root root 4096 Aug 6 06:18 shared
复制代码
能够根据服务器的配置以及具体的业务需求选取一台服务器做为 NFS Server,NFS Server 是用做文件物理存储的节点。所以,要考虑的是 NFS Server 服务器的磁盘资源是否知足需求。此处我选取 192.168.174.200 做为 NFS Server。SSH 链接到 192.168.174.200 服务器过程省略...
[root@hadoop1 ~]# rpm -qa | grep nfs-utils
[root@hadoop1 ~]#
复制代码
若是已经安装了 nfs-utils 及 nfs-utils-lib 包,能够直接跳过第 2 步
root 用户执行以下命令安装 nfs-utils
[root@hadoop1 ~]# yum install -y nfs-utils
复制代码
注:
nfs-utils-lib.x86_64 0:1.1.5-13.el6
keyutils.x86_64 0:1.4-5.el6
libgssglue.x86_64 0:0.1-11.el6
libtirpc.x86_64 0:0.2.1-15.el6
rpcbind.x86_64 0:0.2.0-16.el6
...
复制代码
NFS 的配置文件位于 /etc/exports,在 CentOS 6.7 中,/etc/exports 文件已经存在,内容为空。所以,我这儿使用 root 用户直接编辑此文件配置便可(若是没有此文件,能够直接建立此文件便可 touch /etc/exports 或者 vim /etc/exports)。
[root@hadoop1 ~]# vim /etc/exports
复制代码
在文件中添加以下内容:
/data/shared 192.168.174.201(rw,sync,all_squash)
/data/shared192.168.174.202(rw,sync,all_squash)
复制代码
注:
/data/shared192.168.174.201(rw,sync,all_squash) 表示 NFS Server 上的共享目录 /data/shared 容许来自 192.168.174.201 服务器上的全部用户(all_squash)的读写(rw)操做权限。且数据文件采用同步(sync)方式进行共享
上面的文件也能够配置成一行 /data/shared192.168.174.*(rw,sync,all_squash) ,表示容许 192.168.174 这个网段的全部机器的访问
配置文件中的内容格式以下,'()' 中的选项列表之间没有空格
<输出目录> [客户端1 选项(访问权限,同步方式,用户映射)] [客户端2 选项(访问权限,同步方式,用户映射)]
root 用户执行以下命令编辑 iptables 文件
[root@hadoop1 shared]# vim /etc/sysconfig/iptables
复制代码
添加以下内容,并保存退出
### rpcbind
-A INPUT -p udp -m multiport --dports 111,875,892,2049,10053,32769 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 111,875,892,2049,10053,32803 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p udp -m multiport --sports 111,875,892,2049,10053,32769 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m multiport --sports 111,875,892,2049,10053,32803 -m state --state ESTABLISHED -j ACCEPT
复制代码
以下示例:
注:
若是 NFS Server 没有开启防火墙服务,则能够跳过此步骤。
因为 rpcbind 即映射了 tcp 端口,也映射了 udp 端口,所以须要配置 tcp/udp
上面配置的这些端口都是 nfs server 服务默认监听的端口,默认的配置在 /etc/sysconfig/nfs 文件中能够查看到
在启动 nfs 以前必须先启动 rpcbind,root 用户执行以下命令启动 rpcbind
[root@hadoop1 data]# service rpcbind start
Starting rpcbind: [ OK ]
复制代码
root 用户执行以下命令启动 nfs
[root@hadoop1 data]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
复制代码
使用 SSH 分别链接到 NFS Client 对应的两个节点 192.168.174.201/202
使用 root 用户分别在两台客户端服务器上执行以下命令安装 nfs
[root@hadoop2 ~]# yum install -y nfs-utils
复制代码
注:
使用 root 用户分别在两台客户端服务器上执行以下命令建立两个本地目录,用于将 NFS Server 上的共享目录映射到本地目录。
[root@hadoop3 ~]# mkdir -p /data/shared
[root@hadoop3 ~]# cd /data
[root@hadoop3 data]# pwd
/data
[root@hadoop3 data]# chmod -R 777 shared
[root@hadoop3 data]# ll -d shared/
drwxrwxrwx. 2 root root 4096 Aug 6 06:43 shared/
复制代码
注:
[root@hadoop2 data] mount -t nfs 192.168.174.200:/data/shared /data/shared
复制代码
查看挂载后的服务器文件系统
[root@hadoop2 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 97G 4.3G 87G 5% /
tmpfs 1.9G 72K 1.9G 1% /dev/shm
/dev/sda1 283M 41M 227M 16% /boot
192.168.174.200:/data/shared
97G 16G 76G 18% /data/shared
复制代码
能够看到多出了一个将 192.168.174.200:/data/shared 挂载到本地的 /data/shared 目录的记录
在 192.168.174.202 服务器上执行以下命令
[root@hadoop3 data]# cd shared
[root@hadoop3 shared]# vim test.text
复制代码
输入以下内容,保存退出:
This is a test text!
复制代码
查看 192.168.174.202 服务器上的 /data/shared 目录,有 test.text 文件
[root@hadoop3 shared]# pwd
/data/shared
[root@hadoop3 shared]# ll
total 4
-rw-r--r--. 1 nfsnobody nfsnobody 21 Aug 6 09:38 test.text
[root@hadoop3 shared]# cat test.text
This is a test text!
复制代码
登陆 192.168.174.200/201 服务器,查看 /data/shared 目录,能够看到两个节点上都能访问刚刚在 202 上建立的 test.text 文件,以下所示:
200:
[root@hadoop1 shared]# pwd
/data/shared
[root@hadoop1 shared]# ll
total 4
-rw-r--r--. 1 nfsnobody nfsnobody 21 Aug 6 09:38 test.text
复制代码
201:
[root@hadoop2 shared]# pwd
/data/shared
[root@hadoop2 shared]# ll
total 4
-rw-r--r--. 1 nfsnobody nfsnobody 21 Aug 6 09:38 test.text
复制代码
在 192.168.174.201 上修改文件,并在文件下方添加一行 Hello World 并保存退出
[root@hadoop2 shared]# vim test.text
This is a test text!
Hello World
复制代码
查看 192.168.174.200/202 上的 /data/shared/test.text 文件内容:
200:
[root@hadoop1 shared]# pwd
/data/shared
[root@hadoop1 shared]# cat test.text
This is a test text!
Hello World
复制代码
202:
[root@hadoop3 shared]# pwd
/data/shared
[root@hadoop3 shared]# cat test.text
This is a test text!
Hello World
复制代码
能够看到更改后的内容也同时在另外两个节点上生效了。
至此,咱们在 CentOS 6.X 上安装配置 NFS 共享文件目录就完成了。
下面是收集的一些 NFS 相关的信息,若有兴趣可自行查阅。
sourceforge 上的 Linux NFS 解释: nfs.sourceforge.net/
Wikipedia 上关于 NFS 的解释: en.wikipedia.org/wiki/Networ…
简体中文版本 NFS 解释: wiki.archlinux.org/index.php/N…
Linux.die nfs: linux.die.net/man/5/nfs
Freebsd nfs: www.freebsd.org/doc/handboo…