NFS服務配置解析詳解

NFS服務配置

1、NFS服務簡介

NFSNetwork File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它容許網絡中的計算機之間經過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用能夠透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件同樣。linux

2、系統環境

系統:centos7vim

IP192.168.0.240centos

爲確保不受防火牆影響,配置時關閉防火牆和selinuxbash

[root@localhost /]# sestatus –v #查看狀態
SELinux status:                 disabled
[root@localhost /]# setenforce 0 #臨時關閉selinux
setenforce: SELinux is disabled
[root@localhost /]# vim/etc/sysconfig/selinux #修改配置文件,永久生效。
SELINUX=disabled
[root@localhost /]# systemctl stopfirewalld.service  #臨時關閉防火牆
[root@localhost /]# systemctl disablefirewalld.service #永久關閉防火牆


3、安裝配置

1,查詢是否安裝相關包

[root@localhost /]# rpm -qa |egrep  rpcbind
rpcbind-0.2.0-33.el7_2.1.x86_64
[root@localhost /]# rpm -qa |egrepnfs-utils
nfs-utils-1.3.0-0.21.el7_2.1.x86_64

2,安裝

若未安裝使用yum安裝(更新):服務器

[root@localhost ~]# yum -y installnfs-utils rpcbind

3,配置

1)編輯/etc/exports文件,默認無此文件,使用vim直接添加。網絡

[root@localhost nfs]# vim /etc/exports
/var/nfs/iso1 *(rw,sync)
/var/nfs/iso2 *(rw,sync)
/var/nfs/iso3 *(rw,sync)
/var/nfs/data1 *(rw,sync)
/var/nfs/data2 *(rw,sync)
/var/nfs/data3 *(rw,sync)

2)重啓服務dom

[root@localhost nfs]# service rpcbindrestart
[root@localhost nfs]# service nfs-serverrestart
[root@localhost nfs]# showmount -e
Export list for localhost.localdomain:
/var/nfs/data3 *
/var/nfs/data2 *
/var/nfs/data1 *
/var/nfs/iso3  *
/var/nfs/iso2  *
/var/nfs/iso1  *

4、nfs服務解析

NFS服務器的配置相對比較簡單,只須要在相應的配置文件中進行設置,而後啓動NFS服務器便可。async

NFS的經常使用目錄tcp

/etc/exports                           NFS服務的主要配置文件ide

/usr/sbin/exportfs                   NFS服務的管理命令

/usr/sbin/showmount              客戶端的查看命令

/var/lib/nfs/etab                      記錄NFS分享出來的目錄的完整權限設定值

/var/lib/nfs/xtab                      記錄曾經登陸過的客戶端信息

NFS服務的配置文件爲 /etc/exports,這個文件是NFS的主要配置文件,不過系統並無默認值,因此這個文件不必定會存在,可能要使用vim手動創建,而後在文件裏面寫入配置內容。

/etc/exports文件內容格式:

<輸出目錄> [客戶端1 選項(訪問權限,用戶映射,其餘)] [客戶端2 選項(訪問權限,用戶映射,其餘)]

a. 輸出目錄:

輸出目錄是指NFS系統中須要共享給客戶機使用的目錄;

b. 客戶端:

客戶端是指網絡中能夠訪問這個NFS輸出目錄的計算機

客戶端經常使用的指定方式

指定ip地址的主機:192.168.0.200

指定子網中的全部主機:192.168.0.0/24 192.168.0.0/255.255.255.0

指定域名的主機:david.bsmart.cn

指定域中的全部主機:*.bsmart.cn

全部主機:*

c. 選項:

選項用來設置輸出目錄的訪問權限、用戶映射等。

NFS主要有3類選項:

訪問權限選項

設置輸出目錄只讀:ro

設置輸出目錄讀寫:rw

用戶映射選項

all_squash:將遠程訪問的全部普通用戶及所屬組都映射爲匿名用戶或用戶組(nfsnobody);

no_all_squash:與all_squash取反(默認設置);

root_squash:將root用戶及所屬組都映射爲匿名用戶或用戶組(默認設置);

no_root_squash:與rootsquash取反;

anonuid=xxx:將遠程訪問的全部用戶都映射爲匿名用戶,並指定該用戶爲本地用戶(UID=xxx);

anongid=xxx:將遠程訪問的全部用戶組都映射爲匿名用戶組帳戶,並指定該匿名用戶組帳戶爲本地用戶組帳戶(GID=xxx);

其它選項

secure:限制客戶端只能從小於1024tcp/ip端口鏈接nfs服務器(默認設置);

insecure:容許客戶端從大於1024tcp/ip端口鏈接服務器;

sync:將數據同步寫入內存緩衝區與磁盤中,效率低,但能夠保證數據的一致性;

async:將數據先保存在內存緩衝區中,必要時才寫入磁盤;

wdelay:檢查是否有相關的寫操做,若是有則將這些寫操做一塊兒執行,這樣能夠提升效率(默認設置);

no_wdelay:如有寫操做則當即執行,應與sync配合使用;

subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置)

no_subtree:即便輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣能夠提升效率;

1showmount命令使用

[root@localhost nfs]# showmount –e #默認查看本身共享的服務
Export list for localhost.localdomain:
/var/nfs/data3 *
/var/nfs/data2 *
/var/nfs/data1 *
/var/nfs/iso3  *
/var/nfs/iso2  *
/var/nfs/iso1  *
[root@localhost nfs]# showmount –a #顯示已經與客戶端鏈接上的目錄信息
All mount points on localhost.localdomain:
192.168.0.246:/var/nfs/data1
[root@localhost ~]# showmount -e192.168.0.240 #指定NFS服務器端IP
Export list for 192.168.0.240:
/var/nfs/data3 *
/var/nfs/data2 *
/var/nfs/data1 *
/var/nfs/iso3  *
/var/nfs/iso2  *
/var/nfs/iso1  *

2exportfs 命令

若是咱們在啓動了NFS以後又修改了/etc/exports,是否是還要從新啓動nfs呢?這個時候咱們就能夠用exportfs 命令來使改動馬上生效,該命令格式以下:

# exportfs [-aruv]

-a 所有掛載或卸載 /etc/exports中的內容

-r 從新讀取/etc/exports 中的信息,並同步更新/etc/exports/var/lib/nfs/xtab

-u 卸載單一目錄(和-a一塊兒使用爲卸載全部/etc/exports文件中的目錄)

-v export的時候,將詳細的信息輸出到屏幕上。

具體例子:

[root@localhost nfs]# exportfs –au #exportfs -au 卸載全部共享目錄
[root@localhost nfs]# showmount -e
Export list for localhost.localdomain:
[root@localhost nfs]# showmount -r
[root@localhost nfs]# exportfs –r #exportfs -rv 從新共享全部目錄並輸出詳細信息
[root@localhost nfs]# showmount -e
Export list for localhost.localdomain:
/var/nfs/data3 *
/var/nfs/data2 *
/var/nfs/data1 *
/var/nfs/iso3  *
/var/nfs/iso2  *
/var/nfs/iso1  *

3,排查命令

1nfsstat 查看NFS的運行狀態

2rpcinfo 查看rpc執行信息,能夠用於檢測rpc運行狀況的工具,利用rpcinfo-p 能夠查看出RPC開啓的端口所提供的程序。

3showmount

-a 顯示已經於客戶端鏈接上的目錄信息

-e IP或者hostname 顯示此IP地址共享的目錄

4,客戶端命令

客戶端掛載NFS服務器中的共享目錄

命令格式:

mount NFS服務器IP:共享目錄 本地掛載點目錄

[root@localhost ~]# mkdir /tmp/mnt_test
[root@localhost ~]# mount192.168.0.240:/var/nfs/iso1 /tmp/mnt_test
[root@localhost ~]# ls /tmp/mnt_test/
[root@localhost ~]# ls /tmp/mnt_test/ #在nfs服務器端新建1.txt文件
1.txt

客戶端卸載共享目錄

[root@localhost tmp]# umount /tmp/mnt_test/

5,權限問題

1. 客戶端鏈接時候,對普通用戶的檢查

a. 若是明確設定了普通用戶被映射的身份,那麼此時客戶端用戶的身份轉換爲指定用戶;

b. 若是NFS server上面有同名用戶,那麼此時客戶端登陸帳戶的身份轉換爲NFS server上面的同名用戶;

c. 若是沒有明確指定,也沒有同名用戶,那麼此時用戶身份被映射成nfsnobody

 

2. 客戶端鏈接的時候,對root的檢查

a. 若是設置no_root_squash,那麼此時root用戶的身份被映射爲NFS server上面的root

b. 若是設置了all_squashanonuidanongid,此時root 身份被映射爲指定用戶;

c. 若是沒有明確指定,此時root用戶被映射爲nfsnobody

d. 若是同時指定no_root_squashall_squash 用戶將被映射爲 nfsnobody,若是設置了anonuidanongid將被映射到所指定的用戶與組;

相關文章
相關標籤/搜索