NFS與PRC
NFS就是(Network File System的縮寫,最初是由sum這家公司所發展起來的。它最大的功能就是可能通過網絡,讓不同的機器、不同的作業系統可以共享彼此的檔案。NFS是通過網絡來傳輸資料的,那麼NFS使用哪個端口來進行資料傳輸呢?基本上NFS這個伺服器的端口開在2049,但是由于檔案系統非常複雜,NFS還有其它的程式去啟動額外的端口,是以預設NFS用來傳輸的端口是随機的,小于1024的端口,那麼使用者怎麼知道伺服器使用哪個端口呢?此時就需要遠端過程調用RPC(Remote Procedure Call)協定來輔助了。
RPC是主要的功能就是指定每一個NFS功能對就的端口号,并且通知給用戶端,讓用戶端可以連接配接到正确的端口上去。RPC是如何知道每一個NFS的端口呢?這是因為當伺服器可在啟動NFS時會随機選取數個端口,并主動向RPC進行注冊,是以RPC就知道每個端口對應的NFS功能。RPC就用固定端口111來監聽用戶端的需求并向用戶端響應正确的端口。
伺服器端所需的軟體:
RPC
rpcbind(在centos5.X之前這個軟體名稱為portmap,在centos6.x之後才稱為rpcbind)
NFS
nfs-utils
NFS主配置檔案/etc/exports
/etc/exports:
檔案系統 用戶端1(檔案系統導出屬性) 用戶端2(檔案系統導出屬性)
檔案系統
用戶端:
IP: 172.16.100.8
Hostname: 主機名
Network: 網絡位址
檔案系統導出屬性:
rw
async:異步
sync :同步
root_squash: 壓縮root使用者,基于imapd,将root通過網絡通路時轉換為nfsnobody使用者
no_root_squash: 不壓縮root使用者;
all_squash: 壓縮所有使用者;
anonuid, anongid: 指定匿名使用者映射為的UID和GID;
showmount
-e: 在nfs用戶端執行,探查某主機所導出的nfs檔案系統;使用格式“showmount -e Server_IP”;
-d: 在nfs伺服器端執行,顯示哪個導出的檔案系統已經被至少一個客戶挂載使用了;
-a: 在nfs伺服器端顯示所有的挂載會話;
exportfs:
-a: 操作所有檔案系統
-ra: 重新導出所有檔案系統
-ua: 取消導入的所有檔案系統
-v: 顯示詳細資訊
nfs的輔助程序mountd等監聽在固定端口上,可以通過在編輯/etc/sysconfig/nfs中的某參數來實作。
要想啟動成為NFS伺服器,直接啟動就行
root@db2 ~]# service nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: 磁盤配額檢查 [ OK ]
Starting NFS mountd: 等待用戶端挂載程序 [ OK ]
Starting NFS daemon: 服務端程序 [ OK ]
Starting RPC idmapd: ID号 映射 [ OK ]
檢視rpcinfo -p localhost
建立一個分區 10G 以後導出時最好導出整個分區
[root@db2 ~]# fdisk /dev/sda
Command (m for help): n
Selected partition 4
First cylinder (10471-15665, default 10471):
Using default value 10471
Last cylinder, +cylinders or +size{K,M,G} (10471-15665, default 15665): +10G
格式化分區
[root@db2 ~]# mke2fs -t ext4 /dev/sda4
建立目錄并把分區挂載至此目錄下
[root@db2 ~]# mkdir /nfsshared
[root@db2 ~]# vim /etc/fstab
/dev/sda4 /nfsshared ext4 defaults 0 0
root@db2 ~]# mount -a
[root@db2 ~]# mount
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
/dev/sda4 on /nfsshared type ext4 (rw,acl)
把目錄共享出去,并充許172.16網段的所有主機挂載
[root@db2 ~]# vim /etc/exports
/nfsshared 172.16.0.0/16(rw,no_root_squash)
用戶端檢視伺服器可挂載目錄則
[root@node4 ~]# showmount -e 172.16.24.7
Export list for 172.16.24.7:
/nfsshared 172.16.0.0/16
用戶端建立目錄并挂載
[root@node4 ~]# mkdir /mnt/nfs
[root@node4 ~]# mount -t nfs 172.16.24.7:/nfsshared /mnt/nfs
[root@node4 ~]# ls /mnt/nfs
lost+found
建立一個檔案驗證一下看看
[root@node4 nfs]# touch a.txt
[root@node4 nfs]# ls
a.txt lost+found
[root@db2 ~]# cd /nfsshared
[root@db2 nfsshared]# ls