1. 程式人生 > >服務管理之NFS

服務管理之NFS

支持 告訴 從服務器 emc 安裝軟件 一致性 是否 工具 缺點

目錄

  • NFS簡介
    • 1.1 nfs特點
    • 1.4 nfs的應用場景
  • 4. nfs管理

NFS簡介

1.1 nfs特點

  • NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源
  • 在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件一樣
  • nfs適用於Linux與Unix之間實現文件共享,不能實現Linux與Windows間的文件共享功能
  • nfs是運行在應用層的協議,其監聽於2049/tcp和2049/udp套接字上
  • nfs服務只能基於IP進行認證,這也是它的缺點之一

    1.2 使用nfs的好處

  • 節省本地存儲空間,將常用的數據存放在一臺NFS服務器上且可以通過網絡訪問,那麽本地終端將可以減少自身存儲空間的使用
  • 用戶不需要在網絡中的每個機器上都建有Home目錄,Home目錄可以放在NFS服務器上且可以在網絡上被訪問使用
  • 一些存儲設備如軟驅、CDROM和Zip(一種高儲存密度的磁盤驅動器與磁盤)等都可以在網絡上被別的機器使用。這可以減少整個網絡上可移動介質設備的數量

    1.3 nfs的體系組成

    nfs體系至少有兩個主要部分:
  • 一臺nfs服務器
  • 若幹臺客戶機
    技術分享圖片

    客戶機通過TCP/IP網絡遠程訪問存放在NFS服務器上的數據

在NFS服務器正式啟用前,需要根據實際環境和需求,配置一些NFS參數

1.4 nfs的應用場景

nfs有很多實際應用場景,以下是一些常用的場景:

  • 多個機器共享一臺CDROM或其他設備。這對於在多臺機器中安裝軟件來說更加便宜與方便
  • 在大型網絡中,配置一臺中心NFS服務器用來放置所有用戶的home目錄可能會帶來便利。這些目錄能被輸出到網絡以便用戶不管在哪臺工作站上登錄,總能得到相同的home目錄
  • 不同客戶端可在NFS上觀看影視文件,節省本地空間
    *在客戶端完成的工作數據,可以備份保存到NFS服務器上用戶自己的路徑下

    2. nfs工作機制

    nfs是基於rpc來實現網絡文件系統共享的。

    2.1 RPC

    RPC(Remote Procedure Call Protocol),遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。

RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。

RPC采用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。
技術分享圖片
rpc工作機制如上圖所示,下面來描述一下它:

  • 客戶端程序發起一個RPC系統調用基於TCP協議發送給另一臺主機(服務端)
  • 服務端監聽在某個套接字上,當收到客戶端的系統調用請求以後,將收到的請求和其所傳遞的參數通過本地的系統調用執行一遍,並將結果返回給本地的服務進程
  • 服務端的服務進程收到返回的執行結果後將其封裝成響應報文,再通過rpc協議返回給客戶端
  • 客戶端調用進程接收答復信息,獲得進程結果,然後調用執行繼續進行

    2.2 NIS

    NIS(Network Information System),網絡信息系統,是對主機帳號等系統提供集中管理的網絡服務。

用戶登錄任何一臺NIS客戶機都會從NIS服務器進行登錄認證,可實現用戶帳號的集中管理。

NIS協議是明文的,所以NIS一般不建議在公網中使用而通常在局域網中使用。

//NFS服務器端運行著四個進程:
    nfsd
    mountd
    idmapd
    portmapper

idmapd  //實現用戶帳號的集中映射,把所有的帳號都映射為NFSNOBODY,但是在訪問時卻能以本地用戶的身份去訪問

mountd  //用於驗證客戶端是否在允許訪問此NFS文件系統的客戶端列表中,在則允許訪問(發放一個令牌,持令牌去找nfsd),否則拒絕訪問
        //mountd的服務端口是隨機的,由rpc服務(portmapper)提供隨機端口號

nfsd    //nfs的守護進程,監聽在2049/tcp和2049/udp端口上
        //不負責文件存儲(由NFS服務器本地內核負責調度存儲),用於理解客戶端發起的rpc請求,並將其轉交給本地內核,而後存儲在指定的文件系統上

portmapper  //NFS服務器的rpc服務,其監聽於111/TCP和111/UDP套接字上,用於管理遠程過程調用(RPC)

下面通過一個例子來說明NFS的簡單工作流程:

[[email protected] ~]# mount -t nfs 192.168.153.128:/nfs/shared/ /ly
oad 192.168.163.0/24
永久掛載
[[email protected] ~]# df -Th
文件系統 類型 容量 已用 可用 已用% 掛載點
/dev/mapper/rhel-root xfs 17G 1.8G 16G 11% /
devtmpfs devtmpfs 478M 0 478M 0% /dev
tmpfs tmpfs 489M 0 489M 0% /dev/shm
tmpfs tmpfs 489M 6.7M 482M 2% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sr0 iso9660 3.8G 3.8G 0 100% /opt/yum
/dev/sda1 xfs 1014M 125M 890M 13% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
/192.153.168.128 nfs 3.8G 0 3.8G 0% /ly

需求:查看file文件的信息,此file存儲在遠程NFS服務端主機上(掛載在本地目錄/shared/nfs中)

技術分享圖片

  • 客戶端發起查看file信息的指令(ls file)給內核,內核通過NFS模塊得知此文件並不是本地文件系統中的文件,而是在遠程NFS主機上的一個文件
  • 客戶端主機的內核通過RPC協議把查看file信息的指令(系統調用)封裝成rpc請求通過TCP的111端口發送給NFS服務端主機的portmapper
  • NFS服務端主機的portmapper(RPC服務進程)告訴客戶端說NFS服務端的mountd服務在某某端口上,你去找它驗證

    因為mountd在提供服務時必須要向portmapper註冊一個端口號,所以portmapper是知道其工作於哪個端口的

  • 客戶端得知服務端的mountd進程端口號後,通過已知的服務端mountd端口號請求驗證
  • mountd收到驗證請求後驗證發起請求的客戶端是否在允許訪問此NFS文件系統的客戶端列表中,在則允許訪問(發放一個令牌,持令牌去找nfsd),否則拒絕訪問
  • 驗證通過後客戶端持mountd發放的令牌去找服務端的nfsd進程,請求查看某文件
  • 服務端的nfsd進程發起本地系統調用,向內核請求查看客戶端要查看的文件的信息
  • 服務端的內核執行nfsd請求的系統調用,並將結果返回給nfsd服務
  • nfsd進程收到內核返回的結果後將其封裝成rpc請求報文並通過tcp/ip協議返回給客戶端

    3. exports文件的格式

    nfs的主配置文件是/etc/exports,在此文件中,可以定義NFS系統的輸出目錄(即共享目錄)、訪問權限和允許訪問的主機等參數。該文件默認為空,沒有配置輸出任何共享目錄,這是基於安全性的考慮,如此即使系統啟動了NFS服務也不會輸出任何共享資源。

exports文件中每一行提供了一個共享目錄的設置,其命令格式為:

<輸出目錄> [客戶端1(選項1,選項2,...)] [客戶端2(選項1,選項2,...)]

其中,除輸出目錄是必選參數外,其他參數均是可選項。另外,格式中的輸出目錄和客戶端之間、客戶端與客戶端之間都使用空格分隔,但客戶端與選項之間不能有空格。

客戶端是指網絡中可以訪問這個NFS共享目錄的計算機。客戶端的指定非常靈活,可為單個主機的IP或域名,亦可為某個子網或域中的主機等。

客戶端常用的指定方式:

客戶端 說明
172.16.12.129 指定IP地址的主機
172.16.12.0/24(或172.16.12.*) 指定子網中的所有主機
www.wangqing.com 指定域名的主機
*.wangqing.com 指定wangqing.com域中的所有主機
*(或缺省) 所有主機

選項用來設置共享目錄的訪問權限、用戶映射等。exports文件中的選項比較多,一般可分為三類:

  • 訪問權限選項(用於控制共享目錄的訪問權限)
  • 用戶映射選項
    默認情況下,當客戶端訪問NFS服務器時,若遠程訪問的用戶是root用戶,則NFS服務器會將其映射成一個本地的匿名用戶(該用戶為nfsnobody),並將其所屬的用戶組也映射成匿名用戶組(該用戶組也為nfsnobody),如此有助於提高系統的安全性。
  • 其他選項

訪問權限選項:

訪問權限選項 說明
ro 設置輸出目錄只讀
rw 設置輸出目錄可讀寫

用戶映射選項:

用戶映射選項 說明
secure 限制客戶端只能從小於1024的TCP/IP端口連接NFS服務器(默認設置)
insecure 允許客戶端從大於1024的TCP/IP端口連接NFS服務器
sync 將數據同步寫入內存緩沖區或磁盤中,效率較低,但可保證數據一致性
async 將數據先保存在內存緩沖區中,必要時才寫入磁盤
wdelay 檢查是否有相關的寫操作,如果有則這些寫操作一起執行,可提高效率(默認設置)
no_wdelay 若有寫操作則立即執行,應與sync配置使用
subtree_check 若輸出目錄是一個子目錄,則NFS服務器將檢查其父目錄的權限(默認設置)
no_subtree_check 即使輸出目錄是一個子目錄,NFS服務亦不檢查其父目錄的權限,可提高效率
nohide 若將一個目錄掛載到另一個目錄之上,則原來的目錄通常就被隱藏起來或看起來像空的一樣。要禁用這種行為,需啟用hide選項

4. nfs管理

nfs安裝:

//安裝
    yum -y install nfs-utils

//啟動
    systemctl start rpcbind nfs-server

使用showmount命令測試NFS服務器的輸出目錄狀態:

//語法:showmount [選項] [NFS服務器名稱或地址]
//常用的選項有:
    -a  //顯示指定NFS服務器的所有客戶端主機及其所連接的目錄
    -d  //顯示指定的NFS服務器中已被客戶端連接的所有輸出目錄
    -e  //顯示指定的NFS服務器上所有輸出的共享目錄

在客戶端掛載NFS文件系統:

mount -t nfs SERVER:/path/to/sharedfs /path/to/mount_point
mount -t nfs 192.168.153.142:/nfs/shared /ly

在客戶端設置開機自動掛載nfs:編輯/etc/fstab文件,添加如下格式的內容

SERVER:/PATH/TO/EXPORTED_FS /mnt_point nfs defaults,_netdev 0 0
192.168.153.142:/nfs/shared /ly nfs defaults,_netdev 0 0

客戶端掛載時可以使用的特殊選項:

  • rsize:其值是從服務器讀取的字節數(緩沖)。默認為1024。若使用比較高的值,如8192,可以提高傳輸速度
  • wsize:其值是寫入到服務器的字節數(緩沖)。默認為1024。若使用比較高的值,如8192,可以提高傳輸速度
exportfs        //維護exports文件導出的文件系統表的專用工具
    -a      //輸出在/etc/exports文件中所設置的所有目錄
    -r      //重新讀取/etc/exports文件中的設置,並使其立即生效,無需重啟服務
    -u      //停止輸出某一目錄
    -v      //在輸出目錄時將目錄顯示到屏幕上

檢查輸出目錄所使用的選項:
在配置文件/etc/exports中,即使在命令行中只設置了一兩個選項,但在真正輸出目錄時,實際上還帶有很多默認的選項。通過查看/var/lib/nfs/etab文件,可以看到具體使用了何選項

服務管理之NFS