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