NFS:Network File System 網絡文件系統,基於內核的文件系統。Sun公司開發,通過使用NFS,用戶
和程序可以像訪問本地文件一樣訪問遠端系統上的文件,基於RPC(Remote Procedure Call Protocol
遠程過程調用)實現
RPC採用C/S模式,客戶機請求程序調用進程發送一個有進程參數的調用信息到服務進程,然後等待應
答信息。在服務器端,進程保持睡眠狀態直到調用信息到達爲止。當一個調用信息到達,服務器獲得進
程參數,計算結果,發送答覆信息,然後等待下一個調用信息,最後,客戶端調用進程接收答覆信息,
獲得進程結果,然後調用執行繼續進行
NFS優勢:節省本地存儲空間,將常用的數據,如:/home目錄,存放在NFS服務器上且可以通過網絡訪
問,本地終端將可減少自身存儲空間的使用
端口:2049(nfsd), 其它端口由portmap(111)分配
說明:CentOS 6 開始portmap進程由rpcbind代替
NFS服務主要進程:
rpc.nfsd 最主要的NFS進程,管理客戶端是否可登錄
rpc.mountd 掛載和卸載NFS文件系統,包括權限管理
rpc.lockd 非必要,管理文件鎖,避免同時寫出錯
rpc.statd 非必要,檢查文件一致性,可修復文件
配置文件:/etc/exports
/etc/exports.d/*.exports
單個主機: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後爲默認)同步,數據在請求時立即寫入共享存儲磁盤
root_squash (默認)遠程root映射爲nfsnobody,UID爲65534,CentOS8 爲nobody,早期版本 是4294967294 (nfsnobody)
no_root_squash 遠程root映射成root用戶
all_squash 所有遠程用戶(包括root)都變成nfsnobody,CentOS8 爲nobody
no_all_squash (默認)保留共享文件的UID和GID
anonuid和anongid 指明匿名用戶映射爲特定用戶UID和組GID,而非nfsnobody,可配合all_squash使用
rpcinfo 工具可以查看RPC相關信息
rpcinfo –s hostname
rpcinfo -p hostname
[root@centos8 ~]#rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 36310 status
100024 1 tcp 45265 status
[root@centos8 ~]#rpcinfo -s
program version(s) netid(s) service owner
100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser
100024 1 tcp6,udp6,tcp,udp status
100021 4 tcp 36100 nlockmgr
exportfs:可用於管理NFS導出的文件系統
常見選項:
–v 查看本機所有NFS共享
–r 重讀配置文件,並共享目錄
–a 輸出本機所有共享
–au 停止本機所有共享
配置案列:2臺Centos7的主機,一臺服務器,一臺客戶端。
服務器配置:
1、關閉防火牆、selinux
2、安裝nfs-utils
[root@centos7 ~]#yum install nfs-utils
3、配置exportfs
[root@centos7 ~]#cat /etc/exports
/data/nfs1 192.168.39.101(rw)
4、創建對應的被掛載的文件
[root@centos7 ~]#mkdir /data/nfs1/
5、查看文件系統
[root@centos7 ~]#exportfs -v
/data/nfs1 192.168.39.101(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
5、啓動nfs-server
[root@centos7 ~]#systemctl restart nfs-server
客戶端配置:
1、關閉防火牆、selinux
2、安裝nfs-utils
[root@centos7 ~]#yum install nfs-utils
3、查看可掛載的磁盤
[root@centos7 ~]# showmount -e 192.168.39.10
Export list for 192.168.39.10:
/data/nfs1 192.168.39.101
4、掛載磁盤: /nfs文件夾必須存在
mount 192.168.39.10:/data/nfs1 /nfs
5、查看掛載後結果
[root@centos7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 730M 0 730M 0% /dev
tmpfs 746M 0 746M 0% /dev/shm
tmpfs 746M 10M 736M 2% /run
tmpfs 746M 0 746M 0% /sys/fs/cgroup
/dev/sda2 80G 4.0G 76G 5% /
/dev/sda3 47M 2.7M 45M 6% /data
/dev/sda1 1014M 168M 847M 17% /boot
tmpfs 150M 0 150M 0% /run/user/0
192.168.39.10:/data/nfs1 47M 2.8M 44M 6% /nfs
使用 mount 和umount 命令進行掛載和取消掛載,
注意以上只是臨時掛載,如果要開機自動掛載需要修改, vim /etc/fstb文件,另外_netdev,沒有網絡時,就不掛載,避免開啓啓動不起來,最好加上。
權限問題:
一、以上掛載後:只能對文件夾裏面進行讀操作:
[root@centos7 ~]# echo sss > /nfs/rootfile
-bash: /nfs/rootfile: Read-only file system
二、更改服務器上的配置文件,改爲rw,同時文件夾要設置成相應的權限,並重新啓動服務就可以了
[root@centos7 ~]# cat /etc/exports
/data/nfs1/ 192.168.39.10(rw)
[root@centos7 ~]#chmod 777 /data/nfs1
[root@centos7 ~]# systemctl restart nfs-server