NFS服務:
NFS:Network File System 網絡文件系統,基于內核的文件系統。
Sun公司開發,通過使用NFS,用戶和程序可以像訪 問本地文件一樣訪問遠端系統上的文件,基于RPC(Remote Procedure Call Protocol遠程過程調用)實現 。
RPC采用C/S模式??蛻魴C請求程序調用進程發送一個有進程參數的調用信息到服務進程,然后等待應答信息。在服務器端 ,進程保持睡眠狀態直到調用信息到達為止。當一個調用信息到達,服務器獲得進程參數,計算結果,發送答復信息,然后等待下一個調用信息,最后,客戶端調用進程接收答復信息, 獲得進程結果,然后調用執行繼續進行 。
NFS優勢:節省本地存儲空間,將常用的數據如:home目錄, 存放在一臺NFS服務器上且可以通過網絡訪問,那么本地終端 將可以減少自身存儲空間的使用。
NFS服務介紹
軟件包:nfs-utils
Kernel支持:nfs.ko
查看NFS服務的模塊文件:
端口: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/
#rpcinfo -p 查看NFS服務的端口;
centos6 ,NFS服務的啟動依賴于rpcbind;centos7上由systemd控制,
NFS依賴的服務rpcbind.server,rpcbind.socket,會按序激活。
當rpcbind.server停止時,rpcbind.socket還處于監聽狀態。說明centos7,服務和端口號是分離的,服務可以睡眠,但端口號還在干活。當服務被用戶訪問時,再自行激活。
配置防火墻
配置防火墻,開放NFS服務
配置NFS使用固定端口
vim /etc/sysconfig/nfs
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
STATD_OUTGOING_PORT=2020
防火墻除開放上述端口,還需開放TCP和UDP的111和2049 共4個端口
NFS配置文件
導出的文件系統的格式:
/dir 主機1(opt1,opt2) 主機2(opt1,opt2)…
#開始為注釋
主機格式:
單個主機:ipv4,ipv6,FQDN
IP networks:兩種掩碼格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards:主機名通配,例如*.magedu.com,IP不可以
netgroups:NIS域的主機組,@group_name
anonymous:表示使用*通配所有客戶端
每個條目指定目錄導出到的哪些主機,及相關的權限和選項
默認選項:(ro,sync,root_squash,no_all_squash)
ro,rw 只讀和讀寫
async 異步,數據變化后不立即寫磁盤,性能高
sync(1.0.0后為默認)同步,數據在請求時立即寫入共享
no_all_squash (默認)保留共享文件的UID和GID
all_squash 所有遠程用戶(包括root)都變成nfsnobody
root_squash (默認)遠程root映射為nfsnobody,UID為 65534,
早期版本是4294967294 (nfsnobody)
no_root_squash 遠程root映射成root用戶
anonuid和anongid 指明匿名用戶映射為特定用戶UID和組 GID, 而 非nfsnobody,可配合all_squash使用。
實驗:簡單搭建NFS服務,進行客戶端的掛載:
1、在NFS服務器上
yum -y install nfs-ntils
system start nfs-server
要確保rpcbind.server,rpcbind.socket是啟動狀態
#exportfs -v 重新加載配置文件
#exportfs -r 查看
復制文件,好進行測試查看:
cp /etc/fstab /app/nfsdir/dir1/nfs1.txt
cp /etc/fstab /app/nfsdir/dir1/nfs2.tx
2 、在客戶端centos6上,showmount 客戶端查看工具
創建文件夾,并進行掛載:
mkdir /mnt/nfs{1,2}
mount 192.168.164.29:/app/nfsdir/dir1 /mnt/nfs1
showmount -d 192.168.164.29 只列出被客戶端已掛載的目錄
由于服務器端,加載配置文件時是ro,所以在客戶端
cd /mnt/nfs1 ; touch xxxx
上述只能臨時掛載;永久掛載設置:
vim/etc/fstab
自動掛載
可使用autofs按需要掛載NFS共享,在空閑時自動卸載。
由autofs包提供
系統管理器指定由 /etc/auto.master 自動掛載器守護進程控 制的掛載點
自動掛載監視器訪問這些目錄并按要求掛載文件系統
文件系統在失活的指定間隔5分鐘后會自動卸載
為所有導出到網絡中的NFS啟用特殊匹配 -host 至 “browse”
參看幫助:man 5 autofs
支持含通配符的目錄名
* server:/export/&
直接匹配包括絕對路徑名稱
不會影響本地目錄結構
示例:
/dev/cdrom /mount/cdrom
相對路徑:
/etc/auto.master:
dirname /etc/auto.direct
/mount
/etc/auto.direct: 子配置文件
basename
cdrom -fstype=iso9660(文件系統類型,可以不寫) :/dev/cdrom
絕對路徑:
/etc/auto.master:
/etc/auto.direct
/- /etc/子配置文件
/etc/auto.direct: 子配置文件
完整路徑 :/dev/cdrom
實驗:實現NFS服務,把NFS服務器上的多用戶家目錄共享給客戶端,并實現自動掛載。
1、在NFS服務器上 創建用戶,指定家目錄,UID號
useradd -u 6000 -d /app/homedir/user1 -s /sbin/nologin user1
useradd -u 6001 -d /app/homedir/user2 -s /sbin/nologin user2
vim /etc/exports
/app/homedir/ 192.168.164.129(rw)
systemctl start nfs-server
2、在centos6客戶端上
showmount -e 192.168.164.29 客戶端查看
useradd -u 6000 user1
useradd -u 6001 user2 (用戶名可以不一樣,UID必須一致)
配置自動掛載配置文件
vim /etc/auto.master
#vim /etc/nfsauto 子配置文件
/home/user1 -fstype=nfs,vers=3 192.168.164.29:/app/homedir/user1
/home/user2 -fstype=nfs,vers=3 192.168.164.29:/app/homedir/user2
#service autofs restart
實驗:實現NFS偽根 ,centos7上vers=4支持偽根。
1、在NFS服務器上:192.168.164.29
#mkdir /app/{read,write}
#vim /etc/exports
/app *(fsid=0,rw,crossmnt)
/app/read *(ro)
/app/write *(rw)
#exportfs -r
2、在192.168.164.129客戶端上:
mkdir /mnt/nfsdir
mount 192.168.164.29:/ /mnt/nfsdir
vim /etc/fstab
192.168.164.29:/ /mnt/nfsdir nfs4,rw 0 0
NFS相關SELinux設置
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 必須啟用,以允許寫操作.
幫助參考nfsd_selinux(8)( selinux-policy-devel 包) nfs(5), mount(8), mount.nfs(8), exportfs(8), exports( 5), nfsd_selinux(8)
原創文章,作者:shenjialong,如若轉載,請注明出處:http://www.www58058.com/84741