① LINUX怎樣安裝和使用NFS服務
LINUX NFS安裝和使用,具體步驟如下:
1 安裝
需要安裝 portmap和nfs-utils這兩個包,下載rpm包後用rpm安裝或者直接用yum安裝都可以。
rpm -ivh portmap-4.0-65.2.2.1.i386.rpm
rpm -ivh nfs-utils-1.0.9-50.el5.i386.rpm
2 配置
配置文件是/etc/exports,如果不存在需要自己創建。
/etc/exports文件內容格式:
<輸出目錄> [客戶端1域名/IP(選項(訪問許可權,用戶映射,其他))] [客戶端2域名/IP 選項(訪問許可權,用戶映射,其他)]
NFS主要的選項有3類:
A 訪問許可權選項
設置輸出目錄只讀:ro
設置輸出目錄讀寫:rw
B 用戶映射選項
all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
no_all_squash:與all_squash相反(默認設置);
root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置);
no_root_squash:與rootsquash相反;
anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx);
anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,並指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);
C 其它選項
secure:限制客戶端只能從小於1024的tcp/ip埠連接nfs伺服器(默認設置);
insecure:允許客戶端從大於1024的tcp/ip埠連接伺服器;
sync:將數據同步寫入內存緩沖區與磁碟中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁碟;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
no_wdelay:若有寫操好早作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs伺服器將檢查其父目錄的許可權(默認設置);
no_subtree:即使輸出目錄是一個子目錄,nfs伺服器也不檢查其父目錄的許可權,這樣可以提高效率;
例如,我們在namenode1機器上配置做如下配置
/home/dfs/nfs_share_edits/ namenode2(rw)
這個配置是把namenode1上的/home/dfs/nfs_share_edits目錄設置成共享,可以給namenode2來訪問,訪問許可權是可讀寫。
3 啟動
sudo service portmap start
sudo service nfs start
查詢狀態
service portmap status
service nfs status
停止服務
service nfs stop
service portmap stop
4 客戶端掛載
命令格式旁襪衫
mount NFS伺服器IP/域名:共享目錄本地掛載運腔目錄
例如,在namenode2機器上運行mount命令掛載namenode1的NFS共享目錄
mkdir /home/dfs/nfs_share_edits
sudo mountnamenode1:/home/dfs/nfs_share_edits /home/dfs/nfs_share_edits
這是把namenode2把namenode1的NFS共享目錄掛載到本地,這樣就可以訪問遠程的共享目錄了,掛載前需要先創建本地的掛載目錄。
掛載之後,可以用mount命令查看掛載狀態
sudo mount | grep -i nfs
卸載命令
sudo umount namenode1:/home/dfs/nfs_share_edits
5 相關的守護進程
nfsd
它是基本的NFS守護進程,主要功能是管理客戶端是否能夠登錄伺服器;
mountd
它是RPC安裝守護進程,主要功能是管理NFS的文件系統。當客戶端順利通過nfsd登錄NFS伺服器後,在使用NFS服務所提供的文件前,還必須通過文件使用許可權的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端許可權。
portmap
主要功能是進行埠映射工作。當客戶端嘗試連接並使用RPC伺服器提供的服務(如NFS服務)時,portmap會將所管理的與服務對應的埠提供給客戶端,從而使客戶可以通過該埠向伺服器請求服務。
6 相關的命令
#查看配置
exportfs
#默認查看共享的服務
showmount -e
#查看已經與客戶端連接上的目錄信息
showmount -a
② 分布式文件系統的NFS介紹
(NFS)(Network File System)是個分布式的客戶機/伺服器文件系統。NFS的實質在於用戶間計算機的共享。用戶可以聯結到共享計算機並像訪問本地硬碟一樣訪問共享計算機上的文件。管理員可以建立遠程系統上文件的訪問,以至於用戶感覺不到他們是在訪問遠程文件。
NFS是個到處可用和廣泛實現的開放式系統。 允許用戶象訪問本地文件一樣訪問其他系統上的文件。提供對無盤工作站的支持以降低網路開銷。
簡化應用程序對遠程文件的訪問使得不需要因訪問這些文件而調用特殊的過程。
使用一次一個服務請求以使系統能從已崩潰的伺服器或工作站上恢復。
採用安全措施保護文件免遭偷竊與破壞。
使NFS協議可移植和簡單,以便它們能在許多不同計算機上實現,包括低檔的PC機。
大型計算機、小型計算機和文件伺服器運行NFS時,都為多個用戶提供了一個文件存儲區。工作站只需要運行TCP/IP協議來訪問這些系統和位於NFS存儲區內的文件。工作站上的NFS通常由TCP/IP軟體支持。對DOS用戶,一個遠程NFS文件存儲區看起來是另一個磁碟驅動器盤符。對Macintosh用戶,遠程NFS文件存儲區就是一個圖標。 伺服器目錄共享 伺服器廣播或通知正在共享的目錄,一個共享目錄通常叫做出版或出口目錄。有關共享目錄和誰可訪問它們的信息放在一個文件中,由操作系統啟動時讀取。
客戶機訪問 在共享目錄上建立一種鏈接和訪問文件的過程叫做裝聯(mounting),用戶將網路用作一條通信鏈路來訪問遠程文件系統。
NFS的一個重要組成是虛擬文件系統(VFS),它是應用程序與低層文件系統間的介面。 close文件關閉操作
create 文件生成操作
fsync將改變保存到文件中
getattr 取文件屬性
link 用另一個名字訪問一個文件
lookup 讀目錄項
mkdir建立新目錄
open 文件打開操作
rdwr 文件讀寫操作
remove 刪除一個文件
rename 文件改名
rmdir刪除一目錄
setattr 設置文件屬性 Andrew File System(AFS)Andrew文件系統(AFS)
AFS是專門為在大型分布式環境中提供可靠的文件服務而設計的。它通過基於單元的結構生成一種可管理的分布式環境。一個單元是某個獨立區域中文件伺服器和客戶機系統的集合,這個獨立區域由特定的機構管理。通常代表一個組織的計算資源。用戶可以和同一單元中其他用戶方便地共享信息,他們也可以和其他單元內的用戶共享信息,這取決於那些單元中的機構所授予的訪問許可權。
文件伺服器進程 這個進程響應客戶工作站對文件服務的請求,維護目錄結構,監控文件和目錄狀態信息,檢查用戶的訪問。
基本監察(BOS)伺服器進程 這個進程運行於有BOS設定的伺服器。它監控和管理運行其他服務的進程並可自動重啟伺服器進程,而不需人工幫助。
卷宗伺服器進程 此進程處理與卷宗有關的文件系統操作,如卷宗生成、移動、復制、備份和恢復。
卷宗定位伺服器進程 該進程提供了對文件卷宗的位置透明性。即使卷宗被移動了,用戶也能訪問它而不需要知道卷宗移動了。
鑒別伺服器進程 此進程通過授權和相互鑒別提供網路安全性。用一個「鑒別伺服器」維護一個存有口令和加密密鑰的鑒別資料庫,此系統是基於Kerberos的。
保護伺服器進程 此進程基於一個保護資料庫中的訪問信息,使用戶和組獲得對文件服務的訪問權。
更新伺服器進程 此進程將AFS的更新和任何配置文件傳播到所有AFS伺服器。
AFS還配有一套用於差錯處理,系統備份和AFS分布式文件系統管理的實用工具程序。例如,SCOUT定期探查和收集AFS文件伺服器的信息。信息在給定格式的屏幕上提供給管理員。設置多種閾值向管理者報告一些將發生的問題,如磁碟空間將用完等。另一個工具是USS,可創建基於帶有欄位常量模板的用戶帳戶。Ubik提供資料庫復制和同步服務。一個復制的資料庫是一個其信息放於多個位置的系統以便於本地用戶更方便地訪問這些數據信息。同步機制保證所有資料庫的信息是一致的。
③ docker使用NFS解決數據存儲問題
NFS :Net File System 網路文件存儲系統
將雲存儲的磁碟掛載到本地計算機,本文所用的NFS提供商是阿里雲網路文件存儲系統。
1. 首先在阿里雲配置好網路文件存儲系統
具體文檔在該鏈接中:https://help.aliyun.com/document_detail/27526.html?spm=a2c4g.11186623.6.559.121b5ddemjaPZP
2. 在本地linux測試掛載
首先安裝nfs客戶端工具
sudo apt-get install nfs-common
掛載,執行下列命令後,即可看到 /mount-point 掛載點出現,有關mount和umount命令的使用,需要自行網路和谷歌
sudo mount -t nfs -o vers=4.0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id-xxxx.region.nas.aliyuncs.com:/ /mount-point
3. 使用docker創建驅動為nfs類型的磁碟(volume,不推薦使用bind mount)
docker volume create --driver local --opt type=nfs --opt o=addr=192.168.138.130,rw --opt device=:/data/nfs volume-nfs
4. 運行容器時,掛載 volume-nfs 磁碟即可
使用-v選項將volume掛載到容器上
docker run -dit --name data1 -v volume-nfs:/mnt ubuntu:16.04