天天看點

NFS與PRC

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

繼續閱讀