NFS(Network File System/網(wǎng)絡(luò)文件系統(tǒng))
NFS允許網(wǎng)絡(luò)中的計(jì)算機(jī)之間通過TCP/IP網(wǎng)絡(luò)共享資源。
在NFS的應(yīng)用中,本地NFS的客戶端應(yīng)用可以透明地讀寫位于遠(yuǎn)端NFS服務(wù)器上的文件,就像訪問本地文件一樣。
優(yōu)點(diǎn):
1、簡單容易掌握
2、方便快速部署簡單維護(hù)容易
3、可靠—從軟件層面上看,數(shù)據(jù)可靠性高,經(jīng)久耐用
組成:
NFS體系由NFS服務(wù)器和若干臺(tái)客戶機(jī)組成。
工作原理:
NFS服務(wù)器通過網(wǎng)絡(luò)共享目錄,客戶機(jī)將網(wǎng)絡(luò)目錄掛載在本地,通過TCP/IP網(wǎng)絡(luò)遠(yuǎn)程訪問存放在NFS服務(wù)器上的數(shù)據(jù)。
NFS就是網(wǎng)絡(luò)共享目錄,就是共享文件.服務(wù)端共享,客戶端掛載使用。
通訊過程:
1.服務(wù)端啟動(dòng)RPC服務(wù),開啟111端口。
(遠(yuǎn)程過程調(diào)用協(xié)議,是一種通過網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。)
2.啟動(dòng)NFS服務(wù),向RPC注冊(cè)端口信息。
3.客戶端啟動(dòng)RPC(portmap服務(wù)),向服務(wù)端的RPC(portmap)服務(wù)請(qǐng)求服務(wù)點(diǎn)的NFS端口
(portmap端口映射是一個(gè)服務(wù)器,將RPC程序號(hào)轉(zhuǎn)換為DARPA的協(xié)議端口號(hào),在使用RPC調(diào)用時(shí)它必須運(yùn)行。)
4.服務(wù)端的RPC(portmap)服務(wù)反饋NFS端口信息給客戶端。
5.客戶端通過獲取的NFS端口來建立和服務(wù)端的NFS連接并進(jìn)行數(shù)據(jù)的傳輸。
NFS權(quán)限設(shè)置:
rw 表示可讀寫
ro Read-only表示只能讀權(quán)限
Sync 請(qǐng)求或者寫入數(shù)據(jù)時(shí),數(shù)據(jù)同步寫入到NFS server的硬盤中后才會(huì)返回
no_root_squas 訪問nfs server共享目錄的用戶如果是root的話,它對(duì)該目錄具有root權(quán)限。這個(gè)配置原本為無盤用戶準(zhǔn)備的。用戶應(yīng)避免使用!
root_squash 對(duì)于訪問NFS server共享目錄的用戶,如果是root的話會(huì)被壓縮成為nobody用戶身份。
all_squash 不管訪問nfs server共享目錄的用戶身份如何包括root,它的權(quán)限都將被壓縮成為匿名用戶,同時(shí)他們的udi和gid都會(huì)變成nobody或nfsnobody賬戶的uid,gid。在多個(gè)nfs客戶端同時(shí)讀寫nfs server數(shù)據(jù)時(shí),這個(gè)參數(shù)很有用***可以確保大家寫入的數(shù)據(jù)的權(quán)限是一樣的。
但不同系統(tǒng)有可能匿名用戶的uid,gid不同。因?yàn)榇颂幬覀冃枰?wù)端和客戶端之間的用戶是一樣的。比如說:服務(wù)端指定匿名用戶的UID為2000,那么客戶端也一定要存在2000這個(gè)賬號(hào)才可以
anonuid 就是匿名的uid和gid。說明客戶端以什么權(quán)限來訪問服務(wù)端,在默認(rèn)情況下是nfsnobody。Uid65534.
anongid 同anongid,就是把uid換成gid而已。
配置實(shí)踐:
NFS服務(wù)端: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(應(yīng)該出現(xiàn)上述修改過的端口)
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