教你快速搭建NFS服務

NFS

介紹

NFS就是Network File System的縮寫,它最大的功能就是能夠經過網絡,讓不一樣的機器、不一樣的操做系統能夠共享彼此的文件。node

​NFS服務器可讓PC將網絡中的NFS服務器共享的目錄掛載到本地端的文件系統中,而在本地端的系統中來看,那個遠程主機的目錄就好像是本身的一個磁盤分區同樣,在使用上至關便利;shell

NFS通常用來存儲共享視頻,圖片等靜態數據;NFS 協議默認是不加密的,它不像 Samba,它不提供用戶身份鑑別。服務端經過限定客戶端的 IP 地址和端口來限制訪問。vim

原理

NFS在文件傳送或信息傳送的過過程當中,依賴於RPC協議。RPC,遠程過程調用(Remote Procedure Call),是使客戶端可以執行其餘系統中程序的一種機制。NFS自己是沒有提供信息傳輸的協議和功能的,但NFS卻能讓咱們經過網絡進行資料的分享,就是由於NFS使用了RPC提供的傳輸協議,能夠說NFS就是使用PRC的一個程序服務器

nfs

  1. 首先服務器端啓動RPC服務,並開啓111端口
  2. 服務器端啓動NFS服務,並向RPC註冊端口信息
  3. 客戶端啓動RPC(portmap服務),向服務端的RPC(portmap)服務請求服務端的NFS端口
  4. 服務端的RPC(portmap)服務反饋NFS端口信息給客戶端。
  5. 客戶端經過獲取的NFS端口來創建和服務端的NFS鏈接並進行數據的傳輸

注意: 在啓動NFS SERVER以前,首先要啓動RPC服務(即portmap服務,下同)不然NFS SERVER就沒法向RPC服務區註冊,另外,若是RPC服務從新啓動,原來已經註冊好的NFS端口數據就會所有丟失。所以此時RPC服務管理的NFS程序也要從新啓動以從新向RPC註冊。網絡

特別注意:通常修改NFS配置文檔後,是不須要重啓NFS的,直接在命令執行systemctl reload nfs或exportfs –rv便可使修改的/etc/exports生效async

適用場景

  • NFS 最好是部署在局域網 ,不要在公網上 ;分佈式

  • 適合在中小型企業使用;大型網站不會用 NFS 的, 用的都是 分佈式存儲網站

安裝

NFS服務端

安裝nfs-kernel-server:
$ sudo apt install nfs-kernel-server加密

NFS客戶端

安裝 nfs-common:
$ sudo apt install nfs-common操作系統

配置

服務端配置

  1. 建立共享目錄

    sudo mkdir -p /var/nfs/sharedir

  2. 配置 /etc/exports (NFS掛載目錄及權限由/etc/exports文件定義)

    格式: 共享目錄的路徑 容許訪問的NFS客戶端(共享權限參數)
    
    參數:
    - ro 只讀
    - rw 讀寫
    - root_squash 當NFS客戶端以root管理員訪問時,映射爲NFS服務器的匿名用戶
    - no_root_squash 當NFS客戶端以root管理員訪問時,映射爲NFS服務器的root管理員
    - all_squash 不管NFS客戶端使用什麼帳戶訪問,均映射爲NFS服務器的匿名用戶
    - sync 同時將數據寫入到內存與硬盤中,保證不丟失數據
    - async 優先將數據保存到內存,而後再寫入硬盤;這樣效率更高,但可能會丟失數據
    
    請注意,NFS客戶端地址與權限之間沒有空格
    • 好比要將/var/nfs/sharedir目錄共享, 則在該文件末尾添加下列語句:
      /home/lin/NFSshare 192.168.66.*(rw,sync,no_root_squash)

      /var/nfs/sharedir *(rw,sync,no_root_squash,no_subtree_check)

    • 要限制客戶端IP, 添加下列語句:

      /var/nfs/sharedir 122.111.222.111(rw,sync,no_subtree_check)

    • 共享目錄爲/public , 容許訪問的客戶端爲192.168.245.0/24網絡用戶,權限爲只讀

      /public 192.168.245.0/24(ro)

  3. 從新加載 nfs-kernel-server 配置:

    $ sudo systemctl reload nfs-kernel-server

客戶端配置

  1. 使用showmount 命令查看nfs服務器共享信息。

    輸出格式爲「共享的目錄名稱 容許使用客戶端地址」。
    showmount命令參數:

    • -a :顯示目前主機與客戶端的 NFS 聯機分享的狀態;
    • -e :顯示/etc/exports 所分享的目錄數據。
    user@k8s-node-01:~$ showmount -e 192.168.249.5
    Export list for 192.168.249.5:
    /var/nfs/sharedir *
  2. 在客戶端建立目錄,並掛載共享目錄

    $ sudo mkdir -p /mnt/nfs_sharedir

  3. 掛載遠程共享目錄:

    $ sudo mount your_nfs_server_ip:/var/nfs/sharedir /mnt/nfs_sharedir

    e.g. sudo mount 192.168.249.5:/var/nfs/sharedir /mnt/nfs_sharedir

    • 編輯fstab文件, 使系統每次啓動時都能自動掛載

      $ sudo vim /etc/fstab

    添加以下:

    your_nfs_server_Ip:/var/nfs/sharedir /mnt/nfs_sharedir nfs defaults 0 0

  4. 檢查客戶端掛載狀態

    df

  5. 卸載遠程掛載

    $ sudo umount /mnt/nfs_sharedir

相關文章
相關標籤/搜索