一、NFS 簡介
NFS,英文全稱 Network File System,主要功能:通過網(wǎng)絡(luò),讓不同的機(jī)器、不同的操作系統(tǒng)可以共享文件。類似windows的共享文件夾
? NFS服務(wù)器共享本機(jī)目錄,客戶端機(jī)器掛載該目錄后,就可以像自己本機(jī)的目錄一樣使用,相當(dāng)便利;操作遠(yuǎn)程目錄就像操作本地目錄;
官網(wǎng):https://nfs.sourceforge.net/
文檔:https://nfs.sourceforge.net/nfs-howto/index.html
使用場景:NFS適用于在中小型項(xiàng)目中,作為文件服務(wù)器使用;在大型項(xiàng)目中,建議使用真正的分布式存儲,如:Ceph; NFS還是有單節(jié)點(diǎn)問題;替換FTP服務(wù)器還是沒問題的;比上不足比下有余
二、NFS服務(wù)器搭建(CentOS)
假設(shè)有如下三臺服務(wù)器
192.168.1.100 :作為NFS服務(wù)端
192.168.1.101 :作為NFS客戶端1
192.168.1.102 :作為NFS客戶端2
1. 服務(wù)端搭建(192.168.1.100 服務(wù)器)
1.1. 安裝 nfs,rpc 服務(wù)
yum install -y rpcbind
yum install -y nfs-utils
1.2. 創(chuàng)建共享目錄
- test1共享目錄
#目錄根據(jù)自身情況自行選擇,這里僅做演示
mkdir /home/nfs/disk-test1
chmod 777 /home/nfs/disk-test1
777含義:1-可執(zhí)行權(quán)限、2-可寫權(quán)限、4-可讀權(quán)限;7=4+2+1,表示所有權(quán)限;
第一個7代表當(dāng)前用戶權(quán)限,第二個代表同組用戶權(quán)限,第三個代表其他用戶權(quán)限;
權(quán)限可以根據(jù)實(shí)際情況設(shè)置
- test2共享目錄
mkdir /home/nfs/disk-test2
chmod 777 /home/nfs/disk-test2
1.3. 修改nfs配置文件
#如果沒有,則自行創(chuàng)建即可
vim /etc/exports
在文件中添加
#也可用192.168.1.* ,用于訪問控制,只有在該IP段的機(jī)器才可以訪問,* 不做ip控制
#ip地址與(之間不能有空格,否則會出現(xiàn)只讀異常
/home/nfs/disk-test1 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)
/home/nfs/disk-test2 *(rw,sync,no_subtree_check,no_root_squash)
參數(shù) | 作用 |
---|---|
ro | 只讀(read only) |
rw | 讀寫(read write) |
root_squash | 當(dāng)NFS客戶端以root管理員訪問時(shí),映射為NFS服務(wù)器的匿名用戶(nobody) |
no_root_squash | 當(dāng)NFS客戶端以root管理員訪問時(shí),映射為NFS服務(wù)器的root管理員 |
all_squash | 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務(wù)器的匿名用戶 |
sync | NFS先寫入緩存(內(nèi)存),再同步到穩(wěn)定存儲(硬盤),sync表示寫入硬盤成功后,才告訴客戶端寫入成功,保證不丟失數(shù)據(jù),效率偏低 |
async | 寫入緩存后就通知客戶端寫入成功,不關(guān)心硬盤是否成功;這樣效率更高,但可能會丟失數(shù)據(jù) |
secure | NFS客戶端必須使用NFS保留端口(通常是1024以下的端口),默認(rèn)選項(xiàng) |
insecure | 允許NFS客戶端不使用NFS保留端口(通常是1024以上的端口) |
anonuid | 指定匿名用戶的uid,默認(rèn)指向nobody |
anongid | 指定匿名用戶的gid, 即組id,默認(rèn)指向nobody組 |
客戶機(jī)和NFS服務(wù)器之間人員映射規(guī)則:linux系統(tǒng)有嚴(yán)格的人員權(quán)限控制,那么客戶機(jī)用什么角色訪問NFS服務(wù)器呢?這就有一套映射規(guī)則
- root用戶的映射由配置決定(root_squash);
- 非root用戶,先映射為有相同UID的,如果沒有,則映射為匿名用戶nobody,即:兩臺機(jī)器上,UID相同的互為映射,不同的映射為nobody;
1.4. 開啟服務(wù)
- 啟動服務(wù)
#啟動rpc服務(wù)
systemctl start rpcbind
#啟動nfs服務(wù)
systemctl start nfs-server # nfs服務(wù)名稱和版本相關(guān),有的版本是 nfs
查看是否成功運(yùn)行
showmount -e
#執(zhí)行結(jié)果如下代表成功
Export list for localhost:
/home/nfs/disk-test1 192.168.1.0/24
/home/nfs/disk-test2 *
- 開機(jī)啟動
systemctl enable rpcbind
systemctl enable nfs-server
- 關(guān)閉防火墻
#由于nfs使用端口不固定,因此需要關(guān)閉防火墻,如果防火墻未開啟,可忽略此步
systemctl stop firewalld #關(guān)閉防火墻
systemctl disable firewalld #關(guān)閉開機(jī)啟動
systemctl status firewalld #查看防火墻狀態(tài)
啟動服務(wù)后,如果再次修改了/etc/exports,可重啟服務(wù)
systemctl restart nfs-server
或者執(zhí)行exportfs -rv
,使配置生效
2. 客戶端掛載
客戶端安裝
yum install -y nfs-utils
客戶端查看連通性并創(chuàng)建本地用于掛載的目錄
showmount -e 192.168.1.100
#執(zhí)行結(jié)果
Export list for 192.168.1.100:
/home/nfs/disk-test1 192.168.1.0/24
/home/nfs/disk-test2 *
創(chuàng)建本地目錄用于掛載(建議使用相同目錄結(jié)構(gòu),這里只是演示)
mkdir /nfs1
2.1 使用mount命令掛載
#掛載
mount -t nfs 192.168.1.100:/home/nfs/disk-test1 /nfs1
#卸載
umount /nfs1
但這種方式有個問題,重啟后會失效,需要重新執(zhí)行掛載命令,在生產(chǎn)環(huán)境,不建議使用該方式;
2.2 fstab掛載(推薦)
vim /etc/fstab
#在該文件中掛載,使系統(tǒng)每次啟動時(shí)都能自動掛載
#在文件中添加掛載內(nèi)容
192.168.1.100:/home/nfs/disk-test1 /nfs1 nfs defaults 0 0
#保存退出 各列含義可自行百度,網(wǎng)上都有介紹
mount -a #使文件/etc/fstab生效
3. 檢查
- 在客戶端查看掛載情況
df -Th
- 向客戶端掛載目錄存入文件,到服務(wù)端查看情況
三、固定端口部署(非必須)
在一些復(fù)雜場景下,有時(shí)是不能關(guān)閉防火墻的,這就需要把nfs部署為固定端口,并添加防火墻規(guī)則
場景舉例:
- nfs服務(wù)器上部署有docker容器,docker的網(wǎng)絡(luò)映射依賴防火墻,如果不開啟防火墻,容器會啟動失?。?/li>
- 在做等保測評時(shí),要求服務(wù)器必須開啟防火墻
- 生產(chǎn)環(huán)境不建議關(guān)閉防火墻;
1. 查看服務(wù)端nfs端口使用情況
rpcinfo -p #查看當(dāng)前服務(wù)以及端口
nfs服務(wù)需要開啟 mountd,nfs,nlockmgr,portmapper,rquotad這5個服務(wù),nfs 和 portmapper兩個服務(wù)是固定端口,nfs為2049
,portmapper為111
。其他的3個服務(wù)是隨機(jī)端口文章來源:http://www.zghlxwxcb.cn/news/detail-462608.html
2.配置NFS固定端口
2.1. 在/etc/sysconfig/nfs中添加以下設(shè)置,端口可自行選擇
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
2.2. 重啟rpc、nfs的配置與服務(wù)
systemctl restart rpcbind
systemctl restart nfs-server
2.3. 在/etc/modprobe.d/lockd.conf中添加以下設(shè)置
options lockd nlm_tcpport=30002
options lockd nlm_udpport=30002
2.4. 重新加載NFS配置和服務(wù)
systemctl restart nfs-config
systemctl restart nfs-idmap
systemctl restart nfs-lock
systemctl restart nfs-server
2.5. 查看端口情況
rpcinfo -p
文章來源地址http://www.zghlxwxcb.cn/news/detail-462608.html
2.6. 添加防火墻規(guī)則
firewall-cmd --add-port=30002/tcp --add-port=30002/udp --permanent
firewall-cmd --add-port=111/tcp --add-port=2049/tcp --permanent
……
#依次把所有用到的端口和協(xié)議都添加完成,這里不在贅述,添加完成后,重新加載
firewall-cmd --reload
到了這里,關(guān)于NFS介紹及服務(wù)器搭建的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!