Linux nfs服務介紹


nfs服務介紹

  1. nfs(Network File System) 網絡文件系統,能使用戶訪問服務器的文件系統,就像訪問自己的本機的文件系統一樣,並且多個
    客戶端共享訪問該文件系統。
  2. 目前nfs服務,較為流行的兩個nfs的組件為:nfsd,nfs-ganesha。前者linux為系統自帶的內核態的文件系統,后者是開源的用戶空間的文件
    系統。因為nfs-ganesha運行在用戶態,nfsd運行在內核態,所以nfs-ganesha具有內存分配靈活,可移植性更好,更方便擴展等優勢。
    缺點是nfs-ganesha目前的穩定性還不如nfsd。

如何搭建nfsd和nfs-ganesha服務

機器環境為centos7,由於兩者都使用2049端口,因此一台服務器上,只能跑其中之一.

  1. 搭建nfsd服務
    A. 檢查是否安裝rpcbind和nfs-utils軟件
    rpm -qa | grep rpcbind nfs-utils

    B. 如果上面兩個軟件沒有安裝,需要安裝這兩個軟件
    yum install -y rpcbind nfs-utils

    C. 啟動B中安裝的軟件
    systemctl start rpcbind && systemctl enable rpcbind
    systemctl start nfs && systemctl enable nfs

    D. 配置nfs權限文件
    配置權限可以直接修改/etc/exports文件,也可以在/etc/exports.d目錄下,添加*.exports文件。
    文件內容格式為:目錄 IP/IP網段(nfs選項)
    文件內容每一個權限的占用一行,選項一般使用較多的搭配項為,rw/ro,sync,no_root_squash,rw表示讀寫,ro表示只讀
    sync,表示數據寫入到內存和硬盤,保證數據不會丟失,當客戶端用root身份掛載時候,nfs服務器將其映射為root用戶.

    E. 執行權限的加載 命令,exportfs -rav 執行這個命令,並不需要去重啟nfs服務。

    F. 客戶端使用如下命令去掛載,172.16.0.1表示服務器的ip地址,vers 代表協議類型,支持3,4,4.1等,/mnt表示服務器的
    共享目錄,/tmp為本地目錄
    mount -t nfs 172.16.0.1:/mnt /tmp -o vers=4

    G. 掛載成功后,使用df命令,nfs4所在的哪一行為掛載的nfs文件系統

    然后就可以,cd /tmp,對這個目錄下進行讀寫文件等操作了,
    至此nfsd服務全部搭建完畢。

    H. 查看nfs的日志,在系統日志/var/log/messages中,可以用vim打開,搜索nfs關鍵字。

  2. nfs-ganesha搭建
    A. 從github下載nfs-ganesha,按照官網給的編譯文檔進行編譯,並將相應的二進制ganesha.nfsd ,拷貝/usr/bin/目錄下

    B. 配置nfs-ganesha的systemd服務,從nfs-ganesha/src/scripts/systemd目錄下,將nfs-ganesha-lock.service.el7,nfs-ganesha.service.el7
    拷貝到目錄/usr/lib/systemd/system,並去掉后綴el7,然后執行命令systemctl daemon-reload

    C.配置nfs-ganesha的配置文件,/etc/ganesha/ganesha.conf內容大概如下,
    EXPORT
    {

    Export Id (mandatory, each EXPORT must have a unique Export_Id)

    Export_Id = 12345;

    Exported path (mandatory)

    Path = /mnt;

    Pseudo Path (required for NFSv4 or if mount_path_pseudo = true)

    Pseudo = /mnt;

    Restrict the protocols that may use this export. This cannot allow

    access that is denied in NFS_CORE_PARAM.

    Protocols = 3,4;

    Access type for clients. Default is None, so some access must be

    given. It can be here, in the EXPORT_DEFAULTS, or in a CLIENT block

    Access_Type = RW;

    Whether to squash various users.

    Squash = no_root_squash;

    Allowed security types for this export

    Sectype = sys,krb5,krb5i,krb5p;

    Exporting FSAL

    FSAL {
    Name = VFS;
    }
    }
    具體配置可以參照,github文檔

    D. 啟動nfs-ganesha服務,執行systemctl start nfs-ganesha,
    然后檢查nfs-ganesha狀態,執行systemctl reload nfs-ganesha,

    E. client掛載與nfsd client掛載方式一樣,掛載成功后,說明nfs-ganesha搭建完成

nfs服務常見異常問題解決辦法

1.  當nfs 服務器宕機或者nfs服務掛掉時,客戶端未進行正常的umount,這時候客戶端執行df命令,或者cd 到掛載路徑,
   client會hang住,客戶端可以執行 umount 掛載路徑 -fl

2.  當客戶端在服務器的授權正常時,client mount不了服務器的目錄,可以在服務器的/var/log/messages中查下,是不是
     nfsd最大塊的問題,就是當前nfsd支持傳輸的最大塊大小,不能滿足client傳輸的塊大小,
     實質上就是nfsd設置的塊大小過小,
     解決辦法是:在nfs服務器上執行,echo 1048576 > /proc/fs/nfsd/max_block_size
     內核目前支持的最大塊大小為1M


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM