溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ubuntu如何配置NFS

發(fā)布時間:2021-07-14 10:43:49 來源:億速云 閱讀:212 作者:小新 欄目:開發(fā)技術

這篇文章主要介紹了Ubuntu如何配置NFS,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

NFS 是Network File System的縮寫,即網(wǎng)絡文件系統(tǒng),一種使用于分散式文件系統(tǒng)的協(xié)定

NFS通過網(wǎng)絡讓不同的機器、不同的操作系統(tǒng)能夠彼此分享個別的數(shù)據(jù),例如將/home設置為共享目錄,然后共享給網(wǎng)絡中的其它服務器,這樣每臺機器就不必單獨建立自己的/home路徑了,NFS獨立于操作系統(tǒng),容許不同硬件及操作系統(tǒng)的系統(tǒng)共同進行文件的分享,是在類Unix系統(tǒng)間實現(xiàn)磁盤文件共享的一種方法

NFS本身沒有提供信息傳輸?shù)膮f(xié)議和功能,而是使用RPC服務完成這部分功能??梢哉fNFS本身就是使用RPC服務的一個程序,或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啟動RPC服務,不論是NFS server還是NFS client,可以這么理解RPC和NFS之間的關系:NFS是一個文件系統(tǒng),而RPC負責信息的傳輸

一,系統(tǒng)環(huán)境

Linux Distribution:Ubuntu 14

二,安裝Linux NFS

sean@sean:~$ sudo apt-get install nfs-kernel-server
[sudo] password for sean: 
Reading package lists... Done
Building dependency tree    
Reading state information... Done
The following extra packages will be installed:
 keyutils libgssglue1 libnfsidmap2 libtirpc1 nfs-common rpcbind
Suggested packages:
 open-iscsi watchdog
The following NEW packages will be installed:
 keyutils libgssglue1 libnfsidmap2 libtirpc1 nfs-common nfs-kernel-server
 rpcbind
0 upgraded, 7 newly installed, 0 to remove and 159 not upgraded.
Need to get 460 kB of archives.
After this operation, 2,049 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libgssglue1 amd64 0.4-2ubuntu1 [19.7 kB]
Get:2 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libnfsidmap2 amd64 0.25-5 [32.2 kB]
Get:3 http://cn.archive.ubuntu.com/ubuntu/ trusty/main libtirpc1 amd64 0.2.2-5ubuntu2 [71.3 kB]
Get:4 http://cn.archive.ubuntu.com/ubuntu/ trusty/main keyutils amd64 1.5.6-1 [33.6 kB]
Get:5 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main rpcbind amd64 0.2.1-2ubuntu2.2 [37.1 kB]
Get:6 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main nfs-common amd64 1:1.2.8-6ubuntu1.2 [181 kB]
Get:7 http://cn.archive.ubuntu.com/ubuntu/ trusty-updates/main nfs-kernel-server amd64 1:1.2.8-6ubuntu1.2 [85.8 kB]
Fetched 460 kB in 16s (27.2 kB/s)                       
Selecting previously unselected package libgssglue1:amd64.
(Reading database ... 168701 files and directories currently installed.)
Preparing to unpack .../libgssglue1_0.4-2ubuntu1_amd64.deb ...
Unpacking libgssglue1:amd64 (0.4-2ubuntu1) ...
Selecting previously unselected package libnfsidmap2:amd64.
Preparing to unpack .../libnfsidmap2_0.25-5_amd64.deb ...
Unpacking libnfsidmap2:amd64 (0.25-5) ...
Selecting previously unselected package libtirpc1:amd64.
Preparing to unpack .../libtirpc1_0.2.2-5ubuntu2_amd64.deb ...
Unpacking libtirpc1:amd64 (0.2.2-5ubuntu2) ...
Selecting previously unselected package keyutils.
Preparing to unpack .../keyutils_1.5.6-1_amd64.deb ...
Unpacking keyutils (1.5.6-1) ...
Selecting previously unselected package rpcbind.
Preparing to unpack .../rpcbind_0.2.1-2ubuntu2.2_amd64.deb ...
Unpacking rpcbind (0.2.1-2ubuntu2.2) ...
Selecting previously unselected package nfs-common.
Preparing to unpack .../nfs-common_1%3a1.2.8-6ubuntu1.2_amd64.deb ...
Unpacking nfs-common (1:1.2.8-6ubuntu1.2) ...
Selecting previously unselected package nfs-kernel-server.
Preparing to unpack .../nfs-kernel-server_1%3a1.2.8-6ubuntu1.2_amd64.deb ...
Unpacking nfs-kernel-server (1:1.2.8-6ubuntu1.2) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Processing triggers for ureadahead (0.100.0-16) ...
ureadahead will be reprofiled on next reboot
Setting up libgssglue1:amd64 (0.4-2ubuntu1) ...
Setting up libnfsidmap2:amd64 (0.25-5) ...
Setting up libtirpc1:amd64 (0.2.2-5ubuntu2) ...
Setting up keyutils (1.5.6-1) ...
Setting up rpcbind (0.2.1-2ubuntu2.2) ...
 Removing any system startup links for /etc/init.d/rpcbind ...
rpcbind start/running, process 12074
Processing triggers for ureadahead (0.100.0-16) ...
Setting up nfs-common (1:1.2.8-6ubuntu1.2) ...

Creating config file /etc/idmapd.conf with new version

Creating config file /etc/default/nfs-common with new version
Adding system user `statd' (UID 118) ...
Adding new user `statd' (UID 118) with group `nogroup' ...
Not creating home directory `/var/lib/nfs'.
statd start/running, process 12307
gssd stop/pre-start, process 12341
idmapd start/running, process 12399
Processing triggers for ureadahead (0.100.0-16) ...
Setting up nfs-kernel-server (1:1.2.8-6ubuntu1.2) ...

Creating config file /etc/exports with new version

Creating config file /etc/default/nfs-kernel-server with new version
 * Not starting NFS kernel daemon: no exports.
Processing triggers for libc-bin (2.19-0ubuntu6.7) ...
Processing triggers for ureadahead (0.100.0-16) ...

通過安裝日志可以發(fā)現(xiàn)總共會安裝keyutils,libgssglue1,libnfsidmap2,libtirpc1,nfs-common,nfs-kernel-server,rpcbind這7個包

很多文檔中安裝的包為portmap,但是這個包已經(jīng)被rpcbind替代

sean@sean:~$ sudo apt-get install portmap
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'rpcbind' instead of 'portmap'
rpcbind is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 164 not upgraded.
rpcbind包安裝完成后會自動啟動rpcbind服務

sean@sean:~$ ps -ef|grep rpcbind
root 807 1 0 22:27 ? 00:00:00 rpcbind
sean 10215 9528 0 22:48 pts/6 00:00:00 grep --color=auto rpcbind
但是由于目前NFS的配置文件為空,NFS服務并沒有啟動

三,配置NFS服務

Ubuntu如何配置NFS

從安裝日志中我們可以發(fā)現(xiàn)NFS服務的配置文件為/etc/exports,并且這個文件在安裝過程中已經(jīng)生成好了,我們所要做的就是將NFS配置信息添加到這個文件中

sean@sean:~$ sudo vi /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
#        to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes    hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4    gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
/home/sean/shareDir 192.168.137.129(rw,no_root_squash,async)

其中中的最后一行為新添加的NFS配置,NFS配置信息格式如下:

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

1,共享目錄:

共享目錄是指NFS系統(tǒng)中需要共享給客戶機使用的目錄

2,客戶端:

客戶端是指網(wǎng)絡中可以訪問NFS共享目錄的計算機

客戶端常用的指定方式:

(1)指定ip地址的主機:192.168.0.1
(2)指定子網(wǎng)中的所有主機:192.168.0.0/255.255.255.0
(3)指定域名的主機:www.sean.com
(4)指定域中的所有主機:*.sean.com
(5)所有主機:*

3,選項:

選項用來設置輸出目錄的訪問權限、用戶映射等,NFS主要有3類選項:

訪問權限選項:

(1)設置輸出目錄只讀:ro
(2)設置輸出目錄讀寫:rw

用戶映射選項:

(1)all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody)
(2)no_all_squash:與all_squash取反(默認設置)
(3)root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置)
(4)no_root_squash:與rootsquash取反
(5)anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,并指定該用戶為本地用戶(UID=xxx)
(6)anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,并指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx)

其它選項:

(1)secure:限制客戶端只能從小于1024的tcp/ip端口連接nfs服務器(默認設置)
(2)insecure:允許客戶端從大于1024的tcp/ip端口連接服務器
(3)sync:將數(shù)據(jù)同步寫入內(nèi)存緩沖區(qū)與磁盤中,效率低,但可以保證數(shù)據(jù)的一致性
(4)async:將數(shù)據(jù)先保存在內(nèi)存緩沖區(qū)中,必要時才寫入磁盤
(5)wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執(zhí)行,這樣可以提高效率(默認設置)
(6)no_wdelay:若有寫操作則立即執(zhí)行,應與sync配合使用
(7)subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置)
(8)no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率

四,啟動NFS服務

sean@sean:~$ sudo service nfs-kernel-server start
 * Exporting directories for NFS kernel daemon...                                                                exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.137.129:/home/sean/shareDir".
 Assuming default behaviour ('no_subtree_check').
 NOTE: this default has changed since nfs-utils version 1.0.x

 * Starting NFS kernel daemon  
sean@sean:~$ sudo service nfs-kernel-server status
nfsd running
sean@sean:~$ ps -ef|grep nfsd
root   10536   2 0 23:40 ?    00:00:00 [nfsd4]
root   10537   2 0 23:40 ?    00:00:00 [nfsd4_callbacks]
root   10539   2 0 23:40 ?    00:00:00 [nfsd]
root   10540   2 0 23:40 ?    00:00:00 [nfsd]
root   10541   2 0 23:40 ?    00:00:00 [nfsd]
root   10542   2 0 23:40 ?    00:00:00 [nfsd]
root   10543   2 0 23:40 ?    00:00:00 [nfsd]
root   10544   2 0 23:40 ?    00:00:00 [nfsd]
root   10545   2 0 23:40 ?    00:00:00 [nfsd]
root   10546   2 0 23:40 ?    00:00:00 [nfsd]
sean   10566  9528 0 23:41 pts/6  00:00:00 grep --color=auto nfsd

通過命令可以看到文件夾已經(jīng)被共享

sean@sean:~$ showmount -e
Export list for sean:
/home/sean/shareDir 192.168.137.129

五,客戶端掛載NFS共享目錄

sean@ubuntu:~$ sudo mount 192.168.137.128:/home/sean/shareDir /home/sean/shared
mount: wrong fs type, bad option, bad superblock on 192.168.137.128:/home/sean/shareDir,
    missing codepage or helper program, or other error
    (for several filesystems (e.g. nfs, cifs) you might
    need a /sbin/mount.<type> helper program)
    In some cases useful info is found in syslog - try
    dmesg | tail or so

上網(wǎng)查看了一下錯誤原因,是因為客戶端沒有安裝nfs-common包

sean@ubuntu:~$ sudo apt-get install nfs-common
之后再次使用掛載命令即可,此時如果我們再次查看客戶端掛載的磁盤,就可以看到NFS共享目錄已經(jīng)被掛載上了

sean@ubuntu:~$ df
Filesystem             1K-blocks  Used Available Use% Mounted on
udev                  488800    4  488796  1% /dev
tmpfs                  99904  1456   98448  2% /run
/dev/sda1              19478204 3745568 14720156 21% /
none                    4    0     4  0% /sys/fs/cgroup
none                   5120    0   5120  0% /run/lock
none                  499512   152  499360  1% /run/shm
none                  102400   40  102360  1% /run/user
/dev/sr0               1044480 1044480     0 100% /media/sean/Ubuntu 14.04.4 LTS amd64
192.168.137.128:/home/sean/shareDir 19478272 4288896 14176896 24% /home/sean/shared

此時如果我們在128的/home/sean/shareDir目錄下創(chuàng)建一個文件,在129的/home/sean/shared目錄下可以看到一個名稱相同的文件,并且文件的內(nèi)容也相同

六,開機啟動NFS服務

安裝完成之后查看系統(tǒng)服務

sean@sean:~$ runlevel
N 2
sean@sean:~$ ll /etc/rc2.d
total 20
drwxr-xr-x 2 root root 4096 6月 20 23:25 ./
drwxr-xr-x 132 root root 12288 6月 26 20:16 ../
-rw-r--r-- 1 root root 677 2月 17 12:59 README
lrwxrwxrwx 1 root root 20 2月 22 06:33 S20kerneloops -> ../init.d/kerneloops*
lrwxrwxrwx 1 root root 27 6月 20 23:25 S20nfs-kernel-server -> ../init.d/nfs-kernel-server*
lrwxrwxrwx 1 root root 15 2月 22 06:33 S20rsync -> ../init.d/rsync*
lrwxrwxrwx 1 root root 27 2月 22 06:33 S20speech-dispatcher -> ../init.d/speech-dispatcher*
lrwxrwxrwx 1 root root 15 2月 22 06:33 S50saned -> ../init.d/saned*
lrwxrwxrwx 1 root root 19 2月 22 06:33 S70dns-clean -> ../init.d/dns-clean*
lrwxrwxrwx 1 root root 18 2月 22 06:33 S70pppd-dns -> ../init.d/pppd-dns*
lrwxrwxrwx 1 root root 21 2月 22 06:33 S99grub-common -> ../init.d/grub-common*
lrwxrwxrwx 1 root root 18 2月 22 06:33 S99ondemand -> ../init.d/ondemand*
lrwxrwxrwx 1 root root 18 2月 22 06:33 S99rc.local -> ../init.d/rc.local*
nfs-kernel-server是自動啟動,就不需要再進行修改了,而rpcbind就比較麻煩了,找了半天才找到vi /etc/init/rpcbind-boot.conf

# portmap-boot

description "Upstart job to start rpcbind on boot only"
author "Clint Byrum"

emits start-rpcbind

start on virtual-filesystems and net-device-up IFACE=lo

task

exec initctl emit --no-wait start-rpcbind ON_BOOT=y
可以見到這個服務設為開機啟動了

七,開機自動掛載共享盤

這時候我們需要修改的文件是/etc/fstab,命令格式如下:

<NFS服務端>:<共享目錄> <本地目錄> <文件系統(tǒng)類型> <選項> <dump> <pass>每個字段的具體含義這里就不詳細解釋了,vi /etc/fstab,在文件中添加下面這行配置

192.168.137.128:/home/sean/shareDir /home/sean/shared nfs defaults 0 0系統(tǒng)每次啟動時即會自動掛載共享盤

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Ubuntu如何配置NFS”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI