<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>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 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) &lt;==這是等一下我們要掛載的目錄 ``` 接下來我想要將遠程主機的 /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 \ &gt; /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 ?那就不要學人家架站嘛!@_@! 趕緊回去基礎學習篇第三版復習一下第十七章、程序與資源管理啦! | suid | | rw ro | 你可以指定該文件系統是只讀 (ro) 或可擦寫喔!服務器可以提供給你可擦寫, 但是客戶端可以僅允許只讀的參數設定值! | rw | | dev nodev | 是否可以保留裝置檔案的特殊功能?一般來說只有 /dev 這個目錄才會有特殊的裝置,因此你可以選擇 nodev 喔! | dev | | exec noexec | 是否具有執行 binary file 的權限? 如果你想要掛載的僅是數據區 (例如 /home),那么可以選擇 noexec 啊! | exec | | user nouser | 是否允許使用者進行檔案的掛載與卸除功能? 如果要保護文件系統,最好不要提供使用者進行掛載與卸除吧! | nouser | | auto 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 \ &gt; 192.168.100.254:/home/public /home/nfs/public [root@clientlinux ~]# mount &#124; 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 比較妥當。 | fg | | soft hard | 如果是 hard 的情況,則當兩者之間有任何一部主機脫機,則 RPC 會持續的呼叫,直到對方恢復聯機為止。如果是 soft 的話,那 RPC 會在 time out 后『重復』呼叫,而非『持續』呼叫, 因此系統的延遲會比較不這么明顯。同上,如果你的服務器可能開開關關,建議用 soft 喔! | hard | | intr | 當你使用上頭提到的 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 \ &gt; -o bg,soft,rsize=32768,wsize=32768 \ &gt; 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 &#124; 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>

                              哎呀哎呀视频在线观看