NFS:Network File System 網絡文件系統,基於內核的文件系統。經過使用NFS,用戶和程序能夠像訪問本地文件同樣訪問遠端系統上的文件,基於RPC(Remote Procedure Call Protocol遠程過程調用)實現。RPC採用C/S模式。客戶機請求程序調用進程發送一個有進程參數的調用信息到服務進程,而後等待應答信息。在服務器端,進程保持睡眠狀態直到調用信息到達爲止。當一個調用信息到達,服務器得到進程參數,計算結果,發送答覆信息,而後等待下一個調用信息,最後,客戶端調用進程接收答覆信息,得到進程結果,而後調用執行繼續進,通常應用於企業內網而不是互聯網。 另外,NFS的安全性基於IP認證,很容易假裝可性的IP來訪問NFS,因此整體的安全性不高。
rpm -q nfs-utils /usr/lib/systemd/scripts/nfs-utils_env.sh /usr/lib/systemd/system-generators/nfs-server-generator /usr/lib/systemd/system-generators/rpc-pipefs-generator /usr/lib/systemd/system/auth-rpcgss-module.service /usr/lib/systemd/system/nfs-blkmap.service /usr/lib/systemd/system/nfs-client.target /usr/lib/systemd/system/nfs-config.service /usr/lib/systemd/system/nfs-idmap.service /usr/lib/systemd/system/nfs-idmapd.service /usr/lib/systemd/system/nfs-lock.service /usr/lib/systemd/system/nfs-mountd.service /usr/lib/systemd/system/nfs-secure.service /usr/lib/systemd/system/nfs-server.service /usr/lib/systemd/system/nfs-utils.service /usr/lib/systemd/system/nfs.service /usr/lib/systemd/system/nfslock.service /usr/lib/systemd/system/proc-fs-nfsd.mount /usr/lib/systemd/system/rpc-gssd.service /usr/lib/systemd/system/rpc-statd-notify.service /usr/lib/systemd/system/rpc-statd.service /usr/lib/systemd/system/rpc_pipefs.target /usr/lib/systemd/system/rpcgssd.service /usr/lib/systemd/system/rpcidmapd.service /usr/lib/systemd/system/var-lib-nfs-rpc_pipefs.mount locate nfs.ko 1. 相對複雜的服務,如上述的列表,依賴衆多的服務 2. 對外提供的端口不固定,用rpcinfo -p查看 3. 經過rpcbind來管理NFS的臨時端口,rpcbind使用固定的端口111 4. Centos7啓動systemctl start nfs-server CentOS6:service nfs start,另外,在CentOS6,啓動nfs以前,必須確保rpcbind啓動。
/etc/exports主配置文件 rpm -qf /etc/exports setup-2.8.71-9.el7.noarch(exports並不來自nfs-utils安裝包,而是來自更基礎的setup安裝包) /etc/exportd.d/*.exports 子配置文件 systemctl enable nfs-server systemctl start nfs-server format:共享文件夾 who(permission) exportfs -r (重讀配置文件) exportfs -v (查詢已共享的資源) 格式: /dir 主機1(opt1,opt2) 主機2(opt1,opt2)... 主機格式: 1. 單個主機:ipv4,ipv6,FQDN 2. IP networks:兩種掩碼格式均支持 172.18.0.0/255.255.0.0 or 172.18.0.0/16 3. wildcards:主機名通配,例如*.magedu.com,IP不能夠,須要配合DNS解析 4. anonymous:表示使用*通配全部客戶端 每一個條目指定目錄導出到的哪些主機,及相關的權限和選項: 1. 默認選項:(ro,sync,root_squash,no_all_squash) 2. ro,rw 只讀和讀寫 3. async 異步,數據變化後不當即寫磁盤,性能高 4. sync(1.0.0後爲默認)同步,數據在請求時當即寫入共享 5. no_all_squash (默認)保留共享文件的UID和GID 6. all_squash 全部遠程用戶(包括root)都變成nfsnobody 7. root_squash (默認)遠程root映射爲nfsnobody,UID爲65534,早期版本是4294967294 (nfsnobody) 8. no_root_squash 遠程root映射成root用戶,若是和all_squash一塊兒配置,all_squash起使用 9. anonuid和anongid 指明匿名用戶映射爲特定用戶UID和組GID,而非nfsnobody,可配合all_squash使用
是內核的功能,全部客戶端不須要安裝第三方的RPM,能夠用showmount -e IP(NFS server) [root@web1 ~]# showmount -e 172.20.42.201 Export list for 172.20.42.201: /data/wordpress 172.20.0.0/16 mkdir /mnt/nfs mount 172.20.42.201:/data/wordpress /mnt/nfs mount(檢查狀態) 172.20.42.201:/data/wordpress on /mnt/nfs 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.20.42.203,local_lock=none,addr=172.20.42.201) 能夠指定掛載的版本: mount -o vers=3 172.20.42.201:/data/wordpress /mnt/nfs 注意: nfs客戶端訪問服務器端時: root映射爲nfsnobody用戶(root_squash),普通用戶映射爲id相同的用戶(no_all_squash) NFS相關的掛載選項: fg(默認)前臺掛載,bg後臺掛載 hard(默認)持續請求,soft 非持續請求 intr 和hard配合,請求可中斷 rsize和wsize 一次讀和寫數據最大字節數,rsize=32768 _netdev 無網絡不掛載 例子:mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/ 實驗: 服務器端,保持/data/nfs 755,在客戶端的/mnt/nfs下root用戶沒法建立文件;setfacl -m u:nfsnobody:rwx /data/liang/在服務器端,在客戶端用root能夠在/mnt/nfs下建立文件 能夠配置 /data/liang *(rw,no_root_squash),應用於管理員管理多臺NFS服務器。
mkdir -p /app/nfsdir1 mkdir -p /data/nfsdir2 把如上的兩個文件夾用僞根共享 mkdir -p /nfsroot/{dir1,dir2} chown nfsnobody /nfsroot/{dir1,dir2} vim /etc/fstab /data/nfsdir2 /nfsroot/dir2 none bind 0 0 /app/nfsdir1 /nfsroot/dir1 none bind 0 0 vim /etc/exports /nfsroot *(fsid=0,rw,crossmnt) /nfsroot/dir1 *(ro) /nfsroot/dir2 *(rw)
mount 172.20.42.201:/nfsroot /mnt [root@web1 mnt]# ll /mnt/ total 0 drwxr-xr-x 2 root root 21 Jun 26 04:57 dir1 drwxr-xr-x 2 root root 22 Jun 26 04:57 dir2 cd dir1 echo hello > hello.txt
rpm -ql autofs
掛載點分爲兩部分:/dir/subdir分爲/dir和/subdir兩部分 auto.master配置文件定義父目錄的規則: /dir autofs子配置文件路徑 autofs子配置文件: /subdir mountdev
auto.master配置文件只定義以下: /- 子配置文件 autofs子配置文件 /dir/subdir mountdev
mkdir /data/nfsdir vim /etc/exports /data/nfsdir *(rw)
showmount -e 172.20.42.201 cd /net/ cd 172.20.42.201 vim /etc/auto.master /d1/d2/d3 /etc/test.autofs vim /etc/test.autofs nfs -fstype=nfs,vers=3,rw 172.20.42.201:/data/nfsdir systemctl restart autofs cd /d1/d2/d3/nfs (注意,/d1/d2/d3不須要手動建立,訪問即生成)
1. 三臺server:一臺NFS,兩臺普通服務器,同時兩臺普通服務器上有相同的用戶nfsuser1, nfsuser2 2. NFS服務器 useradd -d /data/nfs2 -u 2101 nfs2 useradd -d /data/nfs1 -u 2100 nfs1 vim /etc/exports /data *(rw) exportfs -v 3. 兩臺普通服務器執行相同的操做 useradd -u 2100 nfsuser1 useradd -u 2101 nfsuser2 mount 172.20.42.201:/data/nfs1 /home/nfsuser1/ mount 172.20.42.201:/data/nfs2 /home/nfsuser2/ su - nfsuser1 touch nfs1 在NFS服務器上查看,ll /data/nfs1 nfs1 自動掛載: vim /etc/auto.master /home /etc/test.autofs (/home下的文件夾所有交給autofs來控制) vim /etc/test.autofs nfsuser1 -fstype=nfs,vers=3,rw 172.20.42.201:/data/nfs1 nfsuser2 -fstype=nfs,vers=3,rw 172.20.42.201:/data/nfs2 systemctl restart autofs 總結:上述方法會致使別的普通用戶登陸失敗,以下: ``` [root@centos7 ~]# su - vmx Last login: Tue May 22 16:51:34 CST 2018 from ::ffff:192.168.30.145 on pts/5 su: warning: cannot change directory to /home/vmx: No such file or directory 解決的方法用絕對路徑法。
1. NFS服務器保持上述的配置 2. 普通服務器上 vim /etc/auto.master /- /etc/test.autofs vim /etc/test.autofs /home/nfsuser1 -fstype=nfs,vers=3,rw 172.20.42.201:/data/nfs1 /home/nfsuser2 -fstype=nfs,vers=3,rw 172.20.42.201:/data/nfs2
1. NFS服務器上 useradd -d /data/nfsuser3 -u 2102 nfs3 useradd -d /data/nfsuser4 -u 2103 nfs4 useradd -d /data/nfs** -u 210* nfs** 2. 普通服務器上 useradd -u 2102 nfsuser3 useradd -u 2103 nfsuser4 vim /etc/test.autofs * -fstype=nfs,vers=3,rw 172.20.42.201:/data/&
/etc/auto.master: /misc /etc/auto.misc /etc/auto.misc: cd -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
/etc/auto.master: /net -hosts
總結:在三種網絡共享VSFTP,NFS, SAMBA中,NFS和SAMBA屬於文件系統級別, 能夠經過掛載的方法實現服務器和客戶機之間的網絡資源共享,VSFTP是應用層的,須要安裝相關的服務器和客戶端軟件實現。node