NFS(Network File System/網絡文件系統(tǒng))
NFS允許網絡中的計算機之間通過TCP/IP網絡共享資源娱仔。
在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位于遠端NFS服務器上的文件掏秩,就像訪問本地文件一樣。
優(yōu)點:
1救拉、簡單容易掌握
2档插、方便快速部署簡單維護容易
3、可靠—從軟件層面上看搏明,數據可靠性高鼠锈,經久耐用
組成:
NFS體系由NFS服務器和若干臺客戶機組成。
工作原理:
NFS服務器通過網絡共享目錄星著,客戶機將網絡目錄掛載在本地购笆,通過TCP/IP網絡遠程訪問存放在NFS服務器上的數據。
NFS就是網絡共享目錄虚循,就是共享文件.服務端共享同欠,客戶端掛載使用。
通訊過程:
1.服務端啟動RPC服務邮丰,開啟111端口行您。
(遠程過程調用協議,是一種通過網絡從遠程計算機程序上請求服務剪廉,而不需要了解底層網絡技術的協議。)
2.啟動NFS服務炕檩,向RPC注冊端口信息斗蒋。
3.客戶端啟動RPC(portmap服務),向服務端的RPC(portmap)服務請求服務點的NFS端口
(portmap端口映射是一個服務器笛质,將RPC程序號轉換為DARPA的協議端口號泉沾,在使用RPC調用時它必須運行。)
4.服務端的RPC(portmap)服務反饋NFS端口信息給客戶端妇押。
5.客戶端通過獲取的NFS端口來建立和服務端的NFS連接并進行數據的傳輸跷究。
NFS權限設置:
rw 表示可讀寫
ro Read-only表示只能讀權限
Sync 請求或者寫入數據時,數據同步寫入到NFS server的硬盤中后才會返回
no_root_squas 訪問nfs server共享目錄的用戶如果是root的話敲霍,它對該目錄具有root權限俊马。這個配置原本為無盤用戶準備的。用戶應避免使用肩杈!
root_squash 對于訪問NFS server共享目錄的用戶柴我,如果是root的話會被壓縮成為nobody用戶身份。
all_squash 不管訪問nfs server共享目錄的用戶身份如何包括root扩然,它的權限都將被壓縮成為匿名用戶艘儒,同時他們的udi和gid都會變成nobody或nfsnobody賬戶的uid,gid。在多個nfs客戶端同時讀寫nfs server數據時界睁,這個參數很有用***可以確保大家寫入的數據的權限是一樣的觉增。
但不同系統(tǒng)有可能匿名用戶的uid,gid不同翻斟。因為此處我們需要服務端和客戶端之間的用戶是一樣的逾礁。比如說:服務端指定匿名用戶的UID為2000,那么客戶端也一定要存在2000這個賬號才可以
anonuid 就是匿名的uid和gid杨赤。說明客戶端以什么權限來訪問服務端融欧,在默認情況下是nfsnobody。Uid65534.
anongid 同anongid兢仰,就是把uid換成gid而已曼氛。
配置實踐:
NFS服務端:192.168.81.54
NFS客戶端1:192.168.81.11
NFS客戶端2:192.168.81.12
yum -y install portmap nfs-utils nfs-utils-lib
service portmap start
service nfs start
vi /etc/exports
? mnt/data/mysql 192.168.81.0/24(rw,sync,no_root_squash)
vi /etc/sysconfig/nfs
? RQUOTAD_PORT=875
? LOCKD_TCPPORT=32803
? LOCKD_UDPPORT=32769
? MOUNTD_PORT=892
service nfs restart
rpcinfo -p localhost(應該出現上述修改過的端口)
vi /etc/sysconfig/iptables
? # Firewall configuration written by system-config-firewall
? # Manual customization of this file is not recommended.
? *filter
? :INPUT ACCEPT [0:0]
? :FORWARD ACCEPT [0:0]
? :OUTPUT ACCEPT [0:0]
? :RH-Firewall-1-INPUT - [0:0]
? -A INPUT -j RH-Firewall-1-INPUT
? -A FORWARD -j RH-Firewall-1-INPUT
? -A RH-Firewall-1-INPUT -i lo -j ACCEPT
? -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
? -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
? -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
? -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
? -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
? -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
? -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
? -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
? -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
? COMMIT
iptables -I INPUT -s 192.168.81.0/24 -p tcp --dport 875 -j ACCEPT
iptables -I INPUT -s 192.168.81.0/24 -p udp --dport 875 -j ACCEPT
iptables -I INPUT -s 192.168.81.0/24 -p tcp --dport 892 -j ACCEPT
iptables -I INPUT -s 192.168.81.0/24 -p udp --dport 892 -j ACCEPT
iptables -I INPUT -s 192.168.81.0/24 -p tcp --dport 32769 -j ACCEPT
iptables -I INPUT -s 192.168.81.0/24 -p udp --dport 32769 -j ACCEPT
iptables -I INPUT -s 192.168.81.0/24 -p tcp --dport 32803 -j ACCEPT
iptables -I INPUT -s 192.168.81.0/24 -p udp --dport 32803 -j ACCEPT
iptables -L
iptables-save > /etc/sysconfig/iptables
showmount? -e 192.168.81.54
Export list for 192.168.81.54:
/mnt/data/mysql 192.168.81.0/24
mount -t nfs 192.168.81.54:/mnt/data/mysql /var/lib/mysql
df
? Filesystem? ? ? ? ? ? ? ? ? ? 1K-blocks? ? Used Available Use% Mounted on
? /dev/mapper/VolGroup-lv_root? 18134344 4493724? 12719432? 27% /
? tmpfs? ? ? ? ? ? ? ? ? ? ? ? ? ? 502204? ? ? 0? ? 502204? 0% /dev/shm
? /dev/sda1? ? ? ? ? ? ? ? ? ? ? ? 495844? 34836? ? 435408? 8% /boot
? /dev/sr0? ? ? ? ? ? ? ? ? ? ? ? 4363088 4363088? ? ? ? 0 100% /media
? 192.168.81.54:/mnt/data/mysql? 18134400 4466176? 12747136? 26% /var/lib/mysql
客戶端:
yum -y install portmap
showmount? -e 192.168.81.54
mount -t nfs 192.168.81.54:/mnt/data/mysql /var/lib/mysql
df