centos配置NFS服務和autofs自動掛載服務
NFS:Network File System
網絡文件系統,基於內核的文件系統。Sun公司開發,通過使用NFS,用戶和程序可以像訪問本地文件一樣訪問遠端系統上的文件,基於RPC(Remote Procedure Call Protocol遠程過程調用)實現。
RPC采用C/S模式。客戶機請求程序調用進程發送一個有進程參數的調用信息到服務進程,然後等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答復信息,然後等待下一個調用信息,最後,客戶端調用進程接收答復信息,獲得進程結果,然後調用執行繼續進行。
NFS優勢:節省本地存儲空間,將常用的數據如:home目錄,存放在一臺NFS服務器上且可以通過網絡訪問,那麽本地終端將可以減少自身存儲空間的使用。
軟件包:nfs-utils
端口:2049(nfsd), 其它端口由portmap(111)分配
配置文件:/etc/exports或/etc/exports.d/*.exports
CentOS7不支持同一目錄同時用nfs和samba共享,因為使用鎖機制不同
相關軟件包 :rpcbind(必須),tcp_wrappers
CentOS6開始portmap進程由rpcbind代替
NFS服務主要進程:
rpc.nfsd 最主要的NFS進程,管理客戶端是否可登錄
rpc.mountd 掛載和卸載NFS文件系統,包括權限管理
rpc.lockd 非必要,管理文件鎖,避免同時寫出錯
rpc.statd 非必要,檢查文件一致性,可修復文件
日誌:/var/lib/nfs/
centos 7.3配置nfs服務
2臺c73
nfs服務器配置IP-.71
1.安裝nfs服務和創建共享目錄 yum install nfs-utils mkdir /app/nfsshare echo 123 > abc chmod 666 -R /app/nfsshare 2.編輯nfs配置文件 vi /etc/exports /app/nfsshare *(insecure,rw,async,no_root_squash) 3.啟動服務 systemctl status rpcbind.service systemctl start nfs-server systemctl start nfs-utils centos6.9需要先啟動rpcbind服務 service rpcbind start service rpcbind status service nfs start 4.加載配置和查看共享目錄 exportfs -r exportfs -v exportfs 5.查看端口是否開啟 rpcinfo -p ss -tunlap | tr -s ‘ ‘ 確認111和2049端口已開啟監聽
配置nfs為固定端口並配置防火墻開放nfs服務端口,防火墻除開放下面的端口,還需開放TCP和UDP的111和2049端口。
vi /etc/sysconfig/nfs
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020
在nfs配置文件/etc/exports中支持的主機格式
/myshare server.example.com /myshare *.example.com 泛域名 /myshare server?.example.com /myshare server[0-20].example.com /myshare 172.25.11.10 IP地址 /myshare 172.25.0.0/16 網段 /myshare *(rw) 172.16.0.123(ro) 也可以添加多個 /myshare 2000:472:18:b51:c32:a21 /myshare 2000:472:18:b51::/64 /myshare *.example.com 172.25.0.0/16 /myshare desktop.example.com(ro) /myshare desktop.example.com(ro) server[0-20].example.com(rw) /myshare diskless.example.com(rw,no_root_squash)
默認選項:(ro,sync,root_squash)
相關選項:
ro,rw 只讀和讀寫
async 異步,數據變化後不立即寫磁盤,性能高
sync 及時同步,數據在請求時立即寫入
no_all_squash 保留共享文件的 UID 和 GID
all_squash 所有遠程用戶(包括root)都變成nfsnobody
root_squash 遠程root映射為nfsnobody,UID為65534
no_root_squash 遠程root映射成root用戶
anonuid 和anongid 匿名用戶映射為特定用戶和組,而非nfsnobody,可配合all_squash使用
rpcinfo -p hostname
rpcinfo –s hostname 查看RPC註冊程序
exportfs
–v 查看本機所有NFS共享
–r 重讀配置文件並共享目錄
–a 輸出本機所有共享
–au 停止本機所有共享
nfs客戶端配置IP-.72
1.安裝nfs服務並啟動 yum -y install nfs-utils systemctl start nfs-utils systemctl status nfs-utils centos6.9需要先啟動rpcbind服務 service rpcbind start service rpcbind status service nfs start 2.查看遠程主機可用的共享目錄並掛載 showmount -e 192.168.10.71 mkdir /mnt/nfs mount 192.168.10.71:/tmp/nfsshare /mnt/nfs 3.測試寫文件 cd /mnt/nfs touch f1 echo abc >> abc 4.開機自動掛載 vi /etc/fstab 192.168.10.71:/tmp/nfsshare /mnt/nfs nfs defaults 0 0 mount -a 掛載為nfs3版本 umount /mnt/nfs mount 192.168.10.71:/tmp/nfsshare /mnt/nfs -o vers=3
配置自動掛載autofs
可使用autofs工具按需要掛載NFS共享,在空閑時自動卸載,同/misc/cd目錄掛載
yum -y install autofs
systemctl start autofs
systemctl enable autofs
systemctl is-enabled autofs
cd /net
ls 192.168.10.71/tmp/nfsshare 註意掛載成功後會自動生成以IP地址命名的目錄
註意:自動掛載點建議為非系統默認目錄,如/misc,否則autofs自動掛載會自動覆蓋源目錄下的所有文件,相當於二次掛載,可能會影響原有的文件系統
方式一:默認,相對路徑
more /etc/auto.master
/misc /etc/auto.misc
more /etc/auto.misc 這裏的文件名必須和master定義的文件名一致
cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
方式二:推薦,絕對路徑
more /etc/auto.master
/- /etc/auto.dir
more /etc/auto.dir
/misc/cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
另外還支持含通配符的目錄名
more /etc/auto.misc
* server:/export/&
基於安全考慮,建議使用nosuid,nodev,noexec 掛載選項
NFS 相關的掛載選項:
fg (默認)前臺掛載,bg後臺掛載
hard (默認)持續請求,soft非持續請求
intr 和 hard 配合,請求可中斷
rsize 和 wsize 讀和寫 block 大小,rsize=32768
_netdev 無網絡不掛載
示例:
mount nfsserver:/public /nfspublic
mount -o rw,nosuid,fg,hard,intr
172.16.0.1:/testdir /mnt/nfs/
CentOS7默認SELinux的布爾值
nfs_export_all_ro和nfs_export_all_rw都啟用,這允許NFS服務可以讀寫任意文件,基於安全考慮可關閉
對於只讀的 NFS 目錄 SELinux 安全上下文件應設為public_content_t或nfs_t
對於讀寫的 NFS 目錄 SELinux 安全上下文件應設為public_content_rw_t或nfs_t context,並且布爾值nfsd_anon_write Boolean必須啟用,以允許寫操作
本文出自 “rackie” 博客,請務必保留此出處http://rackie386.blog.51cto.com/11279229/1955865
centos配置NFS服務和autofs自動掛載服務