文章目錄
- 概
- Lin 和 Win 共享檔案
- 需求
- 原理
- 環境資訊
- 檢查依賴
- 如何找mips的rpm包
- NFS服務端
- 配置項
- 上傳RPM安裝包
- 安裝RPCBIND和NFSSERVER
- 建立共享目錄
- 配置檔案/etc/exports
- 加載配置檔案
- 開機啟動
- 啟動服務
- 用戶端安裝
- 用戶端挂載
- 檢視nfs資訊
- 測試
- NFS開機挂載
- AutoFs自動挂載服務

常見的檔案服共享方式比如FTP , FTP協定的本質是傳輸檔案,而非共享檔案。
1987年,微軟公司和英特爾公司共同制定了SMB(Server Messages Block,伺服器消息塊)協定,旨在解決區域網路内的檔案或列印機等資源的共享問題。
Samba服務程式現在已經成為在Linux系統與Windows系統之間共享檔案的最佳選擇。 Samba服務程式還可以實作Linux系統之間的檔案共享 。
如果覺得Samba服務程式的配置太麻煩,而且恰巧需要共享檔案的主機都是Linux系統,推薦在用戶端部署NFS服務來共享檔案 。
NFS-Network FileSystem的縮寫,NFS是由Sun開發并發展起來的一項用于在不同機器,不同作業系統之間通過網絡互相分享各自的檔案。
NFS server也可以看作是一個FILE SERVER,它可以讓你的PC通過網絡将遠端得NFS SERVER共享出來的檔案MOUNT到自己的系統中,在CLIENT看來使用NFS的遠端檔案就象是在使用本地檔案一樣。
NFS協定從誕生到現在為止,已經有多個版本,如NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)。
NFS(網絡檔案系統)服務可以将遠端Linux系統上的檔案共享資源挂載到本地主機的目錄上,進而使得本地主機(Linux用戶端)基于TCP/IP協定,像使用本地主機上的資源那樣讀寫遠端Linux系統上的共享檔案。
叢集環境下,三台機器A、B、C,沒有檔案伺服器,但是還要通路同一個目錄,目錄中都是檔案,傳統的做法是把這些圖檔分别放到A、B、C。
是以需要搭建一個NFS服務,将NFS隻需要放到A上,然後A共享給B和C,通路的時候,B和C是通過RPC的方式去通路A資源。
網上找的圖,大佬們湊合看看吧,實在是不想畫了。。。。
Server | Comments |
---|---|
172.168.17.12 | 服務端 |
172.168.17.11 | 用戶端 |
測試環境 , 建議關閉防火牆 ,因為nfs要通過rpc遠端端口通路。
[root@localhost ~]# systemctl stop firewalld.service[root@localhost ~]# systemctl disable firewalld.service
奈何,這幾台server都是内網的,并不能使用yum 直接通路 Internet, 而且也沒有CD光牒,沒辦法通過修改yum源的配置從本地加載,自己找找吧。
如果使用rpm安裝,一堆依賴,那工作量…
rpm從哪裡下? 下哪些?
想了想,還是找找系統自帶的yum配置檔案吧
[ns7-mips64el-os]name=NeoKylin Linux Advanced Server 7 - Os
baseurl=http://download.cs2c.com.cn/neokylin/server/releases/7.0/ls_64/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release
enabled=1[ns7-mips64el-extras]name=NeoKylin Linux Advanced Server 7 - Addons
baseurl=http://download.cs2c.com.cn/neokylin/server/everything/7.0/ls_64/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release
enabled=0[ns7-mips64el-updates]name=NeoKylin Linux Advanced Server 7 - Updates
baseurl=http://download.cs2c.com.cn/neokylin/server/updates/7.0/ls_64/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release
enabled=0
baseurl=http://download.cs2c.com.cn/neokylin/server/updates/7.0/ls_64/
從哪裡下載下傳搞定了 , 下什麼。。。。。
我有x86的,我也比對着下呗
方式一: 參考 x86的
[root@localhost rpm]# yum -y install nfs-utils --downloadonly --downloaddir /root/rpm
然後下載下傳 mips的依賴包
你要是這麼懶, 位址拿去 。。。
中标龍芯-MIPS- NFS rpm包
X86-NFS rpm包
下面的操作均在 服務端端 IP 172.168.17.12上進行
[root@localhost ~]# pwd
/root
[root@localhost ~]# mkdir rpm
[root@localhost rpm]# rpm -ivh *.rpm --force --nodeps
[root@localhost rpm]# mkdir -p /home/zf/share
編輯/etc 目錄下的共享目錄配置檔案exports,指定共享目錄及權限等
[root@localhost rpm]# vim /etc/exports
# (格式:FS共享的目錄 NFS用戶端位址1(參數1,參數2,...) 用戶端位址2(參數1,參數2,...))
/home/zf/share 172.168.17.11(rw,insecure,no_root_squash,no_all_squash,sync)
其中的ip為用戶端的IP
添加的内容表示:允許ip 位址範圍在172.168.17.11 (當然了也可以配置比如ip位址範圍172.168.17.* )的計算機以rw,insecure,no_root_squash,no_all_squash,sync的權限來通路 /home/zf/share 目錄
如果設定為
/home/zf/share *(rw,insecure,no_root_squash,no_all_squash,sync)
則對是以的IP都有效
【常用選項】
- ro:用戶端挂載後,其權限為隻讀,預設選項;
- rw:讀寫權限;
- sync:同時将資料寫入到記憶體與硬碟中;
- async:異步,優先将資料儲存到記憶體,然後再寫入硬碟;
- Secure:要求請求源的端口小于1024
【使用者映射】
- root_squash:當NFS用戶端使用root使用者通路時,映射到NFS伺服器的匿名使用者;
- no_root_squash:當NFS用戶端使用root使用者通路時,映射到NFS伺服器的root使用者;
- all_squash:全部使用者都映射為伺服器端的匿名使用者;
- anonuid=UID:将用戶端登入使用者映射為此處指定的使用者uid;
- anongid=GID:将用戶端登入使用者映射為此處指定的使用者gid
[root@localhost rpm]# exportfs -arv
[root@localhost rpm]# systemctl enable rpcbind.service[root@localhost rpm]#[root@localhost rpm]# systemctl enable nfs-server.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@localhost rpm]# systemctl start rpcbind.service[root@localhost rpm]# systemctl start nfs-server.service
至此 ,nfs server端配置完畢 。接下來進行用戶端部分的操作,在IP 172.168.17.11上進行
下面的操作均在 用戶端 IP 172.168.17.11上進行
[root@localhost ~]# pwd/root[root@localhost ~]# mkdir rpm[root@localhost rpm]# ll總用量 1480
-rw-r--r-- 1 root root 99664 11月 24 21:34 gssproxy-0.7.0-4.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 55024 11月 24 21:34 keyutils-1.5.8-3.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 24536 11月 24 21:34 libbasicobjects-0.1.1-27.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 38380 11月 24 21:34 libcollection-0.6.2-27.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 196096 11月 24 21:34 libevent-2.0.21-4.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 58000 11月 24 21:34 libini_config-1.3.0-27.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 47176 11月 24 21:34 libnfsidmap-0.25-17.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 27208 11月 24 21:34 libpath_utils-0.2.1-27.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 25924 11月 24 21:34 libref_array-0.1.5-27.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 80552 11月 24 21:34 libtirpc-0.2.4-0.10.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 8284 11月 24 21:34 libverto-libevent-0.2.5-4.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 412084 11月 24 21:34 nfs-utils-1.3.0-0.48.ns7_4.1.01.mips64el.rpm
-rw-r--r-- 1 root root 179316 11月 24 21:34 quota-4.01-14.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 91280 11月 24 21:34 quota-nls-4.01-14.ns7_4.noarch.rpm
-rw-r--r-- 1 root root 59680 11月 24 21:34 rpcbind-0.2.0-42.ns7_4.mips64el.rpm
-rw-r--r-- 1 root root 80880 11月 24 21:34 tcp_wrappers-7.6-77.ns7_4.mips64el.rpm[root@localhost rpm]#
[root@localhost rpm]# rpm -ivh *.rpm --force --nodeps警告:gssproxy-0.7.0-4.ns7_4.mips64el.rpm: 頭V3 RSA/SHA1 Signature, 密鑰 ID 7a486d9f: NOKEY
準備中... ################################# [100%]正在更新/安裝...
1:libtirpc-0.2.4-0.10.ns7_4 ################################# [ 6%]
2:rpcbind-0.2.0-42.ns7_4 ################################# [ 13%]
3:libref_array-0.1.5-27.ns7_4 ################################# [ 19%]
4:libevent-2.0.21-4.ns7_4 ################################# [ 25%]
5:libcollection-0.6.2-27.ns7_4 ################################# [ 31%]
6:libbasicobjects-0.1.1-27.ns7_4 ################################# [ 38%]
7:libverto-libevent-0.2.5-4.ns7_4 ################################# [ 44%]
8:tcp_wrappers-7.6-77.ns7_4 ################################# [ 50%]
9:quota-nls-1:4.01-14.ns7_4 ################################# [ 56%]
10:quota-1:4.01-14.ns7_4 ################################# [ 63%]
11:libpath_utils-0.2.1-27.ns7_4 ################################# [ 69%]
12:libini_config-1.3.0-27.ns7_4 ################################# [ 75%]
13:gssproxy-0.7.0-4.ns7_4 ################################# [ 81%]
14:libnfsidmap-0.25-17.ns7_4 ################################# [ 88%]
15:keyutils-1.5.8-3.ns7_4 ################################# [ 94%]
16:nfs-utils-1:1.3.0-0.48.ns7_4.1.01################################# [100%][root@localhost rpm]#
[root@localhost rpm]# mkdir -p /home/zf/share
[root@localhost rpm]# systemctl enable rpcbind.service[root@localhost rpm]# systemctl enable nfs-server.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@localhost rpm]# [root@localhost rpm]# systemctl start rpcbind.service[root@localhost rpm]# systemctl start nfs-server.service[root@localhost rpm]#
[root@localhost rpm]# mount -t nfs -o nolock,nfsvers=3,vers=3 -o proto=tcp 172.168.17.12:/home/zf/share /home/zf/share
172.168.17.12 為nfs server的IP
# 檢視nfs服務端資訊$ nfsstat -s# 檢視nfs用戶端資訊$ nfsstat -c
11 上建立檔案/目錄,去12通路
12上建立檔案/目錄,去11通路
權限和你的配置有關系哈 (/etc/exports)
測試木問題呀
無論是Samba服務還是NFS服務,都要把挂載資訊寫入到/etc/fstab中,這樣遠端共享資源就會自動随伺服器開機而進行挂載,如果你不嫌麻煩的話,可以在每次使用之前執行mount指令進行手動挂載
如果希望NFS檔案共享服務能一直有效,則需要将其寫入到fstab檔案中:
172.168.17.12:/home/zf/share /home/zf/share nfs defaults 0 0
如果開啟了自動挂載NFS , 如果挂載的遠端資源太多,則會給網絡帶寬和伺服器的硬體資源帶來很大負載。如果在資源挂載後長期不使用,也會造成伺服器硬體資源的浪費。
autofs自動挂載服務可以幫我們解決這一問題。與mount指令不同,autofs服務程式是一種Linux系統守護程序,當檢測到使用者試圖通路一個尚未挂載的檔案系統時,将自動挂載該檔案系統。換句話說,我們将挂載資訊填入/etc/fstab檔案後,系統在每次開機時都自動将其挂載,而autofs服務程式則是在使用者需要使用該檔案系統時才去動态挂載,進而節約了網絡資源和伺服器的硬體資源。
[root@localhost ~]# yum install autofs.......
Complete![root@localhost ~]#