1. 程式人生 > >通過NFSv3掛載HDFS到本地目錄 -- 1安裝配置NFS

通過NFSv3掛載HDFS到本地目錄 -- 1安裝配置NFS

通過NFSv3掛載HDFS到本地目錄  -- 1安裝配置NFS



1. 背景
HDFS 幾乎成了 分散式計算的標配, 但是,大部分的程式,或者程式袁使用的還是POSIX或者類POSIX介面。
因此,如何適配就是個問題。
MapR 的產品,使用HDFS作為持久化的基礎,但是app使用起來,還是很方便,其中一個原因是 透過NFS 使用HDFS,
上層應用看到的就是POSIX介面,只是URI可以看到是nfs的。
讀寫的速度也很快,我們在實際應用中,比對了其他產品,得出的基本結論是,應該使用了記憶體進行了緩衝。


基本的架構,就是這樣的。


app <-(本地)-> NFS (client) <-(遠端)-> NFS (server) <-(本地)-> HDFS




2. 試驗的環境



2.1 OS版本

使用的是AWS的虛擬機器。
Linux核心版本是4.1,映象的標籤是 AMI 系列。
基本特性 和 RedHat Enterprise 6 / CentOS 6 系列很像。


[[email protected] hadoop-2.7.1]# uname -a
Linux ip-172-30-0-129 4.1.10-17.31.amzn1.x86_64 #1 SMP Sat Oct 24 01:31:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[[email protected] hadoop-2.7.1]# cat /etc/issue
Amazon Linux AMI release 2015.09
Kernel \r on an \m


2.2 檔案系統

檔案系統是ext4格式。


如果您使用的是其他版本,請參考。


2.3 網路
我的這臺虛擬機器的ip地址是 172.30.0.243。


2.4 Hadoop/hdfs
安裝的Hadoop的版本是 hadoop-2.7.1, 配置在目錄 /home/hdfs 下。


2.5 安全性
一般 分散式檔案系統, 是由機房內的一些app訪問的,基本可控,大部分情況下使用的,都是"不安全"的。




3. 透過NFS掛載EXT檔案系統


3.1 安裝NFS 


[[email protected] hadoop-2.7.1]# yum info nfs*
Loaded plugins: priorities, update-motd, upgrade-helper
Installed Packages
Name        : nfs-utils
Arch        : x86_64
Epoch       : 1
Version     : 1.3.0
Release     : 0.21.amzn1
Size        : 1.0 M
Repo        : installed
Summary     : NFS utilities and supporting clients and daemons for the kernel NFS server
URL         : (....)


[
[email protected]
hadoop-2.7.1]# service  nfs status
rpc.svcgssd is stopped
rpc.mountd is stopped
nfsd is stopped
rpc.rquotad is stopped
[[email protected] hadoop-2.7.1]# 


如果沒有,可以使用以下命令安裝
[[email protected] ~]# yum install -y nfs-utils
一般會自動安裝依賴項 rpcbind, 也可以手動安裝: yum install -y rpcbind


3.2 在源伺服器端啟動 nfs 和 rpcbind 服務
重啟後,
[[email protected] ~]# service rpcbind start
Starting rpcbind:                                          [  OK  ]
[[email protected] ~]# service nfs start
Initializing kernel nfsd:                                  [  OK  ]
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]
[[email protected] ~]# service rpcbind status
rpcbind (pid  1940) is running...
[[email protected] ~]# service nfs status
rpc.svcgssd is stopped
rpc.mountd (pid 2344) is running...
nfsd (pid 2361 2360 2359 2358 2357 2356 2355 2354) is running...
rpc.rquotad (pid 2340) is running...


3.3 在源伺服器編輯配置檔案/etc/exports
如:   /home/share 192.168.102.15(rw,sync) *(ro)
說明: 對192.168.102.15賦予讀寫許可權,其他機器僅有隻讀許可權。


/tmp 172.30.0.243(rw,no_root_squash)
含義:共享/tmp目錄給IP地址為172.30.0.243
這句話有三部分:
/data 伺服器共享的目錄
10.0.0.6 允許這個ip訪問該目錄
rwxxxxxxx 讀取許可權




####################################################
[共享的目錄] [主機名1或IP1(引數1,引數2)] [主機名2或IP2(引數3,引數4)]
 下面是一些NFS共享的常用引數:  
        ro                      只讀訪問 
        rw                      讀寫訪問 
        sync                    所有資料在請求時寫入共享 
        async                   NFS在寫入資料前可以相應請求 
        secure                  NFS通過1024以下的安全TCP/IP埠傳送 
        insecure                NFS通過1024以上的埠傳送 
        wdelay                  如果多個使用者要寫入NFS目錄,則歸組寫入(預設) 
        no_wdelay               如果多個使用者要寫入NFS目錄,則立即寫入,當使用async時,無需此設定。 
        hide                    在NFS共享目錄中不共享其子目錄 
        no_hide                 共享NFS目錄的子目錄 
        subtree_check           如果共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的許可權(預設) 
        no_subtree_check        和上面相對,不檢查父目錄許可權 
        all_squash              共享檔案的UID和GID對映匿名使用者anonymous,適合公用目錄。 
        no_all_squash           保留共享檔案的UID和GID(預設) 
        root_squash             root使用者的所有請求對映成如anonymous使用者一樣的許可權(預設) 
        no_root_squas           root使用者具有根目錄的完全管理訪問許可權 
        anonuid=xxx             指定NFS伺服器/etc/passwd檔案中匿名使用者的UID 
        anongid=xxx             指定NFS伺服器/etc/passwd檔案中匿名使用者的GID
####################################################


3.4 配置生效 或者 重啟nfs服務
使用以下命令:
[[email protected] ~]# exportfs -rv
exporting 172.30.0.243:/tmp


或者:
[[email protected] ~]# service nfs   restart
Shutting down NFS daemon:                                  [  OK  ]
Shutting down NFS mountd:                                  [  OK  ]
Shutting down NFS quotas:                                  [  OK  ]
Shutting down NFS services:                                [  OK  ]
Shutting down RPC idmapd:                                  [  OK  ]
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting RPC idmapd:                                       [  OK  ]




啟動nfs後又修改了/etc/exportfs,可以不用重啟該服務,使用exportfs命令即可:
exports [-aruv]
-a 全部mount或umount檔案/etc/exports中的內容
-r 重新mount檔案/etc/exports中的共享內容
-u umount目錄
-v 在export的時候,將詳細的資訊輸出到螢幕上


例:
[[email protected] ~]#/usr/sbin/exportfs –rv 全部重新export一次
[[email protected] ~]#/usr/sbin/exportfs –au 全部解除安裝


3.5 客戶端臨時掛載
使用如下命令: 
[[email protected] ~]# mount -t nfs -o rw   172.30.0.243:/tmp   /mnt
[[email protected] ~]# ls /tmp -lht
total 0
-rw-r--r-- 1 root root 0 Jan 21 10:58 file
[[email protected] ~]# ls /mnt  -lht
total 0
-rw-r--r-- 1 root root 0 Jan 21 10:58 file
[[email protected] ~]# 




可直接執行mount命令:mount servername(or IP): 共享目錄 本地掛載目錄


3.6 自動掛載
客戶機啟動就自動掛載伺服器的共享目錄,則需修改客戶機上的/etc/fstab檔案
新增如下的一行:
172.30.0.243:/tmp /nfs  nfs     rw,tcp,rsize=8192,wsize=8192,timeo=14,intr  0  0
使用如下命令重新載入:mount -a ;如果不報錯,就是載入成功了。
使用mount命令,對應節點的詳細輸出(一行)如下:
172.30.0.243:/tmp on /nfs type nfs4 (rw,relatime,vers=4.0,rsize=8192,wsize=8192,namlen=255,hard,proto=tcp,port=0,timeo=14,retrans=2,sec=sys,clientaddr=172.30.0.243,local_lock=none,addr=172.30.0.243)


掛載點/nfs, 在客戶端機器上必須存在.


fstab中每一行的,最後兩個可選項是檔案系統工具‘dumpe2fs’、‘fsck’用到的標誌。
‘dumpe2fs’域可設成‘1’(啟用)和‘0’(禁用)。由於備份 ext2/ext3 檔案系統的程式要用到‘dump’,因此檔案系統為 ext2/ext3 的條目要設成‘1’,所有其他條目都為‘0’。
‘fsck’ 域可設成‘0’(不檢查檔案系統)、‘1’(先檢查)、‘2’(檢查)。所有非 Linux 檔案系統、可移動的和網路介質、虛擬檔案系統都要設成‘0’;由於根分割槽要先被掛載(接著檢查),‘/’條目要設成‘1’;而所有其他不可移動的及 Linux 檔案系統的本地介質都要設成‘2’。


3.6.1 fstab行中的第4列是fs_options選項
配置變化較多,介紹如下:
fs_options: 指定載入該裝置的檔案系統是需要使用的特定引數選項,多個引數是由逗號分隔開來,這些選項列表包括了裝載型別以及對於該檔案系統合適的其它裝載選項。
對於非NFS系統可用的裝載選項可以參看mount命令的說明,對於nfs系統的選項可以檢視關於nfs的文件。
對於所有檔案系統都適用的選項有noauto,user,owner(允許裝置所有人裝載),_netdev(裝置需要網路),後兩個選項是linux系統所特有的。
對於大多數系統使用"defaults"就可以滿足需要。
其他常見的選項包括:
    選項              含義
    ro     以只讀模式載入該檔案系統
    sync    同步寫,不對該裝置的寫操作進行緩衝處理,這可以防止在非正常關機時情況下破壞檔案系統,但是卻降低了計算機速度
    quota   強制在該檔案系統上進行磁碟定額限制
    user    允許普通使用者載入該檔案系統
    noauto  不再使用mount -a命令(例如系統啟動時)載入該檔案系統


hard: 
NFS CLIENT會不斷的嘗試與SERVER的連線(在後臺,不會給出任何提示資訊,在LINUX下有的版本仍然會給出一些提示),直到MOUNT上。
 
soft:
會在前臺嘗試與SERVER的連線,是預設的連線方式。當收到錯誤資訊後終止mount嘗試,並給出相關資訊。 
例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs 


rsize和wsize: 
檔案傳輸尺寸設定:wsize 來進行設定。這兩個引數的設定對於NFS的執行效能有較大的影響 


bg:
在執行mount時如果無法順利mount上時,系統會將mount的操作轉移到後臺並繼續嘗試mount,直到mount成功為止。
通常在設定/etc/fstab檔案時都應該使用bg,以避免可能的mount不上而影響啟動速度。
 
fg:
和bg正好相反,是預設的引數  


nfsvers=n:
設定要使用的NFS版本,預設是使用2,這個選項的設定還要取決於server端是否支援NFS VER3 


mountport:
設定mount的埠 


port:
根據server端export出的埠設定,例如如果server使用5555埠輸出NFS,那客戶端就需要使用這個引數進行同樣的設定 


timeo=n:
設定超時時間,當資料傳輸遇到問題時,會根據這個引數嘗試進行重新傳輸。預設值是7/10妙(0.7秒)。
如果網路連線不是很穩定的話就要加大這個數值,並且推薦使用HARD MOUNT方式,同時最好也加上INTR引數,這樣你就可以終止任何掛起的檔案訪問。 


intr:
允許通知中斷一個NFS呼叫。當伺服器沒有應答需要放棄的時候有用處。 
nointr :


udp:
使用udp作為nfs的傳輸協議(NFS V2只支援UDP) 


tcp:
使用tcp作為nfs的傳輸協議 


namlen=n:
設定遠端伺服器所允許的最長檔名。這個值的預設是255 


acregmin=n:
設定最小的在檔案更新之前cache時間,預設是3 


acregmax=n:
設定最大的在檔案更新之前cache時間,預設是60 


acdirmin=n:
設定最小的在目錄更新之前cache時間,預設是30 


acdirmax=n:
設定最大的在目錄更新之前cache時間,預設是60
 
actimeo=n:
將acregmin、acregmax、acdirmin、acdirmax設定為同一個數值,預設是沒有啟用。
 
retry=n:
設定當網路傳輸出現故障的時候,嘗試重新連線多少時間後不再嘗試。預設的數值是10000 minutes 


noac: 
關閉cache機制。
 
同時使用多個引數的命令示例如下:mount -t nfs -o timeo=3,udp,hard 172.30.0.243:/tmp /nfs 
請注意,NFS客戶機和伺服器的選項並不一定完全相同,而且有的時候會有衝突。比如說伺服器以只讀的方式匯出,客戶端卻以可寫的方式 mount,雖然可以成功mount上,但嘗試寫入的時候就會發生錯誤。
一般伺服器和客戶端配置衝突的時候,會以伺服器的配置為準。




3.7 其他說明
a.服務端和客戶端都需要開啟portmap/rpcbind服務。RCP是nfs mount和umount時通訊的方式。
b.假如客戶端portmap/rpcbind沒有啟動,mount時,會非常慢,最終會失敗。umount時,即使本地的portmap/rpcbind是關閉的,也能umount成功。 
c.掛載完成後,服務端的portmap/rpcbind停止後,nfs仍然工作正常,但是umout財會提示: not found / mounted or server not reachable。重啟伺服器的portmap/rpcbind也無濟於事。
d.假如服務端的portmap/rpcbind重啟了,那麼nfs也要跟著重啟,否則nfs工作仍然是不正常的。
e.假如服務端nfs關閉(IP是通的),這時客戶端會無法umount,這時使用umount -f /nfs一般能成功,當服務端宕機時,umount -f /nfs 有可能會失敗,這時可以使用 umount -l /nfs 。
最終建議:
f.使用NFS,就要使用portmap/rpcbind,NFS嚴重依賴於portmap/rpcbind,所以不要試圖去停止它(portmap/rpcbind)。
g.當不能umount /nfs 分割槽時, umount -l是最終級的umount。



相關推薦

通過NFSv3掛載HDFS本地目錄 -- 1安裝配置NFS

通過NFSv3掛載HDFS到本地目錄  -- 1安裝配置NFS 1. 背景 HDFS 幾乎成了 分散式計算的標配, 但是,大部分的程式,或者程式袁使用的還是POSIX或者類POSIX介面。 因此,如何適配就是個問題。 MapR 的產品,使用HDFS作為持久化的基礎,但是a

通過NFSv3掛載HDFS本地目錄 -- 2續hdfs-nfs閘道器解決錯誤

通過NFSv3掛載HDFS到本地目錄  -- 2續hdfs-nfs閘道器解決錯誤 4.8 總結 - 主要命令列表 基本順序如下:cd /home/hdfs/hadoop-2.7.1 sbin/stop-dfs.sh service nfs stop service rpc

sshfs通過ssh掛載遠程目錄本地

遠程管理 pro 主頁 org 改變 ubuntu 安全 配置 做到 SSH 是一個強大且安全的工具,我們除了可以用它來遠程管理主機外,還可以通過它建立 SSH tunnel 作 Proxy 用,遠程傳輸文件等等。而這裏我想要介紹另外一個功能,那就是結合 sshfs 這個工

CentOS 7安裝SSHFS 實現遠端主機目錄 掛載本地目錄

安裝sshfs 官方下載地址 https://github.com/libfuse/sshfs/releases 首先,我們需要安裝sshfs軟體。sshfs是一個基於SSH檔案傳輸協議的檔案系統客戶端,它的官方網頁是:http://fuse.sourceforge.net/sshfs.html

linux通過cifs掛載windows共享目錄

nis 家庭 方式 com 查看 tail mini 共享文件夾 malformed 1、在linux上執行以下命令: [root@localhost ~]# mount -t cifs -o username=shenhb,password=111111,iochars

linux通過mount掛載windows共享目錄

linux通過mount掛載windows共享目錄 192.168.11.11 是windows,先共享出test,設定好帳號密碼 在linux上執行: mount -t cifs -o username=&quot;test",password="tes

通過sshfs掛載遠端伺服器目錄

sshfs是基於fuse構建的ssh檔案系統客戶端程式,通過ssh協議來掛載遠端檔案系統,方便而且安全 首先我們需要安裝 FUSE for macOS 和 sshfs address 或者通過 b

Apache-1:安裝配置

請求 yum errorlog conf expires from 2.3 rtu vhosts 並發?單位時間內,服務器同時能夠處理的最大連接數(有的請求1秒結束,有的請求可以10秒才結束) 主流互聯網web服務器靜態:apache、nginx、lighttpd動態:II

HDFS分布式安裝配置筆記

分布式安裝 sys local 火墻 post conda val conf jdk1.7 1.準備三臺虛擬機centos6.5 192.168.20.171 node1 NameNode節點centos6.5 192.168.20.172 node2 DataNode節點

SuSE 11 sp3 下安裝配置nfs共享掛載

atd 5-0 name list 自啟 nfs服務端 config kernel 指令 SUSE 11 sp3 下安裝配置nfs共享 服務器:Server端:10.133.212.145 /nfs/145Client端: 10.133.212.146 /nf

服務計算1--安裝配置你的私有云(下)

服務計算1–安裝配置你的私有云(上)連結 https://blog.csdn.net/DDghsot/article/details/82595549 本文結構 3.複製虛擬機器 4.安裝桌面(可選) 5.遠端控制桌面

服務計算1--安裝配置你的私有云(上)

服務計算1–安裝配置你的私有云(下)連結 https://blog.csdn.net/DDghsot/article/details/82624044 本文結構如下 文章目錄 概述 1.安裝virtual box 下載Vbox 配置

服務計算1--安裝配置私有云(下)

本文結構 3.複製虛擬機器 費了半天勁終於弄好一個虛擬機器了,但要是需要多個這樣的虛擬機器,重複這樣的步驟是很枯燥的。有了第一個虛擬機器後,我們可以對它進行復制直接生成多個虛擬機器。 首先關掉虛擬機器,回到Vbox介面,右鍵第一個虛擬機器

LINUX 本地yum 源安裝配置

1.插入iso映象 2.掛載到本地指定路徑 mkdir -p /mnt/cdrom mount /dev/cdrom /mnt/cdrom 3.修改預設配置 cd /etc/yum.repos.d/ rename .repo .repo.bak * mv C

centos7下django2.1安裝配置

首先虛擬環境要安裝好,因為我們的django是要執行在虛擬環境下的: 虛擬環境安裝配置連結:連結 進入虛擬環境workon XX 下載模組: ps:我用的是python3.6以及pip18 django2.1(僅支援python3) pymysql(

Gradle 菜鳥教程 1 安裝配置

Gradle簡介 Gradle是一個基於Apache Ant和Apache Maven概念的專案自動化構建工具。 它使用一種基於Groovy的特定領域語言(DSL)來宣告專案設定,拋棄了基於XML的

JBoss 6.1安裝配置問題

一,配置環境變數                    JBOSS_HOME:配置到解壓檔案的根目錄下;                    classpath跟JAVA_HOME:配置的解壓目錄\b

Linux系統指定目錄安裝配置Mysql 5.7.15步驟圖文詳解,只需5分鐘搞定

mysql安裝有兩種:原始碼自編譯安裝和編譯過的二進位制檔案進行安裝。後一種方法相比原始碼安裝,節省了半個小時的編譯時間,只需要合理配置即可。至於其他的優劣,歡迎大家討論。網上有很多教程,但是對於想要把mysql安裝到指定路徑的博文卻很少,而且還有很多漏洞。為了

Elasticsearch2.4.1——安裝配置(測試)######附帶kibana/sense安裝

開場白:簡介。相信要用的都知道elastisearch大概是什麼。但還是有必要介紹下。為了總結的完整性和條理性 為了搜尋,你懂的 Elasticsearch是一個基於Apache Lucene(TM)的開源搜尋引擎。無論在開源還是專有領域,Lucene可以被認為是迄今

VS2013 VTK8.1 安裝配置

Visual Studio版本:Ultimate 2013 中文版 VTK版本:8.1.0.rc1 CMake版本:3.10.0.rc5 ——————————————————————————————————————————————————— 本文已成功利用CMake生成對應