nfs基本實現
NFS最早是由Sun公司發展出來的,
簡單的來說:它就是是可以透過網絡,讓不同的主機、不同的操作系統可以共享存儲。
以下是NFS最顯而易見的好處:
1. 節省本地存儲空間,將常用的數據存放在一臺NFS服務器上且可以通過網絡訪問,那麽本地終端將可以減少自身存儲空間的使用。
2. 用戶不需要在網絡中的每個機器上都建有Home目錄,Home目錄可以放在NFS服務器上且可以在網絡上被訪問使用。
3. 一些存儲設備CDROM和Zip(一種高儲存密度的磁盤驅動器與磁盤)等都可以在網絡上被別的機器使用。這可以減少整個網絡上可移動介質設備的數量。
NFS 的基本原則是“容許不同的客戶端及服務端通過一組RPC分享相同的文件系統”,它是獨立於操作系統,容許不同硬件及操作系統的系統共同進行文件的分享。
NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procedure Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網絡進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這麽理解RPC和NFS的關系:NFS是一個文件系統,而RPC是負責負責信息的傳輸。
nfs-utils: 這個是NFS服務主程序(包含rpc.nfsd、rpc.mountd、daemons)
rpcbind: 這個是CentOS6.X的RPC主程序(CentOS5.X的為portmap)
yum install -y nfs-utils rpcbind #安裝nfs服務端
systemctl start rpcbind
systemctl enable rpcbind #設置開機啟動
netstat -lntup |grep rpcbind #查詢rpcbind服務啟動狀態
rpcinfo -p localhost #查看NFS服務項rpc服務器註冊的端口
由於在FNS服務過程中,必須先啟動rpcbind,再啟動nfs,這樣才能讓NFS在rpcbind上註冊成功
systemctl start nfs
systemctl enable nfs #設置開機啟動
rpcinfo -p localhost #查看NFS服務項rpc服務器註冊的端口
為了規範化最好用rc.local來管理開機自啟動
[root@NFS-server ~]# ps -ef |egrep "rpc|nfs" #查看nfs相進程
rpcuser 1303 1 0 Nov22 ? 00:00:00 rpc.statd #檢查文件一致性
root 1512 2 0 Nov22 ? 00:00:00 [rpciod/0]
rpc 2723 1 0 02:43 ? 00:00:00 rpcbind
root 2896 1 0 02:56 ? 00:00:00 rpc.rquotad #磁盤配額進程
root 2901 1 0 02:56 ? 00:00:00 rpc.mountd #權限管理驗證等
root 2908 2 0 02:56 ? 00:00:00 [nfsd4]
root 2909 2 0 02:56 ? 00:00:00 [nfsd4_callbacks]
root 2910 2 0 02:56 ? 00:00:00 [nfsd]
root 2911 2 0 02:56 ? 00:00:00 [nfsd]
root 2912 2 0 02:56 ? 00:00:00 [nfsd]
root 2913 2 0 02:56 ? 00:00:00 [nfsd] #NFS主進程,管理登入,身份判定
root 2914 2 0 02:56 ? 00:00:00 [nfsd]
root 2915 2 0 02:56 ? 00:00:00 [nfsd]
root 2916 2 0 02:56 ? 00:00:00 [nfsd]
root 2917 2 0 02:56 ? 00:00:00 [nfsd]
root 2948 1 0 02:56 ? 00:00:00 rpc.idmapd #名稱映射
2.配置
vim /etc/sysconfig/nfs #可自定義mountd 和rquotad的端口
/etc/exports 是NFS程序的配置文件。並且默認為空
/etc/exports文件的配置格式為:
NFS共享目錄 NFS客戶端地址1(參數1,參數2,參數3......) 客戶端地址2(參數1,參數2,參數3......)
NFS共享目錄 NFS客戶端地址(參數1,參數2,參數3......)
配置文件(/etc/exports)
#開頭的行表示註釋
格式: share_dir client_host(permission1,permission2,...,permissionn)
參數:
(1)share_dir
共享目錄,必須是目錄,若為文件,則在掛載時會出錯.
若目錄名含有空格等字符,須用雙引號
(2)client_host
可以是單個主機(10.226.70.32),也可以是網絡段(10.226.70.0/24),支持通配符*和?
(3)permission
ro: 只讀(read-only)
rw:讀和寫(read-write)
root_squash:壓縮root用戶。當客戶端以root掛載時,則NFS服務器將root視為匿名用戶服務(nfsnobody)
no_root_squash:不壓縮root用戶。當客戶端以root掛載時,則NFS服務器仍將root視為root用戶,不×××全。
all_squash: 將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody)
anonuid=xxx: 將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx);
anongid=xxx: 將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,並指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);
sync:同步寫磁盤
async:異步寫磁盤。
(1)多個權限間用逗號隔開
例如:
/testnfs 10.226.70.0/24(rw,sync,no_root_squash)
將服務器的/testnfs目錄共享給10.226.70.0/24網段,屬於這個網段的主機有讀寫、同步寫磁盤和不壓縮root用戶的權限。
(2)修改/etc/exports後,要使修改後的文件生效,需使用exportfs命令或重新啟動nfs服務
exportfs -ra
mkdir /data
chown -R nfsnobody.nfsnobody /data #使用nfs默認賬戶
mount /dev/sdb /data
vim /etc/exports #添加配置文件
/data 10.100.0.0/16(rw,sync)
systemctl reload nfs
showmount -e 127.0.0.1 #查看本機掛載情況
3.配置NFS客戶端
客戶端也需要安裝rpcbind和nfs-utils軟件,並且設置開機自啟動。(只需要啟動rpcbind即可)
yum -y install rpcbind nfs-utils
systemctl start rpcbind
systemctl enable rpcbind #設置開機啟動
showmount -e 10.100.5.56 #檢測掛載
mount -t nfs 10.100.5.56:/data /mnt
即可看到掛載成功
4.設置開機自動掛載
vim /etc/fatab
10.100.5.56:/data /mnt nfs defaults 0 0
nfs基本實現