一、NFS簡介
NFS是Network File System的縮寫,是一種分布式文件系統(tǒng)協(xié)議,用于在計算機網(wǎng)絡(luò)上共享文件。它允許客戶端計算機通過網(wǎng)絡(luò)遠程訪問和處理遠程服務(wù)器上的文件和目錄。
NFS最初由Sun Microsystems開發(fā)并在1984年發(fā)布,被設(shè)計為可在不同操作系統(tǒng)和硬件平臺之間共享文件。它基于客戶-服務(wù)器模型,客戶端通過網(wǎng)絡(luò)連接到NFS服務(wù)器,并使用NFS協(xié)議訪問遠程文件系統(tǒng)。
使用NFS,客戶端可以像訪問本地文件一樣訪問遠程文件。這使得多個計算機之間可以方便地共享文件,并實現(xiàn)文件的統(tǒng)一管理。
NFS協(xié)議支持多種操作,包括讀取、寫入、創(chuàng)建、刪除和修改文件和目錄。它還提供了文件和目錄的權(quán)限管理機制,以確保只有具有適當權(quán)限的用戶才能訪問和修改文件。
NFS是一個成熟、廣泛應(yīng)用的文件共享協(xié)議,被用于各種操作系統(tǒng)和應(yīng)用場景,例如Unix和Linux系統(tǒng)中的文件共享、云存儲服務(wù)和虛擬化環(huán)境中的文件傳輸?shù)取?/p>
二、NFS配置
2.1 實驗拓撲
如下圖,兩臺Linux主機通過e0網(wǎng)卡接入到同一網(wǎng)絡(luò),Net1已配置NAT服務(wù),兩臺主機之間互通且可以訪問Internet,e1網(wǎng)卡接入到Mgmt網(wǎng)絡(luò),方便遠程管理
2.2 實驗規(guī)劃
主機-角色 | 主機名 | 操作系統(tǒng) |
Rocky-Server | nfs-server | Rocky Linux 8.9 (Green Obsidian) |
Rocky-Client | nfs-client | Rocky Linux 8.9 (Green Obsidian) |
2.3 配置服務(wù)端
安裝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服務(wù)器上建立用于NFS文件共享的目錄,并設(shè)置足夠的權(quán)限確保其他人也有寫入權(quán)限:
[root@nfs-server ~]# mkdir /nfsfile # 創(chuàng)建目錄 [root@nfs-server ~]# [root@nfs-server ~]# chmod 777 /nfsfile # 賦予權(quán)限 [root@nfs-server ~]# [root@nfs-server ~]# ls -ld /nfsfile # 查看目錄權(quán)限 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服務(wù)程序的配置文件為/etc/exports,默認情況下里面沒有任何內(nèi)容,我們可以通過“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客戶端(共享權(quán)限參數(shù))”的格式,定義要共享的目錄與相應(yīng)的權(quán)限。
例如,如果想要把/nfsfile目錄共享給172.16.0.0/24網(wǎng)段內(nèi)的所有主機,讓這些主機都擁有讀寫權(quán)限,在將數(shù)據(jù)寫入到NFS服務(wù)器的硬盤中后才會結(jié)束操作,最大限度保證數(shù)據(jù)不丟失,以及把來訪客戶端root管理員映射為本地的匿名用戶等,則可以按照下面命令中的格式,將下表中的參數(shù)寫到NFS服務(wù)程序的配置文件中
用于配置NFS服務(wù)程序配置文件的參數(shù)
參數(shù) | 作用 |
ro | 只讀 |
rw | 讀寫 |
root_squash | 當NFS客戶端以root管理員訪問時,映射為NFS服務(wù)器的匿名用戶 |
no_root_squash | 當NFS客戶端以root管理員訪問時,映射為NFS服務(wù)器的root管理員 |
all_squash | 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務(wù)器的匿名用戶 |
sync | 同時將數(shù)據(jù)寫入到內(nèi)存與硬盤中,保證不丟失數(shù)據(jù) |
async | 優(yōu)先將數(shù)據(jù)保存到內(nèi)存,然后再寫入硬盤;這樣效率更高,但可能會丟失數(shù)據(jù) |
編輯"/etc/exports”配置文件,注意:NFS客戶端地址與權(quán)限之間沒有空格
[root@nfs-server ~]# vim /etc/exports /nfsfile 172.16.0.*(rw,sync,root_squash)
在NFS服務(wù)的配置文件中巧用通配符能夠?qū)崿F(xiàn)很多便捷功能,就比如匹配IP地址就有三種方法——第一種是直接寫*號,代表任何主機都可以訪問;第二種則是實驗中采用的192.168.10.*通配格式,代表來自192.168.10.0/24網(wǎng)段的主機;第三種則是直接寫對方的IP地址,如192.168.10.20,代表僅允許某個主機進行訪問
啟動和啟用NFS服務(wù)程序。由于在使用NFS服務(wù)進行文件共享之前,需要使用RPC(Remote Procedure Call,遠程過程調(diào)用)服務(wù)將NFS服務(wù)器的IP地址和端口號等信息發(fā)送給客戶端。因此,在啟動NFS服務(wù)之前,還需要順帶重啟并啟用rpcbind服務(wù)程序,并將這兩個服務(wù)一并加入開機啟動項中
[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共享相關(guān)的服務(wù):
[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服務(wù)器的遠程共享信息,必要的參數(shù)下表,其輸出格式為“共享的目錄名稱 允許使用客戶端地址”
showmount命令中可用的參數(shù)以及作用
參數(shù) | 作用 |
-e | 顯示NFS服務(wù)器的共享列表 |
-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服務(wù)器的共享列表 Export list for 172.16.0.100: /nfsfile 172.16.0.*
在NFS客戶端創(chuàng)建一個掛載目錄。使用mount命令并結(jié)合-t參數(shù),指定要掛載的文件系統(tǒng)的類型,并在命令后面寫上服務(wù)器的IP地址、服務(wù)器上的共享目錄以及要掛載到本地系統(tǒng)(即客戶端)的目錄
[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
掛載成功后就應(yīng)該能夠順利地看到在執(zhí)行前面的操作時寫入的文件內(nèi)容了。如果希望NFS文件共享服務(wù)能一直有效,則需要將其寫入到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
審核編輯:劉清
-
計算機
+關(guān)注
關(guān)注
19文章
7369瀏覽量
87633 -
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
590瀏覽量
27318 -
RPC
+關(guān)注
關(guān)注
0文章
111瀏覽量
11493 -
NFS
+關(guān)注
關(guān)注
1文章
52瀏覽量
26078
原文標題:一文精通Linux配置NFS文件共享
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論