NFS概述
NFS(Network File System)網絡文件系統,主要用于Linux系統上實現文件共享的一種協議,其客戶端主要是Linux。
沒有用戶認證機制,且數據在網絡上傳送的時候是明文傳送,一般只能在局域網中使用支持多節點同時掛載及并發寫入
企業應用:為集群中的webserver提供后端存儲(做靜態資源服務器)
環境準備
編號 | IP地址 | 作用 |
---|---|---|
1 | 192.168.66.143 | Web服務器 |
2 | 192.168.66.138 | NFS服務器 |
NFS組成
rpcbind:負責NFS的數據傳輸,遠程過程調用tcp/udp協議端口 ==111==
nfs-utils:控制共享哪些文件,權限管理
RPC(Remote Procedure Call Protocol)是一種遠程過程調用協議。
?
它允許一個程序通過網絡從另一臺計算機上的程序請求服務,而無需了解底層的網絡技術細節。簡單來說,RPC使得不同計算機之間的程序可以像在同一臺計算機上一樣互相調用和通信。
安裝NFS軟件
yum install rpcbind nfs-utils -yrpm -q rpcbind
NFS的配置文件
NFS 的配置文件為/etc/exports(服務端進行配置)
格式為: 共享的目錄位置 客戶機地址(權限選項)
/test888 192.168.78.0/24(rw,sync,no_root_squash)
將/text888目錄共享給192.168.78.0網段的所有用戶
# vim /etc/exports共享目錄 共享選項
/share *(ro,sync)共享主機:
* 代表所有主機
192.168.0.0/24 代表共享給某個網段
192.168.0.0/24(rw) 192.168.1.0/24(ro) 代表共享給不同網段
192.168.0.254 共享給某個IP
*.zking.com 代表共享給某個域下的所有主機共享選項:
ro: 只讀
rw: 讀寫
sync: 實時同步,直接寫入磁盤
async: 異步,先緩存在內存再同步磁盤
anonuid: 設置訪問nfs服務的用戶的uid,uid需要在/etc/passwd中存在
anongid: 設置訪問nfs服務的用戶的gid
root_squash: 默認選項 root用戶創建的文件的屬主和屬組都變成nobody,其他人nfs-server端是它自己, client端是nobody。
no_root_squash: root用戶創建的文件屬主和屬組還是root, 其他人server端是它自己uid, client端是nobody。
all_squash: 不管是root還是其他普通用戶創建的文件的屬主和屬組都是nobody
?anonuid和anongid參數和all_squash一起使用。 all_squash表示不管是root還是其他普通用戶從客戶端所創建的文件在服務器端的擁有者和所屬組都是nfsnobody;服務端為了對文件做相應管理,可以設置anonuid和anongid進而指定文件的擁有者和所屬組。
NFS任務解決方案
創建一個共享目錄,如/share
# mkdir /share
編寫NFS主配置文件
# vim /etc/exports共享目錄 共享選項
/share 192.168.66.1/24(rw,sync)
啟動相關的NFS服務
手動加載NFS共享服務時,應該先啟動rpcbind,再啟動nfs
systemctl start rpcbind
systemctl start nfssystemctl enable rpcbind
systemctl enable nfs# ss -naltp | grep 111 # 111端口
?查看本機發布的 NFS 共享目錄
exportfs -rvexporting 192.168.66.1/24:/share
showmount -eExport list for localhost.localdomain:
/share 192.168.66.1/24
在客戶機中訪問 NFS 共享資源
安裝 nfs-utils、rpcbind 軟件包
rpm -q rpcbind nfs-utils
yum -y install nfs-utils rpcbindsystemctl start rpcbind
systemctl enable rpcbind
查看 NFS 服務器端共享了哪些目錄
showmount -e 192.168.66.138Export list for 192.168.66.138:
/share 192.168.66.1/24
mkdir /nfsdata
mount 192.168.66.138:/share /nfsdata
df -Th文件系統 類型 容量 已用 可用 已用% 掛載點
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs tmpfs 1.9G 13M 1.9G 1% /run
tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 17G 4.8G 13G 28% /
/dev/sda1 xfs 1014M 187M 828M 19% /boot
tmpfs tmpfs 378M 60K 378M 1% /run/user/0
/dev/sr0 iso9660 9.6G 9.6G 0 100% /run/media/root/CentOS 7 x86_64
192.168.66.138:/share nfs4 17G 4.8G 13G 28% /nfsdata
搭建Web服務器
# yum install httpd -y
# systemctl start httpd
當Apache軟件啟動完畢后,會自動占用計算機的80端口。
80端口指向web服務器的目錄 => /var/www/html
所以項目源代碼都可以直接存放于 /var/www/html 目錄
記得關閉防火墻與SELinux
在Web服務器中掛載NFS
# mkdir /var/www/html/mediamount 192.168.66.138:/share /var/www/html/media
或
mount -t nfs 192.168.66.138:/share /var/www/html/media
或
mount.nfs 192.168.66.138:/share /var/www/html/media
上傳到NFS服務器的/share
第一步:使用MX上傳素材到/share目錄(NFS服務器)
第二步:在Web服務器中,ll /var/www/html/media目錄
第三步:通過瀏覽器訪問該文件
設置自動掛載
vim /etc/fstab192.168.66.138:/share /var/www/html/media nfs defaults,_netdev 0 0
強制卸載 NFS
如果服務器端NFS服務突然間停掉了,而客戶端正在掛載使用時,在客戶端就會出現執行 df -h 命令卡死的現象。
這個時候直接使用 umount 命令是無法直接卸載的,需要加上 -lf 選項才能卸載。
umount -lf /var/www/html/media