NFS:Network File System
傳統意義上,文件系統在內核中實現;
RPC:函數調用(遠程主機上的函數) Remote Procedure Call protocol
一部分功能由本地程序完成,另一部分功能由遠程主機上的函數完成
由於無法確認如 123爲字符還是數字,使用半結構數據,使用半結構數據定義。
半結構數據:
XML: eXtended Mark Language(重量級)
JSON (輕量級)
現在很多使用RESful的調用方式,藉助於http,跨越互聯網網發送。
NFS:由 Sun研發
NFSv1
NFSv2 ,基於udp
NFSv3
NFSv4現在主要使用
NFSv4.1 4.2
pNFS: parallel ,並行NFS
在NFSv4上有一個進程imapd,爲用戶映射爲NFSnobody。
NFS:基於IP的認證,監聽在 tcp/udp 2049端口
nfs的三個服務:nfsd 、 mountd 、 impad
mountd:當客戶端連接到服務器端時,首先由mountd進程進行認證,是否在允許訪問列表內;
nfsd:不文件負責存儲,用於理解用戶的rpc請求,並轉發給本地內核,存儲在本地;
impad:在NFSv4上有一個進程imapd,爲用戶映射爲NFSnobody,即在服務器端看到的用戶爲NFSnobody,在客戶端爲用戶名。
提供RPC的公共服務叫portmapper,監聽在port:111
rpcinfo : report RPF information
-p
rpcinfo -p 192.168.191.5 也可以查看其它主機的rpc相關信息
通常來說nfs-utils 已經安裝,若沒有安裝則需要安裝
啓動服務 service nfs start
/etc/exports爲主配置文件;更改配置文件後需要重啓nfs服務
例:/shared/nfs 172.16.249.139(rw) 172.16.0.1(ro)
查看NFS服務器端共享的文件系統:
showmount -e NFSserver_ip
掛載NFS文件系統:
mount -t nfs SERVER:/path/tosharedfs /path/to/mount_point
將nfs服務器端的/shared/nfs掛載至本地客戶端的/mnt目錄下,即可共享服務器端/shared/nfs目錄內的文件;
開機自動掛載:nfs 在/etc/fstab
SERVER:/PATH/TO/EXPORTED_FS /mount_point nfs defaults,_netdev(用於說明是網絡設備) 0 0
/etc/exports:
文件系統 客戶端(選項) 客戶端(選項)
客戶端: IP、FQDN或DOMAIN、NETWORK
exportfs:維護exports文件導出的文件系統表的專用工具:
export -ar :重新導出所有的文件系統
export -au : 關閉導出的所有文件系統
export -u FS :關閉指定的導出的文件系統
補充材料:
常用選項
有幾個常用的選項可以對 NFS 實現進行定製。這些選項包括:
secure: 這個選項是缺省選項,它使用了 1024 以下的TCP/IP 端口實現 NFS 的連接。指定insecure 可以禁用這個選項。
rw: 這個選項允許 NFS 客戶機進行讀/寫訪問。缺省選項是隻讀的。
async: 這個選項可以改進性能,但是如果沒有完全關閉 NFS 守護進程就重新啓動了 NFS 服務器,這也可能會造成數據丟失。
no_wdelay: 這個選項關閉寫延時。如果設置了 async,那麼 NFS 就會忽略這個選項。
nohide: 如果將一個目錄掛載到另外一個目錄之上,那麼原來的目錄通常就被隱藏起來或看起來像空的一樣。要禁用這種行爲,需啓用 hide 選項。
no_subtree_check: 這個選項關閉子樹檢查,子樹檢查會執行一些不想忽略的安全性檢查。缺省選項是啓用子樹檢查。
no_auth_nlm: 這個選項也可以作爲 insecure_locks 指定,它告訴 NFS 守護進程不要對加鎖請求進行認證。如果關心安全性問題,就要避免使用這個選項。缺省選項是 auth_nlm 或secure_locks。
mp (mountpoint=path): 通過顯式地聲明這個選項,NFS 要求掛載所導出的目錄。
fsid=num: 這個選項通常都在 NFS 故障恢復的情況中使用。如果希望實現 NFS 的故障恢復,請參考 NFS 文檔。
用戶映射
通過 NFS 中的用戶映射,可以將僞或實際用戶和組的標識賦給一個正在對 NFS 捲進行操作的用戶。這個 NFS 用戶具有映射所允許的用戶和組的許可權限。對 NFS 卷使用一個通用的用戶/組可以提供一定的安全性和靈活性,而不會帶來很多管理負荷。
在使用 NFS 掛載的文件系統上的文件時,用戶的訪問通常都會受到限制,這就是說用戶都是以匿名用戶的身份來對文件進行訪問的,這些用戶缺省情況下對這些文件只有只讀權限。這種行爲對於 root 用戶來說尤其重要。然而,實際上的確存在這種情況:希望用戶以 root 用戶或所定義的其他用戶的身份訪問遠程文件系統上的文件。NFS 允許指定訪問遠程文件的用戶——通過用戶標識號(UID)和組標識號(GID),可以禁用正常的 squash行爲。
用戶映射的選項包括:
root_squash: 這個選項不允許 root 用戶訪問掛載上來的 NFS 卷。
no_root_squash: 這個選項允許 root 用戶訪問掛載上來的 NFS 卷。
all_squash: 這個選項對於公共訪問的 NFS 捲來說非常有用,它會限制所有的 UID 和 GID,只使用匿名用戶。缺省設置no_all_squash。
anonuid和 anongid: 這兩個選項將匿名 UID 和 GID 修改成特定用戶和組帳號。
上面就是NFS的簡單應用介紹