Linux NFS介紹
阿新 • • 發佈:2018-05-21
linux nfsNFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件一樣。
使用場景:個人建議nfs文件系統最好用搭建在內網,適合中小型網絡服務文件共享
1、安裝
[root@localhost ~]# yum -y install nfs-utils rpcbind [root@localhost ~]# rpm -ql nfs-utils /usr/lib/systemd/system/nfs.service /usr/lib/systemd/system/nfs-lock.service /usr/lib/systemd/system/nfs-mountd.service /usr/lib/systemd/system/rpc-statd.service ....
2、創建需要導出的目錄
[root@localhost /]# mkdir /nfsshared/node1 -pv
3、導出配置文件說明
/etc/exports或/etc/exports.d/* /PATH/TO/SOME_DIR clients1(export_options, ...) clients2(export_options, ...) clients: single host:ipv4, ipv6, FQDN; network:address/netmask, 支持長短格式的掩碼; wildcards:主機名通配,例如:*.zander.com; netgroups:NIS域內的主機組;@group_name; anonymous:使用*通配所有主機; General Options: ro:只讀 rw:讀寫; sync:同步; async:異步; secure:客戶端端口小於1024,否則就要使用insecure選項; User ID Mapping: root_squash:壓縮root用戶,一般指將其映射為nfsnobody; no_root_squash:不壓縮root用戶; all_squash:壓縮所有用戶; anonuid and anongid:將壓縮的用戶映射為此處指定的用戶;
3.1、配置文件
[root@localhost /]# vim /etc/exports
/nfsshared/node1 172.16.86.210/24(rw)
#mount端口應該固定防止占用其他端口
[root@sherry node1]# vim /etc/sysconfig/nfs
MOUNTD_PORT=892
4、啟動
[root@localhost /]# systemctl start nfs #nfs內部實現機制太復雜了 nfs-idmapd.service loaded active running NFSv4 ID-name mapping service id名字映射 nfs-mountd.service loaded active running NFS Mount Daemon 認證掛載 nfs-server.service loaded active exited NFS server and services 主服務 rpc-statd.service loaded active running NFS status monitor for NFSv2/3 locking. 狀態監控 rpcbind.service loaded active running RPC bind service nfs註冊到rpc服務
5、客戶端
[root@ns1 test]# yum install nfs-utils
[root@ns1 test]# showmount -e 172.16.86.210
Export list for 172.16.86.210:
/nfsshared/node1 172.16.86.210/24
#掛載
[root@ns1 test]# mount.nfs 172.16.86.210:/nfsshared/node1 /mnt/t4
[root@ns1 test]# mount|grep nfs
172.16.86.210:/nfsshared/node1 on /mnt/t4 type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.86.209,local_lock=none,addr=172.16.86.210)
客戶端掛載優化參數timeo增加,rsize wsize增大
6、寫入
#寫入時候文件都是看當前用戶的id,id解析成用戶名
壓縮理解
客戶端如果是root ID=0
服務器如果不壓縮,文件寫入id=0 服務器解釋id=0 為root,客戶端也是root
服務器如果壓縮,文件寫入id是服務器nfsnobody對應id 假如是100 客戶端反接100得到用戶名
普通用戶,
客戶端寫入時候是zander id=10000 ,顯示zander,服務器端顯示id=10000的用戶
#服務器
[root@localhost node1]# chmod o+w f1/
[root@localhost node1]# ls
f1
#客戶端在f1下面寫入
[root@ns1 f1]# touch a.txt
[root@ns1 f1]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 20 22:09 a.txt
6.1 最佳寫入方式
指定用戶
客戶端無論什麽身份運行,服務器都是按照指定的用戶存儲,客戶端反解服務器指定用id來顯示,前提是服務器指定的用戶要有對目錄操作權限
服務器
[root@localhost f1]# useradd marvin
[root@localhost f1]# id marvin
uid=1003(marvin) gid=1003(marvin) 組=1003(marvin)
[root@localhost f1]# vim /etc/exports
/nfsshared/node1 172.16.86.210/24(rw,anonuid=1003,anongid=1003)
#reload
[root@localhost f1]# exportfs -rav
exporting 172.16.86.210/24:/nfsshared/node1
#客戶端
[root@ns1 f1]# touch c.txt
[root@ns1 f1]# ls
c.txt
[root@ns1 f1]# ll
total 0
-rw-r--r-- 1 1003 1003 0 May 20 22:27 c.txt
Linux NFS介紹