使用mount挂载NFS

时间:2023-01-26 21:15:12

在项目中使用到NFS,就是网路文件系统。这个就不多说了。NFS就是实现远程机器上的文件路径挂载到某个机器上,这样在使用的时候感觉和本地路径是一样的。
在linux上我要实现挂载一个路径,是程序需要。
先说要实现的目标。

在192.168.0.74这台机器上有个程序,有个功能需要读取接口返回的文件,我的项目里是用挂载方式实现的。
就是在192.168.0.41这台机器上布置的接口程序,当74上的程序访问接口后,返回结果只有文件名,没有文件,
文件是接口程序生成在本地的一个路径上:/usr/ccag/etp/ivrfile/ttstmp/
74上的程序需要到41这个路径上自己取文件,然后完成自己的功能。这个就是通过挂载实现的。
首先74上指定一个路径/share/ttstmptest,然后41上使用挂载mount把/usr/ccag/etp/ivrfile/ttstmp/挂载到74上的
/share/ttstmptest。这样接口41上生成文件后,74上的程序访问本地的/share/ttstmptest就等同于在访问41上的
/usr/ccag/etp/ivrfile/ttstmp/。这样就实现了文件共享功能,不用文件流传递文件,也不用ftp传递文件,这样其实更快更省时间。


下面我来说具体的操作。首先使用mount命令的那台机器就是客户端,被挂载的那台机器就是服务端。



======服务端(74):

先查看/etc/exports,这个文件要配置被挂载的路径。

CTI-01:/etc #
CTI-01:/etc # cat /etc/exports
# See the exports(5) manpage for a description of the syntax of this file.
# This file contains a list of all directories that are to be exported to
# other computers via NFS (Network File System).
# This file used by rpc.nfsd and rpc.mountd. See their manpages for details
# on how make changes in this file effective.
/share 192.168.0.0/255.255.255.0(rw,all_squash,async,anonuid=65534,anongid=65533)
/home/record 192.168.0.0/255.255.255.0(rw,all_squash,async,anonuid=65534,anongid=65533)


CTI-01:/etc #
CTI-01:/etc #
CTI-01:/etc #
CTI-01:/etc #

修改路径可以被哪些ip访问,我就直接改成所有ip访问

vi /etc/exports

/share *(rw,all_squash,async,anonuid=65534,anongid=65533)

修改后还要使之生效,使用exportfs -rv

不要使用service nfs restart,重启nfs服务也可以但是最好不要用这种方式。


CTI-01:/home #
CTI-01:/home #
CTI-01:/home # cat /etc/exports
# See the exports(5) manpage for a description of the syntax of this file.
# This file contains a list of all directories that are to be exported to
# other computers via NFS (Network File System).
# This file used by rpc.nfsd and rpc.mountd. See their manpages for details
# on how make changes in this file effective.
/share *(rw,all_squash,async,anonuid=65534,anongid=65533)
/home/record *(rw,all_squash,async,anonuid=65534,anongid=65533)


You have new mail in /var/mail/root
CTI-01:/home #
CTI-01:/home #
CTI-01:/home #
CTI-01:/home # exportfs -rv
exporting *:/home/record
exporting *:/share
CTI-01:/home #
CTI-01:/home #


不改在客户端会出现:

[root@localhost ~]#
[root@localhost ~]# mount -a -t nfs 192.168.0.74:/share/faxtest /usr/ccag/etp/ivrfile/fax/
mount: 192.168.0.74:/share/faxtest failed, reason given by server: Permission denied
[root@localhost ~]#

=====================================================================================

服务端改好后,客户端就可以运行mount命令进行挂载了。


======客户端:(41)



mount -a -t nfs 192.168.0.74:/share/faxtest /usr/ccag/etp/ivrfile/fax/
mount -a -t nfs 192.168.0.74:/share/ttstmptest /usr/ccag/etp/ivrfile/ttstmp/





[root@localhost ~]#
[root@localhost ~]# df
鏂囦欢绯荤粺 1K-鍧? 宸茬敤 鍙敤 宸茬敤% 鎸傝浇鐐?
/dev/hda7 95961744 10811152 80197356 12% /
/dev/hda9 9920592 153904 9254620 2% /tmp
/dev/hda8 79356500 4135988 71124344 6% /opt
/dev/hda6 99188468 5082472 88986084 6% /home
/dev/hda5 99188468 8364324 85704232 9% /usr
/dev/hda3 93327 11370 77138 13% /boot
tmpfs 955808 602900 352908 64% /dev/shm
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# mount -a -t nfs 192.168.0.74:/share/faxtest /usr/ccag/etp/ivrfile/fax/
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# df
鏂囦欢绯荤粺 1K-鍧? 宸茬敤 鍙敤 宸茬敤% 鎸傝浇鐐?
/dev/hda7 95961744 10811152 80197356 12% /
/dev/hda9 9920592 153904 9254620 2% /tmp
/dev/hda8 79356500 4135988 71124344 6% /opt
/dev/hda6 99188468 5082472 88986084 6% /home
/dev/hda5 99188468 8364324 85704232 9% /usr
/dev/hda3 93327 11370 77138 13% /boot
tmpfs 955808 602900 352908 64% /dev/shm
192.168.0.74:/share/faxtest
20152864 10117568 10035296 51% /usr/ccag/etp/ivrfile/fax
[root@localhost ~]#
[root@localhost ~]# mount -a -t nfs 192.168.0.74:/share/ttstmptest /usr/ccag/etp/ivrfile/ttstmp/
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# df
鏂囦欢绯荤粺 1K-鍧? 宸茬敤 鍙敤 宸茬敤% 鎸傝浇鐐?
/dev/hda7 95961744 10811152 80197356 12% /
/dev/hda9 9920592 153904 9254620 2% /tmp
/dev/hda8 79356500 4135988 71124344 6% /opt
/dev/hda6 99188468 5082472 88986084 6% /home
/dev/hda5 99188468 8364324 85704232 9% /usr
/dev/hda3 93327 11370 77138 13% /boot
tmpfs 955808 602900 352908 64% /dev/shm
192.168.0.74:/share/faxtest
20152864 10117568 10035296 51% /usr/ccag/etp/ivrfile/fax
192.168.0.74:/share/ttstmptest
20152864 10117568 10035296 51% /usr/ccag/etp/ivrfile/ttstmp
[root@localhost ~]#
[root@localhost ~]#

看到df结果中有我们挂载的路径,就完成了。
如果出现其他问题,可能是nfs服务的问题,也可能是防火墙的问题,或者是路径或者文件权限的问题。

nfs重启:

[root@localhost ivrfile]# service nfs restart
关闭 NFS mountd:[确定]
关闭 NFS 守护进程:[确定]
关闭 NFS quotas:[确定]
关闭 NFS 服务: [失败]
启动 NFS 服务: [确定]
关掉 NFS 配额:[确定]
启动 NFS 守护进程:[确定]
启动 NFS mountd:[确定]
[root@localhost ivrfile]#
[root@localhost ivrfile]#


重新挂载/etc/exports中的路径

[root@localhost ivrfile]#
[root@localhost ivrfile]# exportfs -rv
exporting *:/usr/ccag/etp/ivrfile/ttstmp
exporting *:/usr/ccag/etp/ivrfile/fax
[root@localhost ivrfile]#
[root@localhost ivrfile]#


关闭防火墙

[root@localhost ivrfile]#
[root@localhost ivrfile]# service iptables stop
[root@localhost ivrfile]#
[root@localhost ivrfile]#
[root@localhost ivrfile]#
[root@localhost ivrfile]#
[root@localhost ivrfile]# chkconfig iptables off
[root@localhost ivrfile]#
[root@localhost ivrfile]#

修改挂载路径的读写权限,服务端也要改,否则无法读写。

chmod -R 777 /usr/ccag/etp


其他基本上不会有什么问题。
还有一个现象,就是服务端74上有个路径被挂载后就不能被第2台机器挂载
[root@localhost ivrfile]#
[root@localhost ivrfile]#
[root@localhost ivrfile]# mount -a -t nfs 192.168.0.74:/share/fax /usr/ccag/etp/ivrfile/fax/
mount.nfs: /usr/ccag/etp/ivrfile/fax is already mounted or busy
[root@localhost ivrfile]#

/share/fax这个路径已经被其他机器挂载了,我再想挂载到现在的机器上就报这个错。

=====================================================================================



showmount 查看挂载的目录
showmount -e nfs_server_IP查看指定ip的挂载目录


CTI-01:/etc #
CTI-01:/etc # showmount
Hosts on CTI-01:
192.168.0.*
192.168.0.0/255.255.255.0
192.168.0.71
192.168.0.72
192.168.0.74
192.168.0.75
192.168.0.89
192.168.0.90
192.168.0.91
CTI-01:/etc #
CTI-01:/etc #
CTI-01:/etc #

=====================================================================================