12.2 NFS網(wǎng)絡(luò)文件系統(tǒng)

2022-05-31 17:27 更新

如果大家覺得Samba服務(wù)程序的配置太麻煩,而且恰巧需要共享文件的主機都是Linux系統(tǒng),劉遄老師非常推薦大家在客戶端部署NFS服務(wù)來共享文件。NFS(網(wǎng)絡(luò)文件系統(tǒng))服務(wù)可以將遠程Linux系統(tǒng)上的文件共享資源掛載到本地主機的目錄上,從而使得本地主機(Linux客戶端)基于TCP/IP協(xié)議,像使用本地主機上的資源那樣讀寫遠程Linux系統(tǒng)上的共享文件。

由于RHEL 7系統(tǒng)中默認已經(jīng)安裝了NFS服務(wù),外加NFS服務(wù)的配置步驟也很簡單,因此劉遄老師在授課時會將NFS戲謔為Need For Speed。接下來,我們準備配置NFS服務(wù)。首先請使用Yum軟件倉庫檢查自己的RHEL 7系統(tǒng)中是否已經(jīng)安裝了NFS軟件包:

    [root@linuxprobe ~]# yum install nfs-utils
    Loaded plugins: langpacks, product-id, subscription-manager
    (1/2): rhel7/group_gz | 134 kB 00:00
    (2/2): rhel7/primary_db | 3.4 MB 00:00
    Package 1:nfs-utils-1.3.0-0.el7.x86_64 already installed and latest version
    Nothing to do

第1步:為了檢驗NFS服務(wù)配置的效果,我們需要使用兩臺Linux主機(一臺充當NFS服務(wù)器,一臺充當NFS客戶端),并按照表12-6來設(shè)置它們所使用的IP地址。

表12-6 兩臺Linux主機所使用的操作系統(tǒng)以及IP地址

主機名稱 操作系統(tǒng) IP地址
NFS服務(wù)器 RHEL 8 192.168.10.10
NFS客戶端 RHEL 8 192.168.10.20

另外,不要忘記清空NFS服務(wù)器上面iptables防火墻的默認策略,以免默認的防火墻策略禁止正常的NFS共享服務(wù)。

    [root@linuxprobe ~]# iptables -F
    [root@linuxprobe ~]# service iptables save
    iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

第2步:在NFS服務(wù)器上建立用于NFS文件共享的目錄,并設(shè)置足夠的權(quán)限確保其他人也有寫入權(quán)限。

    [root@linuxprobe ~]# mkdir /nfsfile
    [root@linuxprobe ~]# chmod -Rf 777 /nfsfile
    [root@linuxprobe ~]# echo "welcome to linuxprobe.com" > /nfsfile/readme

第3步:NFS服務(wù)程序的配置文件為/etc/exports,默認情況下里面沒有任何內(nèi)容。我們可以按照“共享目錄的路徑 允許訪問的NFS客戶端(共享權(quán)限參數(shù))”的格式,定義要共享的目錄與相應(yīng)的權(quán)限。

例如,如果想要把/nfsfile目錄共享給192.168.10.0/24網(wǎng)段內(nèi)的所有主機,讓這些主機都擁有讀寫權(quán)限,在將數(shù)據(jù)寫入到NFS服務(wù)器的硬盤中后才會結(jié)束操作,最大限度保證數(shù)據(jù)不丟失,以及把來訪客戶端root管理員映射為本地的匿名用戶等,則可以按照下面命令中的格式,將表12-7中的參數(shù)寫到NFS服務(wù)程序的配置文件中。

表12-7 用于配置NFS服務(wù)程序配置文件的參數(shù)

參數(shù) 作用
ro 只讀
rw 讀寫
root_squash 當NFS客戶端以root管理員訪問時,映射為NFS服務(wù)器的匿名用戶
no_root_squash 當NFS客戶端以root管理員訪問時,映射為NFS服務(wù)器的root管理員
all_squash 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務(wù)器的匿名用戶
sync 同時將數(shù)據(jù)寫入到內(nèi)存與硬盤中,保證不丟失數(shù)據(jù)
async 優(yōu)先將數(shù)據(jù)保存到內(nèi)存,然后再寫入硬盤;這樣效率更高,但可能會丟失數(shù)據(jù)

請注意,NFS客戶端地址與權(quán)限之間沒有空格。

    [root@linuxprobe ~]# vim /etc/exports
    /nfsfile 192.168.10.*(rw,sync,root_squash)

第4步:啟動和啟用NFS服務(wù)程序。由于在使用NFS服務(wù)進行文件共享之前,需要使用RPC(Remote Procedure Call,遠程過程調(diào)用)服務(wù)將NFS服務(wù)器的IP地址和端口號等信息發(fā)送給客戶端。因此,在啟動NFS服務(wù)之前,還需要順帶重啟并啟用rpcbind服務(wù)程序,并將這兩個服務(wù)一并加入開機啟動項中。

    [root@linuxprobe ~]# systemctl restart rpcbind
    [root@linuxprobe ~]# systemctl enable rpcbind
    [root@linuxprobe ~]# systemctl start nfs-server
    [root@linuxprobe ~]# systemctl enable nfs-server
    ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'

NFS客戶端的配置步驟也十分簡單。先使用showmount命令(以及必要的參數(shù),見表12-8)查詢NFS服務(wù)器的遠程共享信息,其輸出格式為“共享的目錄名稱 允許使用客戶端地址”。

表12-8 showmount命令中可用的參數(shù)以及作用

參數(shù) 作用
-e 顯示NFS服務(wù)器的共享列表
-a 顯示本機掛載的文件資源的情況NFS資源的情況
-v 顯示版本號
    [root@linuxprobe ~]# showmount -e 192.168.10.10
    Export list for 192.168.10.10:
    /nfsfile 192.168.10.*

然后在NFS客戶端創(chuàng)建一個掛載目錄。使用mount命令并結(jié)合-t參數(shù),指定要掛載的文件系統(tǒng)的類型,并在命令后面寫上服務(wù)器的IP地址、服務(wù)器上的共享目錄以及要掛載到本地系統(tǒng)(即客戶端)的目錄。

    [root@linuxprobe ~]# mkdir /nfsfile
    [root@linuxprobe ~]# mount -t nfs 192.168.10.10:/nfsfile /nfsfile

掛載成功后就應(yīng)該能夠順利地看到在執(zhí)行前面的操作時寫入的文件內(nèi)容了。如果希望NFS文件共享服務(wù)能一直有效,則需要將其寫入到fstab文件中:

    [root@linuxprobe ~]# cat /nfsfile/readme
    welcome to linuxprobe.com
    [root@linuxprobe ~]# vim /etc/fstab 
    #
    # /etc/fstab
    # Created by anaconda on Wed May 4 19:26:23 2017
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/rhel-root / xfs defaults 1 1
    UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults 1 2
    /dev/mapper/rhel-swap swap swap defaults 0 0
    /dev/cdrom /media/cdrom iso9660 defaults 0 0 
    192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號