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…