背景說明:
最近在搞實(shí)驗(yàn)室集群環(huán)境,需要把存儲(chǔ)服務(wù)器用起來,兩臺(tái)存儲(chǔ)服務(wù)器大概12T的大小,想實(shí)現(xiàn)使其他的8個(gè)計(jì)算節(jié)點(diǎn)都能像訪問本地目錄一樣訪問存儲(chǔ)服務(wù)器,類似Windows下的文件共享,因此使用了NFS服務(wù)。
NFS
1.介紹
NFS 是Network File System的縮寫,即網(wǎng)絡(luò)文件系統(tǒng)。是一種使用于分散式文件系統(tǒng)的協(xié)定,功能是讓客戶端通過網(wǎng)絡(luò)訪問不同主機(jī)上磁盤里的數(shù)據(jù),主要用在類Unix系統(tǒng)上實(shí)現(xiàn)文件共享的一種方法。
2.核心原理
NFS使用RPC,即遠(yuǎn)程過程調(diào)用 (Remote ProcedureCall) ,它能使客戶端執(zhí)行其他系統(tǒng)中的程序。NFS本身是沒有提供信息傳輸?shù)膮f(xié)議和功能的,但NFS卻能讓我們通過網(wǎng)絡(luò)進(jìn)行資料的分享,這是因?yàn)镹FS使用了一些依賴RPC的傳輸協(xié)議??梢院?jiǎn)單理解RPC和NFS的關(guān)系:NFS是一個(gè)文件系統(tǒng),而RPC負(fù)責(zé)信息的傳輸。
詳細(xì)配置
1. 前期配置
關(guān)閉服務(wù)端和客戶端的防火墻和selinux,這里的服務(wù)端指需要共享出去的存儲(chǔ)服務(wù)器,客戶端指其他的8個(gè)計(jì)算節(jié)點(diǎn)。
以下所有命令是在CentOS7環(huán)境下
1.1 關(guān)閉防火墻
systemctl stop firewalld
1.2 把selinux設(shè)置為許可模式(或者關(guān)閉)
etenforce 0
(如果想要禁用,需要更改配置文件,把SELINUX設(shè)置成disabled,重啟生效)
2.服務(wù)端配置
2.1 安裝需要的軟件包(使用yum)
yum install -y rpc-bind nfs-utils
2.2 創(chuàng)建想要共享的文件夾,例如 /datas
mkdir /datas
2.3 把共享目錄的權(quán)限設(shè)定為所有用戶都可讀可寫權(quán)限
chmod -R 777 /datas
2.4 修改NFS服務(wù)的主配置文件 /etc/exports
vim /etc/exports
#添加如下規(guī)則
/datas *(rw,sync)
規(guī)則說明:/datas代表共享的文件,*代表所有主機(jī)都可以訪問,rw指讀和寫的權(quán)限,sync表明使用同步方式。
其他更為精確的可選配置如下:
<輸出目錄> 客戶端(選項(xiàng):訪問權(quán)限,用戶映射,其他]
輸出目錄是指NFS系統(tǒng)中所定義的共享給客戶端使用的文件系統(tǒng)
客戶端是定義網(wǎng)絡(luò)中可以訪問這個(gè)NFS共享目錄的IP地址或網(wǎng)段或域名等
客戶端常用的指定方式
指定ip地址的主機(jī):192.168.100.1
指定一個(gè)子網(wǎng):192.168.100.0/24 也可以寫成:192.168.100.0/255.255.255.0
指定域名的主機(jī):david.bsmart.cn
指定域中的所有主機(jī):*.bsmart.cn
所有主機(jī):*
選項(xiàng)用來設(shè)置輸出目錄的訪問權(quán)限、用戶映射等。
NFS主要有3類選項(xiàng):
設(shè)置輸出目錄只讀:ro
設(shè)置輸出目錄讀寫:rw
用戶映射選項(xiàng)
all_squash:將遠(yuǎn)程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
no_all_squash:與all_squash取反(默認(rèn)設(shè)置);
root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認(rèn)設(shè)置);
no_root_squash:與rootsquash取反;
anonuid=xxx:將遠(yuǎn)程訪問的所有用戶都映射為匿名用戶,并指定該用戶為本地用戶(UID=xxx);
anongid=xxx:將遠(yuǎn)程訪問的所有用戶組都映射為匿名用戶組賬戶,并指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);
其它選項(xiàng)
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í)才寫入磁盤;
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)限,這樣可以提高效率;
2.5 開啟NFS服務(wù)
systemctl start nfs
至此服務(wù)端的nfs配置完畢,回想一下,我們主要做了:
關(guān)閉防火墻和selinux
將我們創(chuàng)建的目錄/datas通過nfs主配置文件/etc/exports共享出去
開啟nfs服務(wù)
Ps:如果想共享服務(wù)器的某個(gè)硬盤,只需要將/datas目錄使用mount命令掛載到該硬盤即可。
查看硬盤和掛載情況的命令為:
df -h
例如將硬盤設(shè)備/dev/sdd 掛載到/datas
mount /dev/sdd /datas
接下來配置客戶端
3.客戶端配置
3.1 關(guān)閉防火墻和selinux
同上
3.2 安裝NFS
同上
3.3 將服務(wù)端的共享目錄掛載到本機(jī)的 /data-nfs目錄上,我這里的ip是IB卡的的ip,沒有IB驅(qū)動(dòng)的可以直接使用內(nèi)網(wǎng)ip,/data-nfs是我自定義的目錄。
mount -t nfs 12.12.12.29:/datas /data-nfs
至此,客戶端配置完畢,訪問/data-nfs目錄就相當(dāng)于訪問服務(wù)端的/datas目錄
ps:以上配置重啟機(jī)器后會(huì)出問題,建議設(shè)置開機(jī)啟動(dòng)執(zhí)行。
10分鐘學(xué)會(huì)在Ubuntu 18.04 LTS上安裝NFS服務(wù)器和客戶端 http://www.sfodin.cn/Linux/2018-11/155331.htm
Llinux下搭建NFS文件共享服務(wù)器 http://www.sfodin.cn/Linux/2018-12/156110.htm