NFS

来源:https://www.cnblogs.com/shenxm/archive/2018/02/22/8459137.html
-Advertisement-
Play Games

NFS介紹 NFS RPC NFS 優勢 NFS服務介紹 NFS配置 NFS的軟體包nfs utils以及相關文件 配置防火牆 NFS配置文件 NFS配置示例 啟動NFS 客戶端NFS掛載 自動掛載 直接匹配 實現NFS服務 實現NFS偽根 NFS相關SELinux 設置 NFS工具 ...


NFS介紹

NFS

    Network File System 網路文件系統,基於內核的文件系統。
    Sun 公司開發,通過使用NFS,用戶和程式可以像訪問本地文件一樣訪問遠端系統上的文件,主要是基於RPC (RemoteProcedure Call Protocol 遠程過程調用)實現。
    NFS服務啟動時至少需要兩個daemons,一個管理客戶端是否能夠登入的問題,一個管理客戶端能夠取得的許可權。

RPC

    採用C/S 模式。
    RPC通過函數調用一部分功能由本地程式完成,另一部分功能由遠程主機上的函數完成,兩者共同完成資源的分享。
    客戶機請求程式調用進程發送一個有進程參數的調用信息到服務進程,然後等待應答信息。
    在伺服器端,進程保持睡眠狀態直到調用信息到達為止,當一個調用信息到達,伺服器獲得進程參數,計算結果,發送答覆信息,然後等待下一個調用信息,最後,客戶端調用進程接收答覆信息,獲得進程結果,然後調用執行繼續進行。
    RPC最主要的功能就是在指定每個NFS功能所對應的埠號,並且將埠反饋給客戶端,讓客戶端可以連結到正確的埠上去。
    當伺服器在啟動NFS時會隨機取用數個埠,並主動的向RPC註冊,因此RPC可以知道每個埠對應的NFS功能,然後RPC又是固定使用埠111來監聽客戶端的需求並向客戶端反饋對應的埠,因此NFS的啟動必須在PRC相關服務之後,否則NFS的啟動是會報錯的。

NFS 優勢

    節省本地存儲空間,將常用的數據如:home 目錄,存放在一臺NFS 伺服器上且可以通過網路訪問,那麼本地終端將可以減少自身存儲空間的使用

NFS服務介紹

    軟體包:nfs-utils
    相關軟體包:rpcbind (必須),tcp_wrappers
    Kernel支持:nfs.ko
    埠:2049(nfsd),其它埠由portmap(111)分配
    配置文件:/etc/exports,/etc/exports.d/*.exports
    日誌:/var/lib/nfs/
    CentOS7 不支持同一目錄同時用nfs 和samba 共用,因為使用鎖機制不同
    CentOS6 開始portmap 進程由rpcbind 代替
    NFS 服務主要進程:
        rpc.nfsd    最主要的NFS 進程,管理客戶端是否可登錄
        rpc.mountd      掛載和卸載NFS 文件系統,包括許可權管理
        rpc.lockd   非必要,管理文件鎖,避免同時寫出錯
        rpc.statd   非必要,檢查文件一致性,可修複文件
    要在客戶端向NFS伺服器端的文件系統寫入操作是,需要具有:
        NFS伺服器有開放可寫入(w)的許可權(與/etc/exports設置有關)
        實際的文件許可權具有可寫入(w)的許可權

NFS配置

NFS的軟體包nfs-utils以及相關文件

    rpm -ql nfs-utils(centos7)
        /etc/exports.d
        /etc/gssproxy/24-nfs-server.conf
        /etc/modprobe.d/lockd.conf
        /etc/nfs.conf
        /etc/nfsmount.conf
        /etc/request-key.d/id_resolver.conf
        /etc/sysconfig/nfs
        /sbin/mount.nfs
        /sbin/mount.nfs4
        /sbin/osd_login
        /sbin/rpc.statd
        /sbin/umount.nfs
        /sbin/umount.nfs4
        /usr/sbin/blkmapd
        /usr/sbin/exportfs
        /usr/sbin/mountstats
        /usr/sbin/nfsdcltrack
        /usr/sbin/nfsidmap
        /usr/sbin/nfsiostat
        /usr/sbin/nfsstat
        /usr/sbin/rpc.gssd
        /usr/sbin/rpc.idmapd
        /usr/sbin/rpc.mountd
        /usr/sbin/rpc.nfsd
        /usr/sbin/rpcdebug
        /usr/sbin/showmount
        /usr/sbin/sm-notify
        /usr/sbin/start-statd
        /usr/share/doc/nfs-utils-1.3.0/
        /var/lib/nfs
        /var/lib/nfs/etab
        /var/lib/nfs/rmtab
        /var/lib/nfs/rpc_pipefs
        /var/lib/nfs/statd
        /var/lib/nfs/statd/sm
        /var/lib/nfs/statd/sm.bak
        /var/lib/nfs/state
        /var/lib/nfs/v4recovery
        /var/lib/nfs/xtab
    rpm -ql nfs-utils(centos6)
        /etc/nfsmount.conf
        /etc/rc.d/init.d/nfs
        /etc/rc.d/init.d/nfslock
        /etc/rc.d/init.d/rpcgssd
        /etc/rc.d/init.d/rpcidmapd
        /etc/rc.d/init.d/rpcsvcgssd
        /etc/request-key.d/id_resolver.conf
        /etc/sysconfig/nfs
        /sbin/mount.nfs
        /sbin/mount.nfs4
        /sbin/nfs_cache_getent
        /sbin/rpc.statd
        /sbin/umount.nfs
        /sbin/umount.nfs4
        /usr/sbin/exportfs
        /usr/sbin/mountstats
        /usr/sbin/nfsidmap
        /usr/sbin/nfsiostat
        /usr/sbin/nfsstat
        /usr/sbin/rpc.gssd
        /usr/sbin/rpc.idmapd
        /usr/sbin/rpc.mountd
        /usr/sbin/rpc.nfsd
        /usr/sbin/rpc.svcgssd
        /usr/sbin/rpcdebug
        /usr/sbin/showmount
        /usr/sbin/sm-notify
        /usr/sbin/start-statd
        /var/lib/nfs
        /var/lib/nfs/etab
        /var/lib/nfs/rmtab
        /var/lib/nfs/rpc_pipefs
        /var/lib/nfs/statd
        /var/lib/nfs/statd/sm
        /var/lib/nfs/statd/sm.bak
        /var/lib/nfs/state
        /var/lib/nfs/v4recovery
        /var/lib/nfs/xtab
    埠:
        2049(nfsd),其它埠由portmap(111)分配
    配置文件:
        /etc/exports
        /etc/exports.d/*.exports
    日誌:
        /var/lib/nfs/

配置防火牆

    配置防火牆,開放NFS 服務
    配置NFS 使用固定埠
        vim /etc/sysconfig/nfs
            RQUOTAD_PORT=875
            LOCKD_TCPPORT=32803
            LOCKD_UDPPORT=32769
            MOUNTD_PORT=892
            STATD_PORT=662
            STATD_OUTGOING_PORT=2020
        防火牆除開放上述埠,還需開放TCP 和UDP 的111 和2049共4個埠 

NFS配置文件

    /etc/exports導出的文件系統的格式:
        /dir  主機1(opt1,opt2)  主機2(opt1,opt2)...
    以#開頭的為註釋
    主機格式:
        單個主機:
            ipv4 ,ipv6 ,FQDN,
        IP networks:
            兩種掩碼格式均支持
            172.18.0.0/255.255.0.0
            172.18.0.0/16
        wildcards :
            主機名通配,例如*.magedu.com ,IP 不可以
        netgroups :
            NIS 域的主機組,@group_name
        anonymous :
            表示使用*通配所有客戶端
    每個條目指定目錄導出到的哪些主機,及相關的許可權和選項
        預設選項:(ro,sync,root_squash,no_all_squash)
        ro,rw   只讀和讀寫
        async   非同步,數據變化後不立即寫磁碟,性能高
        sync (1.0.0 後為預設)   同步,數據在請求時立即寫入共用
        no_all_squash  (預設) 保留共用文件的UID 和GID
        all_squash      所有遠程用戶( 包括root) 都變成nfsnobody
        root_squash  (預設)   遠程root 映射為nfsnobody,UID為65534,早期版本是4294967294 (nfsnobody)
        no_root_squash      遠程root 映射成root 用戶
        anonuid 和anongid    指明匿名用戶映射為特定用戶UID 和組GID ,而非nfsnobody, 可配合all_squash

NFS配置示例

    在/etc/exports 文件中定義導出目錄
        /myshare server.example.com
        /myshare *.example.com
        /myshare server?.example.com
        /myshare server[0-20].example.com
        /myshare 172.25.11.10
        /myshare 172.25.0.0/16
        /myshare 2000:472:18:b51:c32:a21
        /myshare 2000:472:18:b51::/64
        /myshare *.example.com 172.25.0.0/16
        /myshare desktop.example.com(ro)
        /myshare desktop.example.com(ro) server[0-20].example.com(rw)
        /myshare diskless.example.com(rw,no_root_squash)

啟動NFS

    NFS服務依賴於RPC,所以要先啟動RPC服務,然後再啟動NFS服務
        service rpcbind start
        service nfs start

客戶端NFS掛載

    基於安全考慮,建議使用nosuid,nodev,noexec 掛載選項
    NFS 相關的掛載選項:
        fg (預設) 前臺掛載,bg 後臺掛載
        hard (預設)   持續請求,soft  非持續請求
        intr  和hard 配合  請求可中斷
        rsize 和wsize    一次讀和寫數據最大位元組數,rsize=32768
        _netdev     無網路不掛載
        示例:
            mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/
    開機掛載:/etc/fstab
        172.16.0.1:/public /mnt/nfs nfs defaults 0 0

自動掛載

    可使用autofs 按需要掛載NFS共用,在空閑時自動卸載
    由autofs 包提供
    系統管理器指定由/etc/auto.master 自動掛載器守護進程式控制制的掛載點
    自動掛載監視器訪問這些目錄並按要求掛載文件系統
    文件系統在失活的指定間隔5 分鐘後會自動卸載
    為所有導出到網路中的NFS配啟用特殊匹配 -host 至 "browse"
    參看幫助:man 5 autofs
    支持含通配符的目錄名
        * server:/export/&

直接匹配

    直接匹配包括絕對路徑名稱
    不會影響本地目錄結構
    示例:
        /etc/auto.master:
            /-              /etc/auto.direct
        /etc/auto.direct:
            /foo            server1:/export/foo
            /user/local/    server1:/usr/local

實現NFS服務

    systemctl start nfs-server
    systemctl enable nfs-server
    mkdir /nfsshare
    chown nfsnobody /nfsshare
    vi /etc/exports
        /nfsshare desktop-ip(rw)
    exporfs –r
    mkdir /mnt/nfsshare
    mount server-ip:/nfsshare /mnt/nfsshare(臨時)
    vim /etc/fstab
        nfsserver:/nfsshare /mnt/nfsshare nfs defaults 0 0
    mount -a

實現NFS偽根

    配置NFS 伺服器
        vi /etc/fstab
            /data/read /exports/read none bind 0 0
            /data2/write /exports/write none bind 0 0
        vi /etc/exports
            /exports *(fsid=o,rw,crossmnt)
            /exports/read 192.168.0.0/24(ro)
            /exports/write 192.168.0.0/24(rw)
    配置NFS 客戶端
        mount nfsserver:/ /mnt/nfs
        vi /etc/fstab
            nfsserver:/ /mnt/ nfs4 ro 0 0

NFS相關SELinux 設置

    CentOS7 預設SELinux  的布爾值
        nfs_export_all_ro 和 nfs_export_all_rw 都啟用。這允許NFS 服務可以讀寫任意文件,基於安全考慮可關閉.
    對於只讀的NFS 目錄SELinux 安全上下文件應設為
        public_content_t 或 nfs_t .
    對於讀寫的NFS 目錄SELinux 安全上下文件應設為
        public_content_rw_t 或 nfs_t context ,並且布爾值nfsd_anon_write Boolean  必須啟用,以允許寫操作.
    幫助參考nfsd_selinux(8)(selinux-policy-devel包)nfs(5), mount(8), mount.nfs(8), exportfs(8), exports(5), nfsd_selinux(8)

NFS工具

    rpcinfo
        rpcinfo — report RPC information
        rpcinfo makes an RPC call to an RPC server and reports what it finds.
            rpcinfo [-m | -s] [host]
            rpcinfo -p [host]
            rpcinfo -T netid host prognum [versnum]
            rpcinfo -l host prognum versnum
            rpcinfo [-n portnum] -u | -t host prognum [versnum]
            rpcinfo -a serv_address -T netid prognum [version]
            rpcinfo -b prognum versnum
            rpcinfo -d [-T netid] prognum versnum
        例子:
             rpcinfo -p hostname
             rpcinfo –s hostname  查看RPC註冊程式
    exportfs
        exportfs - maintain table of exported NFS file systems
        exportfs [-aruv] [host:/path
            –v      查看本機所有NFS 共用
            –r      重讀配置文件,並共用目錄
            –a      輸出本機所有共用
            –au     停止本機所有共用
    showmount
        showmount - show mount information for an NFS server
        showmount [options] [host]
            -a or --all     在主機中列出客戶端主機名或IP地址和已裝載目錄:dir格式
            -d or --directories     僅列出某些客戶端安裝的目錄
            -e or --exports     顯示NFS服務的導出文件
            --no-headers    禁止輸出中的描述性標題
            例子
                showmount -e hostname
     
    mount,mount.nfs  掛載工具
        NFSv4 支持通過掛載NFS 伺服器的共用“根”,從而瀏覽NFS 伺服器上的共用目錄列表
        mount nfsserver:/ /mnt/nfs

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一. 認證系統概要 create_user 創建用戶 authenticate 驗證登錄 login 記住用戶的登錄狀態 logout 退出登錄 is_authenticated 判斷用戶是否登錄 login_required 判斷用戶是否登錄的裝飾器 二. 創建用戶和驗證登錄 1. 當用戶註冊的時 ...
  • VS for Mac連接Git的時候遇到個奇怪的問題, 無法將已存在的解決方案綁定並提交到GitHub中去. VS版本7.3.3 問題復現 以為自己操作有問題, 新建項目測試一下, 新建的時候沒有勾選"Use git"選項, 新建好的項目預設選中瞭解決方案的根, 但打開Version Control ...
  • 微軟 ASP.NET 團隊近日正式開源了Blazor,這是一個Web UI框架,可通過WebAssembly在任意瀏覽器中運行 .Net。 Blazor旨在簡化快速的單頁面 .Net 瀏覽器應用的構建過程,它雖然使用了諸如 CSS 和 HTML 之類的 Web 技術,但它使用 C#語言和 Razor ...
  • 背景 SqlSugar是一款國產ORM,除了擁有媲美原生的性能 另外還有滿足各種需求的功能,簡單好用一分鐘就能夠輕鬆上手。 2.x版本正式在自已公司內部項目使用 3.x版本得到了更多公司的喜歡不過也會抱怨有很多不足 4.x版本17年5月發佈後得到的評價超出了我的預期, 剛發佈的時候做了大量的單元測試 ...
  • ssh使用密鑰進行認證可以實現免密登錄。 生成私鑰和公鑰 執行以下命令: 進入交互模式後可以不設置密鑰存放路徑和設置密碼,直接按回車即可。此時會在當前用戶的家目錄下的.ssh目錄下生成密鑰文件,即公鑰文件id_rsa.pub和私鑰文件id_rsa。 預設採用的是rsa演算法,也可以指定其它的演算法。 接 ...
  • iptables介紹 iptables Netfilter 組件 三種報文流向 iptables的組成 netfilter表和鏈對應的關係 數據包過濾匹配和傳輸過程 路由功能發生的時間點 iptables規則 1)規則rule : 1 根據規則的匹配條件嘗試匹配報文,對匹配成功的報文根據規則定義的處 ...
  • FastDFS的實現 環境 FastDFS的實現 FastDFS實現nginx代理 ...
  • MogileFS的實現 解決MogileFS的bug問題 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...