引言
- NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。
- 在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样,也就是说客户端PC可以挂载NFS服务器所提供的目录,并且挂载之后这个目录看起来如同本地的磁盘分区一样,可以使用cp、cd、mv、rm及df等与磁盘相关的命令。
NFS(网络文件系统)搭建
服务端配置
-
在NFS服务器上安装NFS
[root@youxi1 ~] yum -y install rpcbind nfs-utils
-
启动NFS
[root@youxi1 ~]systemctl start rpcbind [root@youxi1 ~]systemctl enable rpcbind [root@youxi1 ~]systemctl start nfs-server # NFS依赖rpcbind进行通讯,所以要先启动rpcbind [root@youxi1 ~]systemctl enable nfs-server [root@youxi1 ~]netstat -antup | grep 2049 # 以下为示例输出 tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp6 0 0 :::2049 :::* LISTEN - udp 0 0 0.0.0.0:2049 0.0.0.0:* - udp6 0 0 :::2049 :::* -
-
修改NFS服务器的配置文件**/etc/exports**,将已有的**/data/xxxx/public/**文件夹共享出去
# 可以共享给指定IP(192.168.1.7),也可以共享给指定网段(192.168.1.0/24),还可以共享给所有IP(*).rw代表读写权限。 [root@youxi1 ~]vim /etc/exports /data/xxxx/public/ *(rw,no_root_squash) # 重新读取配置文件,而不中断服务 [root@youxi1 ~]exportfs -rv exporting *:/data/xxxx/public/ # 如果在已有的/etc/exports中添加新的路径, # 需要重启NFS之后生效(执行此命令会使已有任务中断,需确认是否有其他用户任务运行中) [root@youxi1 ~]service nfs restart
-
/etc/exports配置文件中权限参数常用的有如下五个:
参数名称 含义 ro
只读权限 rw
读写权限 sync
同步写入内存与磁盘当中 no_all_squash
保留共享文件的UID和GID(默认) no_root_squash
使得root用户具有根目录的完全访问权限
-
客户端配置
- 安装nfs-common或者nfs-utils(基于Ubuntu)
$ sudo apt-get update $ sudo apt-get install nfs-common -y # 高版本Ubuntu $ sudo apt-get update $ sudo apt-get install nfs-utils -y
- 使用
#! /bin/bash # 192.168.1.0:/data/xxxx/public/ NFS服务器ip地址和对应目录 # dataset/ 客户端挂载的目录(注意:挂载点不会被自动创建,必须提前存在) # !!!注意:pulibc目录下的内容,就会放到dataset目录下 sudo mount -t nfs4 192.168.1.0:/data/xxxx/public/ dataset/ -o nolock,rsize=32768,wsize=32768,timeo=15,noatime,nodiratime # 正常使用即可 python xxxx.py
可能遇见问题及解决方案
Q1: 遇到mount.nfs: access denied by server while mounting
A:
- 将要挂载的目录权限设置为777
- 修改配置文件**/etc/exports**, 加入insecure选项,保存退出
- 重启NFS服务:
sudo service nfs restart