背景說明:
最近在搞實驗室集群環境,需要把存儲服務器用起來,兩臺存儲服務器大概12T的大小,想實現使其他的8個計算節點都能像訪問本地目錄一樣訪問存儲服務器,類似Windows下的文件共享,因此使用了NFS服務。
NFS
1.介紹
NFS 是Network File System的縮寫,即網絡文件系統。是一種使用于分散式文件系統的協定,功能是讓客戶端通過網絡訪問不同主機上磁盤里的數據,主要用在類Unix系統上實現文件共享的一種方法。
2.核心原理
NFS使用RPC,即遠程過程調用 (Remote ProcedureCall) ,它能使客戶端執行其他系統中的程序。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網絡進行資料的分享,這是因為NFS使用了一些依賴RPC的傳輸協議。可以簡單理解RPC和NFS的關系:NFS是一個文件系統,而RPC負責信息的傳輸。
詳細配置
1. 前期配置
關閉服務端和客戶端的防火墻和selinux,這里的服務端指需要共享出去的存儲服務器,客戶端指其他的8個計算節點。
以下所有命令是在CentOS7環境下
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 創建想要共享的文件夾,例如 /datas
mkdir /datas
2.3 把共享目錄的權限設定為所有用戶都可讀可寫權限
chmod -R 777 /datas
2.4 修改NFS服務的主配置文件 /etc/exports
vim /etc/exports
#添加如下規則
/datas *(rw,sync)
規則說明:/datas代表共享的文件,*代表所有主機都可以訪問,rw指讀和寫的權限,sync表明使用同步方式。
其他更為精確的可選配置如下:
<輸出目錄> 客戶端(選項:訪問權限,用戶映射,其他]
輸出目錄是指NFS系統中所定義的共享給客戶端使用的文件系統
客戶端是定義網絡中可以訪問這個NFS共享目錄的IP地址或網段或域名等
客戶端常用的指定方式
指定ip地址的主機:192.168.100.1
指定一個子網: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:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁盤;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);
no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;
2.5 開啟NFS服務
systemctl start nfs
至此服務端的nfs配置完畢,回想一下,我們主要做了:
關閉防火墻和selinux
將我們創建的目錄/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驅動的可以直接使用內網ip,/data-nfs是我自定義的目錄。
mount -t nfs 12.12.12.29:/datas /data-nfs
至此,客戶端配置完畢,訪問/data-nfs目錄就相當于訪問服務端的/datas目錄
ps:以上配置重啟機器后會出問題,建議設置開機啟動執行。
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