<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 13.3 NFS 客戶端的設定 ## 13.3 NFS 客戶端的設定 既然 NFS 服務器最主要的工作就是分享文件系統給網絡上其他的客戶端,所以客戶端當然得要掛載這個玩意兒啰! 此外,服務器端可以加設防火墻來保護自己的文件系統,那么客戶端掛載該文件系統后,難道不需要保護自己? 呵呵!所以底下我們要來談一談幾個 NFS 客戶端的課題。 - - - - - - ### 13.3.1 手動掛載 NFS 服務器分享的資源 你要如何掛載 NFS 服務器所提供的文件系統呢?基本上,可以這樣做: 1. 確認本地端已經啟動了 rpcbind 服務! 2. 掃瞄 NFS 服務器分享的目錄有哪些,并了解我們是否可以使用 ([showmount](#showmount)); 3. 在本地端建立預計要掛載的掛載點目錄 (mkdir); 4. 利用 mount 將遠程主機直接掛載到相關目錄。 好,現在假設客戶端在 192.168.100.10 這部機器上,而服務器是 192.168.100.254 , 那么趕緊來檢查一下我們是否已經有 rpcbind 的啟動,另外遠程主機有什么可用的目錄呢! ``` # 1\. 啟動必備的服務:若沒有啟動才啟動,有啟動則保持原樣不動。 [root@clientlinux ~]# /etc/init.d/rpcbind start [root@clientlinux ~]# /etc/init.d/nfslock start # 一般來說,系統默認會啟動 rpcbind ,不過鳥哥之前關閉過,所以要啟動。 # 另外,如果服務器端有啟動 nfslock 的話,客戶端也要啟動才能生效! # 2\. 查詢服務器提供哪些資源給我們使用呢? [root@clientlinux ~]# showmount -e 192.168.100.254 Export list for 192.168.100.254: /tmp * /home/linux *.centos.vbird /home/test 192.168.100.10 /home/public (everyone) <==這是等一下我們要掛載的目錄 ``` 接下來我想要將遠程主機的 /home/public 掛載到本地端主機的 /home/nfs/public , 所以我就得要在本地端主機先建立起這個掛載點目錄才行啊!然后就可以用 mount 這個指令直接掛載 NFS 的文件系統啰! ``` # 3\. 建立掛載點,并且實際掛載看看啰! [root@clientlinux ~]# mkdir -p /home/nfs/public [root@clientlinux ~]# mount -t nfs 192.168.100.254:/home/public \ > /home/nfs/public # 注意一下掛載的語法!『 -t nfs 』指定文件系統類型, # IP:/dir 則是指定某一部主機的某個提供的目錄!另外,如果出現如下錯誤: mount: 192.168.100.254:/home/public failed, reason given by server: No such file or directory # 這代表你在 Server 上面并沒有建立 /home/public 啦!自己在服務器端建立他吧! # 4\. 總是得要看看掛載之后的情況如何,可以使用 df 或 mount 啦! [root@clientlinux ~]# df 文件系統 1K-區段 已用 可用 已用% 掛載點 ....(中間省略).... 192.168.100.254:/home/public 7104640 143104 6607104 3% /home/nfs/public ``` 先注意一下掛載 NFS 檔案的格式范例喔!呵呵!這樣就可以將數據掛載進來啦!請注意喔! 以后,只要你進入你的目錄 /home/nfs/public 就等于到了 192.168.100.254 那部遠程主機的 /home/public 那個目錄中啰!很不錯吧!至于你在該目錄下有什么權限? 那就請你回去前一小節查一查權限的思考吧! ^\_^ !那么如何將掛載的 NFS 目錄卸除呢?就使用 umount 啊! ``` [root@clientlinux ~]# umount /home/nfs/public ``` - - - - - - ### 13.3.2 客戶端可處理的掛載參數與開機掛載 瞧!客戶端的掛載工作很簡單吧!不過不曉得你有沒有想過,如果你剛剛掛載到本機 /home/nfs/public 的文件系統當中,含有一支 script ,且這支 script 的內容為『 rm -rf / 』且該檔案權限為 555 , 夭壽~如果你因為好奇給他執行下去,可有的你受的了~因為整個系統都會被殺光光!真可憐! 所以說,除了 NFS 服務器需要保護之外,我們取用人家的 NFS 文件系統也需要自我保護才行啊! 那要如何自我保護啊?可以透過 mount 的指令參數喔!包括底下這些主要的參數可以嘗試加入: 參數 參數代表意義 系統默認值suid nosuid 曉得啥是 SUID 吧?如果掛載的 partition 上面有任何 SUID 的 binary 程序時, 你只要使用 nosuid 就能夠取消 SUID 的功能了!嗄?不知道什么是 SUID ?那就不要學人家架站嘛!@\_@! 趕緊回去基礎學習篇第三版復習一下第十七章、程序與資源管理啦! suidrw ro 你可以指定該文件系統是只讀 (ro) 或可擦寫喔!服務器可以提供給你可擦寫, 但是客戶端可以僅允許只讀的參數設定值! rwdev nodev 是否可以保留裝置檔案的特殊功能?一般來說只有 /dev 這個目錄才會有特殊的裝置,因此你可以選擇 nodev 喔! devexec noexec 是否具有執行 binary file 的權限? 如果你想要掛載的僅是數據區 (例如 /home),那么可以選擇 noexec 啊! execuser nouser 是否允許使用者進行檔案的掛載與卸除功能? 如果要保護文件系統,最好不要提供使用者進行掛載與卸除吧! nouserauto noauto 這個 auto 指的是『mount -a』時,會不會被掛載的項目。 如果你不需要這個 partition 隨時被掛載,可以設定為 noauto。 auto一般來說,如果你的 NFS 服務器所提供的只是類似 /home 底下的個人資料, 應該不需要可執行、SUID 與裝置檔案,因此當你在掛載的時候,可以這樣下達指令喔: ``` [root@clientlinux ~]# umount /home/nfs/public [root@clientlinux ~]# mount -t nfs -o nosuid,noexec,nodev,rw \ > 192.168.100.254:/home/public /home/nfs/public [root@clientlinux ~]# mount | grep addr 192.168.100.254:/home/public on /home/nfs/public type nfs (rw,noexec,nosuid, nodev,vers=4,addr=192.168.100.254,clientaddr=192.168.100.10) ``` 這樣一來你所掛載的這個文件系統就只能作為資料存取之用,相對來說,對于客戶端是比較安全一些的。 所以說,這個 nosuid, noexec, nodev 等等的參數可得記得啊! - 關于 NFS 特殊的掛載參數 除了上述的 mount 參數之外,其實針對 NFS 服務器,咱們的 Linux 還提供不少有用的額外參數喔!這些特殊參數還非常有用呢! 為什么呢?舉例來說,由于文件系統對 Linux 是非常重要的東西,因為我們進行任何動作時,只要有用到文件系統, 那么整個目錄樹系統就會主動的去查詢全部的掛載點。如果你的 NFS 服務器與客戶端之間的聯機因為網絡問題, 或者是服務器端先關機了,卻沒有通知客戶端,那么客戶端只要動到文件系統的指令 (例如 df, ls, cp 等等) ,整個系統就會慢到爆!因為你必須要等到文件系統搜尋等待逾時后,系統才會饒了你!(鳥哥等過 df 指令 30 分鐘過...) 為了避免這些困擾,我們還有一些額外的 NFS 掛載參數可用!例如: 參數 參數功能 預設參數fg bg 當執行掛載時,該掛載的行為會在前景 (fg) 還是在背景 (bg) 執行? 若在前景執行時,則 mount 會持續嘗試掛載,直到成功或 time out 為止,若為背景執行, 則 mount 會在背景持續多次進行 mount ,而不會影響到前景的程序操作。 如果你的網絡聯機有點不穩定,或是服務器常常需要開關機,那建議使用 bg 比較妥當。 fgsoft hard 如果是 hard 的情況,則當兩者之間有任何一部主機脫機,則 RPC 會持續的呼叫,直到對方恢復聯機為止。如果是 soft 的話,那 RPC 會在 time out 后『重復』呼叫,而非『持續』呼叫, 因此系統的延遲會比較不這么明顯。同上,如果你的服務器可能開開關關,建議用 soft 喔! hardintr 當你使用上頭提到的 hard 方式掛載時,若加上 intr 這個參數, 則當 RPC 持續呼叫中,該次的呼叫是可以被中斷的 (interrupted)。 沒有rsize wsize 讀出(rsize)與寫入(wsize)的區塊大小 (block size)。 這個設定值可以影響客戶端與服務器端傳輸數據的緩沖記憶容量。一般來說, 如果在局域網絡內 (LAN) ,并且客戶端與服務器端都具有足夠的內存,那這個值可以設定大一點, 比如說 32768 (bytes) 等,提升緩沖記憶區塊將可提升 NFS 文件系統的傳輸能力! 但要注意設定的值也不要太大,最好是達到網絡能夠傳輸的最大值為限。 rsize=1024 wsize=1024更多的參數可以參考 man nfs 的輸出數據喔! 通常如果你的 NFS 是用在高速運作的環境當中的話,那么可以建議加上這些參數的說: ``` [root@clientlinux ~]# umount /home/nfs/public [root@clientlinux ~]# mount -t nfs -o nosuid,noexec,nodev,rw \ > -o bg,soft,rsize=32768,wsize=32768 \ > 192.168.100.254:/home/public /home/nfs/public ``` 則當你的 192.168.100.254 這部服務器因為某些因素而脫機時,你的 NFS 可以繼續在背景當中重復的呼叫! 直到 NFS 服務器再度上線為止。這對于系統的持續操作還是有幫助的啦! 當然啦,那個 rsize 與 wsize 的大小則需要依據你的實際網絡環境而定喔! **Tips:** 在鳥哥的實際案例中,某些大型的模式運算并不允許 soft 這個參數喔!舉例來說,鳥哥慣用的 CMAQ 空氣質量模式, 這個模式的叢集架構分享文件系統中,就不允許使用 soft 參數!這點需要特別留意喔! ![](https://box.kancloud.cn/2016-05-13_5735736501917.gif) - 將 NFS 開機即掛載 我們知道開機就掛載的掛載點與相關參數是寫入 /etc/fstab 中的,那 NFS 能不能寫入 /etc/fstab 當中呢?非常可惜的是, 不可以呢!為啥呢?分析一下開機的流程,我們可以發現網絡的啟動是在本機掛載之后,因此當你利用 /etc/fstab 嘗試掛載 NFS 時,系統由于尚未啟動網絡,所以肯定是無法掛載成功的啦!那怎辦?簡單!就寫入 /etc/rc.d/rc.local 即可! ``` [root@clientlinux ~]# vim /etc/rc.d/rc.local mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 \ 192.168.100.254:/home/public /home/nfs/public ``` - - - - - - ### 13.3.3 無法掛載的原因分析 如果客戶端就是無法掛載服務器端所分享的目錄時,到底是發生什么問題?你可以這樣分析看看: - 客戶端的主機名或 IP 網段不被允許使用: 以上面的例子來說明,我的 /home/test 只能提供 192.168.100.0/24 這個網域,所以如果我在 192.168.100.254 這部服務器中,以 localhost (127.0.0.1) 來掛載時,就會無法掛載上,這個權限概念沒問題吧!不然你可以在服務器上試試看: ``` [root@www ~]# mount -t nfs localhost:/home/test /mnt mount.nfs: access denied by server while mounting localhost:/home/test ``` 看到 access denied 了吧?沒錯啦~權限不符啦!如果確定你的 IP 沒有錯誤,那么請通知服務器端,請管理員將你的 IP 加入 /etc/exports 這個檔案中。 - 服務器或客戶端某些服務未啟動: 這個最容易被忘記了!就是忘記了啟動 rpcbind 這個服務啦!如果你在客戶端發現 mount 的訊息是這樣: ``` [root@clientlinux ~]# mount -t nfs 192.168.100.254:/home/test /mnt mount: mount to NFS server '192.168.100.254' failed: System Error: Connection refused. # 如果你使用 ping 卻發現網絡與服務器都是好的,那么這個問題就是 rpcbind 沒有開啦! [root@clientlinux ~]# mount -t nfs 192.168.100.254:/home/test /home/nfs mount: mount to NFS server '192.168.100.254' failed: RPC Error: Program not registered. # 注意看最后面的數據,確實有連上 RPC ,但是服務器的 RPC 告知我們,該程序無注冊 ``` 要嘛就是 rpcbind 忘記開 (第一個錯誤),要嘛就是服務器端的 nfs 忘記開。最麻煩的是, 重新啟動了 rpcbind 但是卻忘記重新啟動其他服務 (上述第二個錯誤)!解決的方法就是去重新啟動 rpcbind 管理的其他所有服務就是了! - 被防火墻檔掉了: 由于 NFS 幾乎不對外開放,而內部網域又通常是全部的資源都放行,因此過去玩 NFS 的朋友 (包括鳥哥本人啦!) 都沒有注意過 NFS 的防火墻問題。最近這幾年鳥哥在管理計算機教室時,有掌管一部計算機教室主控防火墻, 為了擔心太厲害的學生給鳥哥亂搞,因此該 Linux 防火墻預設是僅放行部分資源而已。但由于計算機教室的區網內需要用到 Linux 的 NFS 資源,結果呢?竟然沒辦法放行啊!原來就是 iptables 沒有放行 NFS 所使用到的埠口~ 所以,當你一直無法順利的連接 NFS 服務器,請先到服務器端,將客戶端的 IP 完全放行,若確定這樣就連的上, 那代表就是防火墻有問題啦!怎么解決呢?上一小節介紹過了,參考將 NFS 服務器埠口固定的方式吧! - - - - - - ### 13.3.4 自動掛載 autofs 的使用 在一般 NFS 文件系統的使用情況中,如果客戶端要使用服務器端所提供的 NFS 文件系統時,要嘛就是得在 /etc/rc.d/rc.local 當中設定開機時掛載,要嘛就得要登入系統后手動利用 mount 來掛載。 此外,客戶端得要預先手動的建立好掛載點目錄,然后掛載上來。但是這樣的使用情況恐怕有點小問題。 - NFS 文件系統與網絡聯機的困擾: 我們知道 NFS 服務器與客戶端的聯機或許不會永遠存在,而 RPC 這個服務又挺討厭的,如果掛載了 NFS 服務器后,任何一方脫機都可能造成另外一方老是在等待逾時~而且,掛載的 NFS 文件系統可能又不是常常被使用,但若不掛載的話,有時候緊急要使用時又得通知系統管理員, 這又很不方便...啊!好討厭的感覺啊~@\_@ 所以,讓我們換個思考的角度來討論一下使用 NFS 的情境: - 可不可以讓客戶端在有使用到 NFS 文件系統的需求時才讓系統自動掛載? - 當 NFS 文件系統使用完畢后,可不可以讓 NFS 自動卸除,以避免可能的 RPC 錯誤? 如果能達到上述的功能,那就太完美啦!有沒有這東西呢?有的,在現在的 Linux 環境下這是可以達成的理想!用的就是 autofs 這個服務啦! - autofs 的設定概念: autofs 這個服務在客戶端計算機上面,會持續的偵測某個指定的目錄, 并預先設定當使用到該目錄下的某個次目錄時,將會取得來自服務器端的 NFS 文件系統資源,并進行自動掛載的動作。 講這樣或許你有點模糊,讓我們拿底下這個圖示來看看: ![](https://box.kancloud.cn/2016-05-13_5735da7217481.gif) 圖 13.3-1、autofs 自動掛載的配置文件內容示意圖 如上圖所示,我們的 autofs 主要配置文件為 /etc/auto.master,這個檔案的內容很簡單, 如上所示,我只要定義出最上層目錄 (/home/nfsfile) 即可,這個目錄就是 autofs 會一直持續偵測的目錄啦。 至于后續的檔案則是該目錄底下各次目錄的對應。在 /etc/auto.nfs (這個檔案的檔名可自定義) 里面則可以定義出每個次目錄所欲掛載的遠程服務器的 NFS 目錄資源! 舉例來說:『當我們在客戶端要使用 /home/nfsfile/public 的數據時,此時 autofs 才會去 192.168.100.254 服務器上掛載 /home/public !』且『當隔了 5 分鐘沒有使用該目錄下的數據后,則客戶端系統將會主動的卸除 /home/nfsfile/public 』。 很不錯用的一個工具吧!因為有用到服務器的數據時才自動掛載,沒有使用了就會自動卸除! 而不是傳統的情況一直是掛載的!既然這么好用,那就讓我們實際來操演一下: - 建立主配置文件 /etc/auto.master ,并指定偵測的特定目錄 這個主要配置文件的內容很簡單,只要有要被持續偵測的目錄及『數據對應文件』即可。 那個數據對應文件的文件名是可以自行設定的,在鳥哥這個例子當中我使用 /etc/auto.nfs 來命名。 ``` [root@clientlinux ~]# vim /etc/auto.master /home/nfsfile /etc/auto.nfs ``` 上述數據中比較需要注意的是,那個 /home/nfsfile 目錄不需要存在,因為 autofs 會主動的建立該目錄! 如果你建立了,可能反而會出問題~因此,先確定一下沒有該目錄吧! - 建立數據對應文件內 (/etc/auto.nfs) 的掛載信息與服務器對應資源 剛剛我們所指定的 /etc/auto.nfs 是自行設定的,所以這個檔案是不存在的。那么這個檔案的格式是如何呢?你可以這樣看: ``` [本地端次目錄] [-掛載參數] [服務器所提供的目錄] 選項與參數: [本地端次目錄] :指的就是在 /etc/auto.master 內指定的目錄之次目錄 [-掛載參數] :就是前一小節提到的 rw,bg,soft 等等的參數啦!可有可無; [服務器所提供的目錄] :例如 192.168.100.254:/home/public 等 [root@clientlinux ~]# vim /etc/auto.nfs public -rw,bg,soft,rsize=32768,wsize=32768 192.168.100.254:/home/public testing -rw,bg,soft,rsize=32768,wsize=32768 192.168.100.254:/home/test temp -rw,bg,soft,rsize=32768,wsize=32768 192.168.100.254:/tmp # 參數部分,只要最前面加個 - 符號即可! ``` 這樣就可以建立對應了!要注意的是,那些 /home/nfsfile/public 是不需要事先建立的! 咱們的 autofs 會事情況來處理喔!好了,接下來讓我們看看如何實際運作吧! - 實際運作與觀察 配置文件設定妥當后,當然就是要啟動 autofs 啦! ``` [root@clientlinux ~]# /etc/init.d/autofs stop [root@clientlinux ~]# /etc/init.d/autofs start # 很奇怪!非常怪!CentOS 6.x 的 autofs 使用 restart 會失效!所以鳥哥才進行兩次 ``` 假設你目前并沒有掛載任何來自 192.168.100.254 這部 NFS 服務器的資源目錄。好了, 那讓我們實際來觀察看看幾個重要的數據吧!先看看 /home/nfsfile 會不會主動的被建立? 然后,如果我要進入 /home/nfsfile/public 時,文件系統會如何變化呢? ``` [root@clientlinux ~]# ll -d /home/nfsfile drwxr-xr-x. 2 root root 0 2011-07-28 00:07 /home/nfsfile # 仔細看,妳會發現 /home/nfsfile 容量是 0 喔!那是正常的!因為是 autofs 建立的 [root@clientlinux ~]# cd /home/nfsfile/public [root@clientlinux public]# mount | grep nfsfile 192.168.100.254:/home/public on /home/nfsfile/public type nfs (rw,soft,rsize=32768, wsize=32768,sloppy,vers=4,addr=192.168.100.254,clientaddr=192.168.100.10) # 上面的輸出是同一行!瞧!突然出現這個玩意兒!因為是自動掛載的嘛! [root@clientlinux public]# df /home/nfsfile/public 文件系統 1K-區段 已用 可用 已用% 掛載點 192.168.100.254:/home/public 7104640 143104 6607040 3% /home/nfsfile/public # 檔案的掛載也出現沒錯! ``` 呵呵!真是好啊!如此一來,如果真的有需要用到該目錄時,系統才會去相對的服務器上面掛載! 若是一陣子沒有使用,那么該目錄就會被卸除呢!這樣就減少了很多不必要的使用時機啦!還不錯用吧! ^\_^ - - - - - -
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看