天天看點

NFS部署

 NFS 是Network File System的縮寫,即網絡檔案系統。一種使用于分散式檔案系統的協定,由Sun公司開發,于1984年向外公布。功能是通過網絡讓不同的機器、不同的作業系統能夠彼此分享個别的資料,讓應用程式在用戶端通過網絡通路位于伺服器磁盤中的資料,是在類Unix系統間實作磁盤檔案共享的一種方法。

 NFS在檔案傳送或資訊傳送過程中依賴于RPC協定。RPC,遠端過程調用 (Remote Procedure Call) 是能使用戶端執行其他系統中程式的一種機制。NFS本身是沒有提供資訊傳輸的協定和功能的,但NFS卻能讓我們通過網絡進行資料的分享,這是因為NFS使用了一些其它的傳輸協定。而這些傳輸協定用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程式。或者說NFS也是一個RPC SERVER。是以隻要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實作PROGRAM PORT的對應。可以這麼了解RPC和NFS的關系:NFS是一個檔案系統,而RPC是負責負責資訊的傳輸。

<a href="http://wiki.jikexueyuan.com/project/linux/nfs.html" target="_blank">http://wiki.jikexueyuan.com/project/linux/nfs.html</a>

<a href="https://www.freebsd.org/doc/zh_CN.UTF-8/books/handbook/network-nfs.html" target="_blank">https://www.freebsd.org/doc/zh_CN.UTF-8/books/handbook/network-nfs.html</a>

<a href="http://www.zhukun.net/archives/7096" target="_blank">http://www.zhukun.net/archives/7096</a>

伺服器端和用戶端:

<code>$ yum install nfs-utils portmap  (适用centos 5)</code>

<code>$ yum install nfs-utils rpcbind  (适用centos 6)</code>

線上上機器隻需要執行$ yum install nfs-utils,rpcbind會自動安裝

如果用戶端不安裝,會報錯如下

用戶端nfs-utils,執行yum install nfs-utils -y

如果不安裝,會報錯如下

mount: wrong fs type, bad option, bad superblock on 10.76.174.182:/opt/meituan/nfsattachment,

       missing codepage or helper program, or other error

       (for several filesystems (e.g. nfs, cifs) you might

       need a /sbin/mount.&lt;type&gt; helper program)

       In some cases useful info is found in syslog - try

       dmesg | tail  or so

伺服器端:

主配置檔案/etc/exports

$ su - sankuai 

 $ vi /etc/exports      //在此檔案中輸入一下内容

/opt/meituan/poslog cq-icb-h-posmonitor-staging01(rw,sync,fsid=0,anonuid=500,anongid=500)

/opt/meituan/poslog cq-icb-h-posmonitormanage-staging01(rw,sync,fsid=0,anonuid=500,anongid=500)

這個配置檔案就這樣簡單一行。共分為三部分,第一部分就是本地要共享出去的目錄,第二部分為允許通路的主機(可以是一個IP也可以是一個IP段)第三部分就是小括号裡面的,為一些權限選項。

rw:read-write,可讀寫;

ro:read-only,隻讀;

sync:同步寫入(檔案同時寫入硬碟和記憶體),适用在通信比較頻繁且實時性比較高的場合

async:異步寫入(檔案先寫入記憶體,稍候再寫入硬碟),性能較好(速度快),适合超大或者超多檔案的寫入,但有資料丢失的風險,比如突然斷電等情況;

root_squash(預設):将來訪的root使用者映射為匿名使用者或使用者組;

no_root_squash:來訪的root使用者保持root帳号權限(可能會不安全);

no_all_squash(預設):通路使用者先與本機使用者比對,比對失敗後再映射為匿名使用者或使用者組;

all_squash:将來訪的所有使用者映射為匿名使用者或使用者組;

secure(預設):限制用戶端隻能從小于1024的tcp/ip端口連接配接伺服器;

insecure:允許用戶端從大于1024的tcp/ip端口連接配接伺服器;

anonuid:匿名使用者的UID值,通常是nobody或nfsnobody,可以在此處自行設定;

anongid:匿名使用者的GID值;

no_subtree_check:如果NFS輸出的是一個子目錄,則無需檢查其父目錄的權限(可以提高效率)

 $ chkconfig rpcbind on       //設定開機自啟動

 $ chkconfig nfs on               //設定開機自啟動

 $ service rpcbind start         //啟動rpcbind服務,NFS是依托rpcbind的,是以首先要啟動rpcbind,然後啟動NFS才能使剛才的配置生效。啟動完NFS後,就該使用NFS服務了。

 $ service nfs start                //啟動nfs服務

 $ showmount -e localhost   //用shoumount -e 加伺服器IP就可以檢視NFS的共享情況

  $ showmount  -a                 //把連接配接本機的NFS的client全部列出。   

格式:mount [- t nfs] [-o 選項] 伺服器IP:共享的目錄 本地目錄 

NFS預設是用UDP協定,也可以加上-o proto=tcp換成TCP協定。

<a href="http://www.jianshu.com/p/cfa02764d19e" target="_blank">http://www.jianshu.com/p/cfa02764d19e</a>

解決因服務端移除目錄再恢複時,用戶端報錯,此類問題的正常思路是:

1.解除安裝目錄 <code>umount -f /home/log/dir</code>

然而通常情況下,因為用戶端挂載的目錄會被其他程序打開,導緻我們在解除安裝目錄的時候通常不能成功,那麼成功解除安裝目錄也有以下步驟:

1.檢視哪些程序占用檔案目錄: <code>fuser -mu /mnt</code>

2.kill掉這些占用檔案目錄的程序:<code>kill -9 xxxx</code>

3.解除安裝目錄:<code>umount -f /home/log/dir</code>

運氣不太好的時候,當還有未知應用程序在操作檔案目錄,上述步驟也是不成功的,這個時候就要使用炒雞解除安裝方式<code>umount -l</code>

1.使用lazy解除安裝:<code>umount -l /home/log/dir</code>

解釋下umount lazy:

     umount -l #umount lazy

     當不知道是什麼應用操作了檔案目錄,使用umount -f也無法成功的時候,使用umount -l ,umount會等待應用操作檔案系統,直到檔案系統可以被解除安裝為止,即umount -l并不是立刻清除所有挂載操作,它的特點是一直等待;

修改配置檔案/etc/exports 如何生效

exportfs -rv  等價于 /etc/init.d/nfs reload 加載配置生效(當修改了/etc/exports時執行)

-a 打開或取消所有目錄共享。 

-o options,...指定一列共享選項,與 exports(5) 中講到的類似。

 -i 忽略 /etc/exports 檔案,進而隻使用預設的和指令行指定的選項。 

-r 重新共享所有目錄。它使 /var/lib/nfs/xtab 和 /etc/exports 同步。 它将 /etc/exports 中已删除的條目從 /var/lib/nfs/xtab 中删除,将核心共享表中任何不再有效的條目移除。 

-u 取消一個或多個目錄的共享。 

-f 在“新”模式下,重新整理核心共享表之外的任何東西。 任何活動的客戶程式将在它們的下次請求中得到 mountd添加的新的共享條目。 

-v 輸出詳細資訊。當共享或者取消共享時,顯示在做什麼。 顯示目前共享清單的時候,同時顯示共享的選項。

      本文轉自Tenderrain 51CTO部落格,原文連結:http://blog.51cto.com/tenderrain/1975268,如需轉載請自行聯系原作者

繼續閱讀