首頁 運維 linux運維 linux下NFS安裝配置的方法是什麼

linux下NFS安裝配置的方法是什麼

May 19, 2023 pm 07:46 PM
linux nfs

1,伺服器端軟體:安裝nfs-utils和portmap(rpcbind)
nfs-utils: 提供rpc.nfsd 及rpc.mountd這兩個nfs daemons的套件
portmap : nfs其實可以被看作是一個rpc server program,而要啟動一個rpc server program,都要做好port的對應工作,而且這樣的任務就是由portmap來完成的。通俗的說portmap就是用來做port的mapping的。
nfs需要啟動的daemons

  • pc.nfsd:主要複雜登陸權限偵測等必須

  • ##portmap:處理rpc程式客戶端和伺服器端的連接埠對應必須

  • rpc.mountd:負責nfs的檔案系統,當client端透過rpc.nfsd登陸server後,對clinet存取server的檔案進行一系列的管理必須

  • lockd:處理透過rpc包的鎖定請求

  • statd:為nfs鎖定服務提供crash恢復功能

  • rquotad:處理當使用者透過nfsmount到遠端伺服器時的配額

  • 守護程式啟動順序:rpc.portmap, rpc.mountd, rpc. nfsd, rpc.statd, rpc.lockd (新版本會自動跟著nfsd啟動起來), rpc.rquotad

nf伺服器端指令:

•yum install nfs-utils portmap

•chkconfig rpcbind on #chkconfig:更新與查詢各運作等級的系統服務
•chkconfig nfs on
•service rpcbind start
•service nfs start

2,伺服器端設定檔/etc/exports:指定要共享的目錄及權限man exports


複製程式碼 程式碼如下:

#:允許ip位址範圍在192.168.0.*的電腦以讀寫的權限來存取/home/work 目錄。
/home/work 192.168.0.*(rw,sync,root_squash)
/home  192.168.1.105 (rw,sync)
/public  * (rw,sync)
##設定檔案每行分為兩段:第一段為共享的目錄,使用絕對路徑,第二段為客戶端位址及權限。

位址可以使用完整ip或網段,例如10.0.0.8或10.0.0.0/24,10.0.0.0/255.255.255.0當然也可以位址可以使用主機名,dns解析的和本地/etc/hosts解析的兩者都行,支援通配符,例如:*.chengyongxu.com


權限有:

rw:read-write,可讀寫;    注意,僅這裡設定成讀寫客戶端還是無法正常寫入,也要正確地設定共享目錄的權限,參考問題7

ro:read-only,只讀;
sync:檔案同時寫入硬碟和記憶體;
async:檔案暫存於內存,而不是直接寫入記憶體;
no_root_squash:nfs客戶端連線服務端時如果使用的是root的話,那麼對服務端分享的目錄來說,也擁有root權限。顯然開啟這項是不安全的。
root_squash:nfs客戶端連接服務端時如果使用的是root的話,那麼對服務端分享的目錄來說,擁有匿名用戶權限,通常他將使用nobody或nfsnobody身份;
all_squash:不論nfs客戶端連接服務端時使用什麼用戶,對服務端分享的目錄來說都是擁有匿名用戶權限;
anonuid:匿名用戶的uid值,通常是nobody或nfsnobody,可以在此處自行設定;
anongid:匿名使用者的gid值。


nfs客戶端用戶對映:

客戶端登陸用戶為root或其他用戶,然後根據伺服器端nfs server配置,對應客戶端連線對應到nfs伺服器端的用戶為root或指定使用者(透過anonuid或anongid來設定)、nfsnobody等。最後這個映射使用者和共享目錄的權限共同影響該客戶端連線是否有讀寫權限。 手動設定客戶端、伺服器端使用者映射,參數:map_static=/etc/nfs.map/etc/nfs.map檔案映射內容如下:
# remote local
gid 500 1000
uid 500 2003


參考:關於nfs客戶連線使用者身分的描述,沒有驗證過下述的描述:

•客戶端連線時候,對一般使用者的檢查,no.1如果明確設定了普通用戶被壓縮的身份,那麼此時客戶端用戶的身份轉換為指定用戶,no.2如果nfs server上面有同名用戶,那麼此時客戶端登錄帳戶的身份轉換為nfs server上面的同名用戶,no.3如果沒有明確指定,也沒有同名用戶,那麼此時用戶身份被壓縮成nfsnobody

•客戶端連接的時候,對root的檢查,no.1如果設定no_root_squash,那麼此時root用戶的身分被壓縮為nfs server上面的root,no.2如果設定了all_squash、anonuid、anongid,此時root 身分被壓縮為指定用戶,no.3如果沒有明確指定,此時root使用者被壓縮為nfsnobody,no.4如果同時指定no_root_squash與all_squash 使用者將被壓縮為nfsnobody,如果設定了anonuid、anongid將被壓縮到指定的使用者與群組


3 ,防火牆設定修改

預設情況下,centos6伺服器版安裝完成後,防火牆iptables設定中只放開了22埠。

在nfs設定檔/etc/sysconfig/nfs中指定nfs服務相關端口,並修改防火牆放開對應埠

複製程式碼 程式碼如下:


#port rpc.mountd should listen on. 
#mountd_port=892 
 
##port rpc.statd should listen on. 
##statd_port=662 
 
#/usr/sbin/rpc.rquotad port rquotad should listen on. 
#rquotad_port=875 
 
#tcp port rpc.lockdwul listen listen list。
lockd_tcpport=32803 
 
#udp port rpc.lockd should listen on. 
#lockd_udpport=32769  

修改iptables/etc/sysconfig/iptables,放放開啟111(portmap服務埠),2049(nfs服務埠)

4,/etc/hosts.allow設定修改
/etc/hosts.allow,/etc/hosts .deny 描述哪些主機允許使用本地的inet服務。
預設這裡好像可以不需要修改,不過最好設定成只允許需要的客戶端機器連接,然後其他機器的連接都deny
#服務進程名:主機列表:當規則匹配時可選的指令操作
server_name:hosts-list[:command]
在/etc/hosts.allow中新增允許客戶端存取的規則
all:127.0.0.1         #允許本機存取機所有服務流程
all:192.168.0.135     #允許192.168.0.135客戶機器存取本機所有服務進程
smbd:192.168.0.0/255.255.255.0   #允許192.0.0/255.255.255.0  100.0/255.255.255.0        #允許192.168.100.網段的ip存取伺服器上的sshd進程
ss:60.28.160.244,            #允許外網的60.28.160.244存取此伺服器上的sshd進程
在/etc /hosts.deny中被禁制登陸的嘗試連線訊息也可以設定成記錄下來並發到使用者信箱
sshd:all    #禁止所有

5,修改共用出去的目錄權限為760 ,並修改目錄所有群組為nfsnobody
參考:問題7

#6,客戶端掛載:執行下面的指令就可以把nfs伺服器(ip位址為192.168.1.45)共享出來的/home掛裝到本地的/mnt/nfs/home目錄下。 showmount -e nfs-serverip: 查看nfs伺服器共享出來的資源
mount -t nfs 192.168.1.45:/home /mnt/nfs/home

7,nfs效能測試:

•根據指令time dd if=/dev/zero of=/mnt/home bs=16k count=16384 來設定合理的wsize,rsize值

•根據nfs客戶端數,在/etc/sysconfig/nfs設定檔中設定適當的nfs伺服器端行程數rpcnfsdcount,預設為8

exportfs指令:如果我們在啟動了nfs之後又修改了/etc/exports,是不是還要重新啟動nfs呢?這時候我們就可以用exportfs指令來使改動立刻生效,該指令格式如下:

exportfs [-aruv] -a :全部mount或unmount /etc/exports中的內容-r :重新mount /etc/exports中分享出來的目錄-u :umount 目錄-v :在export 的時候,將詳細的資訊輸出到螢幕上。
showmount指令:顯示nfs伺服器的掛載資訊。
showmount -e [nfs-server]:顯示指定的nfs server上export出來的目錄,不指定後面ip時查看的是本機作為nfs server時,對外共享的目錄。 。
rpcinfo -p指令:顯示rpc資訊  -p參數:用rpc協定來偵測主機host上使用的rpcbind,並顯示所有已註冊的rpc程式。
nfsstat指令:查看nfs的運作狀態,對於調整nfs的運作有很大幫助

過程中出現的問題解決:

1,透過yum或是rpm安裝完portmap後,發現執行指令service portmap start時報如下錯誤:portmap: unrecognized service。

centos6(linux kernel 2.6.32)中,portmap已經被rpcbind取代了,仔細查看安裝資訊就會發現,執行指令yum install portmap時安裝的就是rpcbind。安裝完成後也可以透過指令:yum whatprovides portmap來查看詳細資訊。

2, 客戶端掛載時,報錯誤mount clntudp_create: rpc: port mapper failure - rpc: unable to receive。

•1,透過指令rpcinfo -p來查看portmap服務時候正常啟動以及對應的埠(預設111)

•2,檢查/etc/sysconfig/iptables防火牆設置,允許tcp,udp的111埠訪問,然後service iptables restart
•3,檢查/etc/hosts.deny,/etc/hosts.allow看客戶端連線是否被阻止了

3, 客戶端執行指令showmount - e nfs-server時,報錯誤:mount clntudp_create: rpc: program not registered。

nfs、rpcbind服務沒有啟動,使用chkconfig把nfs、rpcbind加到系統服務中並用service來啟動
或在/etc/hosts.allow中加入允許客戶端存取的規則all:192.168.0.135

4, 客戶端執行指令showmount -e nfs-server時,報錯誤:rpc mount export: rpc: unable to receive; errno = no route to host
設定檔:/etc/sysconfig/nfs
找到nfs服務相關連接埠設定的地方,並移除註解後,在iptables防火牆設定中指定允許對應連接埠的udp,tcp流通過。
#mountd_port=892
#statd_port=662
#lockd_tcpport=32803
#lockd_udpport=32769
iptables -a input -p tcp --dport 662 -m state --state new - j accept
iptables -a input -p udp --dport 661 -m state --state new -j accept

5, showmount -e nfs-server成功,正式掛載時報錯:mount: mount to nfs server '192.168.1.5' failed: system error: no route to host.這是由於nfs服務的預設埠2049被防火牆阻塞了,上面類似修改iptables允許2049埠通過

#6, showmount -e nfs-server成功,正式掛載時報錯:mount: mount to nfs server '192.168.1.5' failed: timed out (retrying).
編輯/etc/sysconfig/iptables時,相關連接埠的tcp連接埠允許通過,而udp不允許。其他可能的原因參考:mount command fails with nfs server failed error.
disable name lookup requests from nfs server to a dns server. 
or  nfs version used by the nfs client is other than version 3.

##7,exports設定檔中目錄權限屬性設定為rw(預設為root_squash),但在客戶端mount目錄執行touch指令時報錯誤:touch: cannot touch `a': permission denied。解決:

•伺服器端共用目錄權限查看ll -d /home

•修改伺服器端共用目錄權限chown 760 /home(檔案擁有者root有全權限、檔案所有群組使用者有讀寫權限、其他使用者無權限,然後把目錄的群組設定為nfsnobody)
•修改伺服器端共用目錄權限群組擁有者為nfsnobody(cat /etc/passwd | grep nob)
•chgrp nfsnobody /home
•成功在客戶端建立新的檔案!

以上是linux下NFS安裝配置的方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Linux實際上有什麼好處? Linux實際上有什麼好處? Apr 12, 2025 am 12:20 AM

Linux適用於服務器、開發環境和嵌入式系統。 1.作為服務器操作系統,Linux穩定高效,常用於部署高並發應用。 2.作為開發環境,Linux提供高效的命令行工具和包管理系統,提升開發效率。 3.在嵌入式系統中,Linux輕量且可定制,適合資源有限的環境。

oracle如何查看實例名 oracle如何查看實例名 Apr 11, 2025 pm 08:18 PM

在 Oracle 中查看實例名的方法有三種:命令行中使用 "sqlplus" 和 "select instance_name from v$instance;" 命令。在 SQL*Plus 中使用 "show instance_name;" 命令。通過操作系統的任務管理器、Oracle Enterprise Manager 或檢查環境變量 (Linux 上的 ORACLE_SID)。

oracle數據庫卸載教程 oracle數據庫卸載教程 Apr 11, 2025 pm 06:24 PM

要卸載 Oracle 數據庫:停止 Oracle 服務,移除 Oracle 實例,刪除 Oracle 主目錄,清除註冊表項(僅限 Windows),刪除環境變量(僅限 Windows)。卸載前請備份數據。

將Docker與Linux一起使用:綜合指南 將Docker與Linux一起使用:綜合指南 Apr 12, 2025 am 12:07 AM

在Linux上使用Docker可以提高開發和部署效率。 1.安裝Docker:使用腳本在Ubuntu上安裝Docker。 2.驗證安裝:運行sudodockerrunhello-world。 3.基本用法:創建Nginx容器dockerrun--namemy-nginx-p8080:80-dnginx。 4.高級用法:創建自定義鏡像,使用Dockerfile構建並運行。 5.優化與最佳實踐:使用多階段構建和DockerCompose,遵循編寫Dockerfile的最佳實踐。

oracle安裝之後如何使用 oracle安裝之後如何使用 Apr 11, 2025 pm 07:51 PM

安裝 Oracle 後,可通過以下步驟使用:創建數據庫實例。連接到數據庫。創建用戶。創建表。插入數據。查詢數據。導出數據。導入數據。

apache80端口被佔用怎麼辦 apache80端口被佔用怎麼辦 Apr 13, 2025 pm 01:24 PM

當 Apache 80 端口被佔用時,解決方法如下:找出佔用該端口的進程並關閉它。檢查防火牆設置以確保 Apache 未被阻止。如果以上方法無效,請重新配置 Apache 使用不同的端口。重啟 Apache 服務。

apache怎麼啟動 apache怎麼啟動 Apr 13, 2025 pm 01:06 PM

啟動 Apache 的步驟如下:安裝 Apache(命令:sudo apt-get install apache2 或從官網下載)啟動 Apache(Linux:sudo systemctl start apache2;Windows:右鍵“Apache2.4”服務並選擇“啟動”)檢查是否已啟動(Linux:sudo systemctl status apache2;Windows:查看服務管理器中“Apache2.4”服務的狀態)啟用開機自動啟動(可選,Linux:sudo systemctl

如何在Debian上監控Nginx SSL性能 如何在Debian上監控Nginx SSL性能 Apr 12, 2025 pm 10:18 PM

本文介紹如何在Debian系統上有效監控Nginx服務器的SSL性能。我們將使用NginxExporter將Nginx狀態數據導出到Prometheus,再通過Grafana進行可視化展示。第一步:配置Nginx首先,我們需要在Nginx配置文件中啟用stub_status模塊來獲取Nginx的狀態信息。在你的Nginx配置文件(通常位於/etc/nginx/nginx.conf或其包含文件中)中添加以下代碼段:location/nginx_status{stub_status

See all articles