I:環(huán)境準(zhǔn)備
| 主機(jī) | IP? ? ? ? ? ? | 角色? ? ? |
| ---- | ------------- | --------- |
| 本地 | 192.168.12.17 | nfs客戶端 |
| 遠(yuǎn)程 | 192.168.12.39 | nfs服務(wù)端 |
```bash
本地與遠(yuǎn)程均執(zhí)行下述兩條命令
setenforce 0
iptables -F
```
II:安裝nfs(本地和遠(yuǎn)程主機(jī)都要裝)
```bash
yum install nfs-utils -y? #
# 如果是centos7,會(huì)自動(dòng)安裝rpcbind
# 如果是centos6,一定要手動(dòng)下載rpcbind,啟動(dòng)時(shí)一定先啟動(dòng)rpcbind,再啟動(dòng)nfs
```
III:服務(wù)端配置
```bash
# 1、配置nfs服務(wù),配置文件為 /etc/exports,書寫格式如下:
[root@remote ~]# cat /etc/exports
/data 192.168.12.0/24(rw,sync,all_squash)
# 2、創(chuàng)建共享目錄
[root@remote ~]# mkdir /data
[root@remote ~]# chown -R nfsnobody.nfsnobody /data/
# nfsnobody該用戶在安裝nfs之后自動(dòng)創(chuàng)建,是NFS客戶端遠(yuǎn)程連接過來后使用的用戶
# 3、啟動(dòng)nfs,centos7,啟動(dòng)nfs即可,會(huì)自動(dòng)啟動(dòng)rpcbind
[root@remote ~]# systemctl start nfs
```
配置文件/etc/exports格式解析
| 語法? ? | /data? ? ? ? | 192.168.12.0/24? ? | (rw,sync,all_squash)? ? ? |
| -------- | ------------- | ------------------- | ------------------------- |
| 語法含義 | NFS共享的目錄 | NFS允許連接的客戶端 | 允許的操作(參數(shù)1,參數(shù)2) |
```bash
# 1、訪問權(quán)限
ro:設(shè)置輸出目錄只讀。
rw:設(shè)置輸出目錄讀寫。
# 2、用戶映射
root_squash:將root用戶映射為來賓賬號(nfsnoboydy用戶),默認(rèn)啟用。
no_root_squash:不映射客戶端root賬號為來賓賬號,也就意味著客戶端root具有服務(wù)端root的用戶權(quán)限。
all_squash:將遠(yuǎn)程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody)。
no_all_squash:與all_squash取反(默認(rèn)設(shè)置);
anonuid=501:配置all_squash使用,指定NFS的用戶UID,必須存在系統(tǒng)(常用)
anongid=501:配置all_squash使用,指定NFS的用戶UID,必須存在系統(tǒng)(常用)
# 3、其他
secure:限制客戶端只能從小于1024的tcp/ip端口連接nfs服務(wù)器(默認(rèn)設(shè)置)。
insecure:允許客戶端從大于1024的tcp/ip端口連接服務(wù)器。
sync:將數(shù)據(jù)同步寫入內(nèi)存緩沖區(qū)與磁盤中,效率低,但可以保證數(shù)據(jù)的一致性。
async:將數(shù)據(jù)先保存在內(nèi)存緩沖區(qū)中,必要時(shí)才寫入磁盤,默認(rèn)使用。
wdelay:檢查是否有相關(guān)的寫操作,如果有則將這些寫操作一起執(zhí)行,這樣可以提高效率(默認(rèn)設(shè)置)。
no_wdelay:若有寫操作則立即執(zhí)行,應(yīng)與sync配合使用。
subtree:若輸出目錄是一個(gè)子目錄,則nfs服務(wù)器將檢查其父目錄的權(quán)限(默認(rèn)設(shè)置)。
no_subtree:即使輸出目錄是一個(gè)子目錄,nfs服務(wù)器也不檢查其父目錄的權(quán)限,這樣可以提高效率。
```
IV:客戶端
```bash
[root@local /opt]# showmount -e 192.168.12.39
Export list for 192.168.12.39:
/data 192.168.12.0/24
[root@local /opt]# mount -t nfs 192.168.12.39:/data /opt
[root@local /opt]# echo egon666 > /opt/1.txt? # 寫入服務(wù)端的/data下
# 若寫入失敗請注意服務(wù)端/data目錄的權(quán)限s
[root@local /opt]# vim /etc/fstab? # 設(shè)置開機(jī)自動(dòng)掛載
192.168.12.39:/data /opt nfs defaults 0 0
```
要點(diǎn)強(qiáng)調(diào)
NFS是共享存儲(chǔ)沒錯(cuò),一般把網(wǎng)站用戶上傳的文件都放到NFS共享里, 例如BBS? 產(chǎn)品的圖片,附件,即把網(wǎng)站的img等存放用戶上傳文件的目錄遠(yuǎn)程掛載到共享存儲(chǔ)nfs下。
但網(wǎng)站BBS程序不要放NFS共享里,如果那么做,NFS本身又存在單點(diǎn)故障,一旦掛掉,整個(gè)網(wǎng)站都不可用,所以推薦用帶集群的存儲(chǔ),比如分布式存儲(chǔ)ceph