最近需要多台服務器共享同一個目錄,做一個共享盤管理文件,so使用nfs
一 、NFS介紹(轉自網絡)
NFS(Network File System)即網絡文件系統,它的主要功能是通過網絡讓不同的機器系統之間可以彼此共享文件和目錄。NFS服務器可以允許NFS客戶端將遠端NFS服務器端的共享目錄掛載到本地的NFS客戶端中。在本地的NFS客戶端的機器看來,NFS服務器端共享的目錄就好像自己的磁盤分區和目錄一樣。一般客戶端掛載到本地目錄的名字可以隨便,但為方便管理,我們要和服務器端一樣比較好。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件一樣。
NFS最早是由Sun公司發展出來的,
簡單的來說:它就是是可以透過網絡,讓不同的主機、不同的操作系統可以共享存儲。
以下是NFS最顯而易見的好處:
-
- 節省本地存儲空間,將常用的數據存放在一台NFS服務器上且可以通過網絡訪問,那么本地終端將可以減少自身存儲空間的使用。
-
- 用戶不需要在網絡中的每個機器上都建有Home目錄,Home目錄可以放在NFS服務器上且可以在網絡上被訪問使用。
-
- 一些存儲設備CDROM和Zip(一種高儲存密度的磁盤驅動器與磁盤)等都可以在網絡上被別的機器使用。這可以減少整個網絡上可移動介質設備的數量。
二、環境安裝
環境准備:
CentOS7*2 ip:192.168.2.62(NFS服務端) 192.168.2.61(NFS客戶端)
兩台機器均需要提前安裝nfs服務:yum install nfs-utils -y
三、服務端配置
創建需要共享的nfs目錄(默認關閉防火牆,nfs的端口為2049)
mkdir /data/nfs #創建需要共享的nfs目錄
echo "test" > /data/nfs/test #先創建一個文件,等配完全部方便驗證
vim /etc/exports #修改nfs服務端配置文件
/data/javaApp/ 192.168.2.* (rw,sync,root_squash) #配置要連接的服務端的nfs信息,*表示所有
參數說明
ro:共享目錄只讀;
rw:共享目錄可讀可寫;
all_squash:所有訪問用戶都映射為匿名用戶或用戶組;
no_all_squash(默認):訪問用戶先與本機用戶匹配,匹配失敗后再映射為匿名用戶或用戶組;
root_squash(默認):將來訪的root用戶映射為匿名用戶或用戶組;
no_root_squash:來訪的root用戶保持root帳號權限;
anonuid=<UID>:指定匿名訪問用戶的本地用戶UID,默認為nfsnobody(65534);
anongid=<GID>:指定匿名訪問用戶的本地用戶組GID,默認為nfsnobody(65534);
secure(默認):限制客戶端只能從小於1024的tcp/ip端口連接服務器;
insecure:允許客戶端從大於1024的tcp/ip端口連接服務器;
sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁盤;
wdelay(默認):檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率;
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree_check(默認) :若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限;
no_subtree_check :即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率;
啟動NFS服務端
NFS服務是依賴於RPC服務的,我們查看下狀態
systemctl status rpcbind 查看下RPC狀態
systemctl start nfs-server 啟動nfs-server程序
systemctl enable nfs-server 設置NFS服務端為開機啟動
四、客戶端配置
驗證下是否能連接服務端
showmount -e 192.168.2.62
出現以上及成功
進行客戶端掛載,創建同服務端的目錄
mkdir /data/nfs
mount -t nfs 192.168.2.62:/data/nfs /data/nfs #掛載
cat /data/nfs/test
這種方式為臨時掛載,下面把掛載加入開機啟動
vim /etc/fstab
192.168.2.61:/data/nfs /data/nfs nfs defaults 0 0
完事~