一、NFS簡介
NFS是Network File System的縮寫,是一種分布式文件系統協議,用于在計算機網絡上共享文件。它允許客戶端計算機通過網絡遠程訪問和處理遠程服務器上的文件和目錄。
NFS最初由Sun Microsystems開發并在1984年發布,被設計為可在不同操作系統和硬件平臺之間共享文件。它基于客戶-服務器模型,客戶端通過網絡連接到NFS服務器,并使用NFS協議訪問遠程文件系統。
使用NFS,客戶端可以像訪問本地文件一樣訪問遠程文件。這使得多個計算機之間可以方便地共享文件,并實現文件的統一管理。
NFS協議支持多種操作,包括讀取、寫入、創建、刪除和修改文件和目錄。它還提供了文件和目錄的權限管理機制,以確保只有具有適當權限的用戶才能訪問和修改文件。
NFS是一個成熟、廣泛應用的文件共享協議,被用于各種操作系統和應用場景,例如Unix和Linux系統中的文件共享、云存儲服務和虛擬化環境中的文件傳輸等。
二、NFS配置
2.1 實驗拓撲
如下圖,兩臺Linux主機通過e0網卡接入到同一網絡,Net1已配置NAT服務,兩臺主機之間互通且可以訪問Internet,e1網卡接入到Mgmt網絡,方便遠程管理
2.2 實驗規劃
主機-角色 | 主機名 | 操作系統 |
Rocky-Server | nfs-server | Rocky Linux 8.9 (Green Obsidian) |
Rocky-Client | nfs-client | Rocky Linux 8.9 (Green Obsidian) |
2.3 配置服務端
安裝NFS軟件包:
[root@nfs-server ~]# yum -y install nfs-utils # 安裝nfs-utils軟件包 [root@nfs-server ~]# [root@nfs-server ~]# rpm -qa | grep nfs # 查看nfs軟件包 libnfsidmap-2.3.3-59.el8.x86_64 nfs-utils-2.3.3-59.el8.x86_64 sssd-nfs-idmap-2.9.1-4.el8_9.x86_64 [root@nfs-server ~]# [root@nfs-server ~]# rpm -qc nfs-utils # 查看nfs-utils軟件包的配置文件 /etc/gssproxy/24-nfs-server.conf /etc/modprobe.d/lockd.conf /etc/nfs.conf /etc/nfsmount.conf /etc/request-key.d/id_resolver.conf /var/lib/nfs/etab /var/lib/nfs/rmtab
在NFS服務器上建立用于NFS文件共享的目錄,并設置足夠的權限確保其他人也有寫入權限:
[root@nfs-server ~]# mkdir /nfsfile # 創建目錄 [root@nfs-server ~]# [root@nfs-server ~]# chmod 777 /nfsfile # 賦予權限 [root@nfs-server ~]# [root@nfs-server ~]# ls -ld /nfsfile # 查看目錄權限 drwxrwxrwx. 2 root root 6 Dec 25 22:40 /nfsfile [root@nfs-server ~]# [root@nfs-server ~]# echo 'This is a nfs shared folder.' > /nfsfile/README # 寫入一個文本文件
NFS服務程序的配置文件為/etc/exports,默認情況下里面沒有任何內容,我們可以通過“rpm -qf”命令查看一下該配置文件是由哪個軟件包安裝提供的:
[root@nfs-server ~]# ls -l /etc/exports -rw-r--r--. 1 root root 0 Sep 10 2018 /etc/exports [root@nfs-server ~]# [root@nfs-server ~]# rpm -qf /etc/exports setup-2.12.2-9.el8.noarch # 查看到“/etc/exports”文件由這個軟件包提供 [root@nfs-server ~]# [root@nfs-server ~]# rpm -qi setup # 查看“setup”軟件包信息 Name : setup Version : 2.12.2 Release : 9.el8 Architecture: noarch Install Date: Thu 14 Dec 2023 01:10:40 PM CST Group : System Environment/Base Size : 724747 License : Public Domain Signature : RSA/SHA256, Thu 12 Jan 2023 10:49:46 AM CST, Key ID 15af5dac6d745a60 Source RPM : setup-2.12.2-9.el8.src.rpm Build Date : Wed 30 Nov 2022 01:24:15 PM CST Build Host : ord1-prod-a64build002.svc.aws.rockylinux.org Relocations : (not relocatable) Packager : infrastructure@rockylinux.org Vendor : Rocky URL : https://pagure.io/setup/ Summary : A set of system configuration and setup files Description : The setup package contains a set of important system configuration and setup files, such as passwd, group, and profile.
我們可以按照“共享目錄的路徑 允許訪問的NFS客戶端(共享權限參數)”的格式,定義要共享的目錄與相應的權限。
例如,如果想要把/nfsfile目錄共享給172.16.0.0/24網段內的所有主機,讓這些主機都擁有讀寫權限,在將數據寫入到NFS服務器的硬盤中后才會結束操作,最大限度保證數據不丟失,以及把來訪客戶端root管理員映射為本地的匿名用戶等,則可以按照下面命令中的格式,將下表中的參數寫到NFS服務程序的配置文件中
用于配置NFS服務程序配置文件的參數
參數 | 作用 |
ro | 只讀 |
rw | 讀寫 |
root_squash | 當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶 |
no_root_squash | 當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員 |
all_squash | 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務器的匿名用戶 |
sync | 同時將數據寫入到內存與硬盤中,保證不丟失數據 |
async | 優先將數據保存到內存,然后再寫入硬盤;這樣效率更高,但可能會丟失數據 |
編輯"/etc/exports”配置文件,注意:NFS客戶端地址與權限之間沒有空格
[root@nfs-server ~]# vim /etc/exports /nfsfile 172.16.0.*(rw,sync,root_squash)
在NFS服務的配置文件中巧用通配符能夠實現很多便捷功能,就比如匹配IP地址就有三種方法——第一種是直接寫*號,代表任何主機都可以訪問;第二種則是實驗中采用的192.168.10.*通配格式,代表來自192.168.10.0/24網段的主機;第三種則是直接寫對方的IP地址,如192.168.10.20,代表僅允許某個主機進行訪問
啟動和啟用NFS服務程序。由于在使用NFS服務進行文件共享之前,需要使用RPC(Remote Procedure Call,遠程過程調用)服務將NFS服務器的IP地址和端口號等信息發送給客戶端。因此,在啟動NFS服務之前,還需要順帶重啟并啟用rpcbind服務程序,并將這兩個服務一并加入開機啟動項中
[root@nfs-server ~]# systemctl restart rpcbind.service [root@nfs-server ~]# systemctl enable rpcbind.service [root@nfs-server ~]# systemctl enable --now nfs-server.service Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
防火墻放行NFS共享相關的服務:
[root@nfs-server ~]# firewall-cmd --add-service=nfs --permanent success [root@nfs-server ~]# firewall-cmd --add-service=rpc-bind --permanent success [root@nfs-server ~]# firewall-cmd --add-service=mountd --permanent success [root@nfs-server ~]# firewall-cmd --reload success
2.4 配置客戶端
先使用showmount命令查詢NFS服務器的遠程共享信息,必要的參數下表,其輸出格式為“共享的目錄名稱 允許使用客戶端地址”
showmount命令中可用的參數以及作用
參數 | 作用 |
-e | 顯示NFS服務器的共享列表 |
-a | 顯示本機掛載的文件資源的情況NFS資源的情況 |
-v | 顯示版本號 |
[root@nfs-client ~]# yum provides showmount # 查找showmount命令是由哪個軟件包提供的 Last metadata expiration check: 0:45:12 ago on Mon 25 Dec 2023 10:25:00 PM CST. nfs-utils-1:2.3.3-59.el8.x86_64 : NFS utilities and supporting clients and daemons for the kernel NFS server Repo : baseos Matched from: Provide : showmount = 1:2.3.3-59.el8 [root@nfs-client ~]# yum -y install nfs-utils # 安裝nfs-utils軟件包 [root@nfs-client ~]# showmount -e 172.16.0.100 # 顯示nfs服務器的共享列表 Export list for 172.16.0.100: /nfsfile 172.16.0.*
在NFS客戶端創建一個掛載目錄。使用mount命令并結合-t參數,指定要掛載的文件系統的類型,并在命令后面寫上服務器的IP地址、服務器上的共享目錄以及要掛載到本地系統(即客戶端)的目錄
[root@nfs-client ~]# mkdir /nfsfile [root@nfs-client ~]# mount -t nfs 172.16.0.100:/nfsfile /nfsfile [root@nfs-client ~]# df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 3.9G 0 3.9G 0% /dev tmpfs tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs tmpfs 3.9G 8.5M 3.9G 1% /run tmpfs tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/mapper/rl-root xfs 37G 2.2G 35G 6% / /dev/mapper/rl-home xfs 19G 162M 18G 1% /home /dev/vda1 xfs 1014M 172M 843M 17% /boot tmpfs tmpfs 794M 0 794M 0% /run/user/0 172.16.0.100:/nfsfile nfs4 37G 2.2G 35G 6% /nfsfile
掛載成功后就應該能夠順利地看到在執行前面的操作時寫入的文件內容了。如果希望NFS文件共享服務能一直有效,則需要將其寫入到fstab文件中:
[root@nfs-client ~]# cat /nfsfile/README This is a nfs shared folder. [root@nfs-client ~]# [root@nfs-client ~]# vim /etc/fstab # # /etc/fstab # Created by anaconda on Thu Dec 14 0552 2023 # # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. # /dev/mapper/rl-root / xfs defaults 0 0 UUID=e629f80e-7773-478a-90bb-2071e248cf79 /boot xfs defaults 0 0 /dev/mapper/rl-home /home xfs defaults 0 0 /dev/mapper/rl-swap none swap defaults 0 0 172.16.0.100:/nfsfile /nfsfile nfs defaults 0 0 # 添加這一行 [root@nfs-client ~]# [root@nfs-client ~]# mount -a
鏈接:https://blog.51cto.com/min2000/8973419
審核編輯:劉清
-
計算機
+關注
關注
19文章
7494瀏覽量
87954 -
Linux系統
+關注
關注
4文章
593瀏覽量
27397 -
RPC
+關注
關注
0文章
111瀏覽量
11536 -
NFS
+關注
關注
1文章
53瀏覽量
26109
原文標題:一文精通Linux配置NFS文件共享
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論