NFS简介
NFS
即 Network File System
,网络文件系统。客户端将服务器端共享的目录远程挂载到本地。
为了搭建顺利,可暂时先关闭iptables和selinux、firewall。
RPC使用 111端口
来监听来自NFS客户端的请求.
FTP, NFS 和 Samba(SMB/CIFS) 并称为Linux文件共享三大服务
NFS服务端
CentOS7
- 安装
rpcbind
和nfs-utils
:
# 查看NFS是否安装:
rpm -qa rpcbind nfs-utils
# 安装NFS
# debian: apt-get install nfs-utils
yum install rpcbind nfs-utils
- 启动
rpcbind
和nfs
:
# 启动rpcbind
systemctl start rpcbind.service
# 启动nfs服务
systemctl start nfs.service
查看rpc服务是否自动启动
# 查看rpc服务是否自动启动
ss -tnulp | grep 111
或
rpcinfo -p
rpcinfo -p <your_ip or 127.0.0.1 or localhost>
设置开机启动:
systemctl enable rpcbind
systemctl enable nfs
- 配置/etc/exports
mkdir /data
vim /etc/exports
/data 192.168.1.2(rw,no_root_squash,sync,insecure)
exportfs -rv
参数:
•ro:目录只读
•rw:目录读写
•sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
•async:将数据先保存在内存缓冲区中,必要时才写入磁盘
•all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
•no_all_squash:与all_squash取反(默认设置)
•root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
•no_root_squash:与rootsquash取反
•anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)
•anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户
注:添加no_root_squash参数,表明此时客户端root用户的身份等同于NFS server上面的root用户,否则客户端只能同步到服务器的数据,无建立文件或文件夹等权限。
Alpine
安装:
apk add nfs-utils
添加开机启动
rc-update add nfs
启动
rc-service nfs start
NFS客户端
Linux
客户端只需要安装 rpcbind
服务即可,无需安装nfs和开启nfs服务。
# 安装rpcbind
yum install -y rpcbind
# 启动 rpcbind
systemctl start rpcbind.service
# 调试
调试远程NFS是否可用
showmount -e <your_nfs_ip>
# 挂载远程NFS系统至本地/home/nfsdir目录
mount -t nfs <your_nfs_ip>:/data /home/nfsdir
df -h
使用密码认证:
mount -t nfs -o username=<username>,password=<password> <NFS_server_IP>:<NFS_shared_directory> <mount_point>
:NFS 共享的用户名 :NFS 共享的密码 - <NFS_server_IP>:NFS 服务器的 IP 地址
- <NFS_shared_directory>:NFS 共享的目录
<mount_point>:本地挂载点,即在本地系统中挂载 NFS 共享的目录
设置开机自动挂载:
vim /etc/fstab
10.10.33.38:/data /mnt/data/ nfs defaults 0 0
NFS远程文件系统的挂载和卸载:
mount -a
umount /mnt/nfs
Windows
从控制面板开启 Windows功能
中的 NFS服务
- NFS客户端
showmount -e 192.168.3.15
导出列表在 192.168.3.15:
/mnt/nfs_service 192.168.3.8
mount 192.168.3.15:/mnt/nfs_service X:
X: 现已成功连接到 192.168.3.15:/mnt/nfs_service
命令已成功完成。
阿里云安全组
网上查找到的教程都没有用。最后发现阿里云安全组,要手动开放NFS需要的所有端口,才可正常使用
问题:
showmount -e <your_aliyun_ip>
以上命令,会长时间无响应,然后直接超时断开!无任何报错。所以不好排查。
解决方式( rpcinfo
命令):
rpcinfo -p <your_aliyun_ip>
以上命令,会列出 NFS
使用的 tcp/udp
端口。把这些端口加入安全组列表。我这里是5个端口:
- 111 portmapper tcp udp
- 20048 mountd tcp udp
- 2049 nfs tcp udp
- 55660 nlockmgr udp
- 34582 nlockmgr tcp
报错
- 客户端mount请求端口大于1024,导致挂载失败.报错:
mount.nfs:access denied by server while mounting <remote_ip>:/remote_dir
解决:在 /etc/exports
目录的客户端列表选项中,加 insecure
选项:
/home/nfs client_ip(rw,no_root_squash,sync,insecure)
查看mount挂载的使用端口:
cat /var/log/messages | grep mount
- 提示 mount: 文件系统类型错误、选项错误、
:/dir 上有坏超级块
mount: 文件系统类型错误、选项错误、xxx.xxx.xxx.xxx:/nfs 上有坏超级块
缺少代码页或助手程序,或其他错误
(对某些文件系统(如 nfs、cifs) 您可能需要
一款 /sbin/mount.<类型> 助手程序)
有些情况下在 syslog 中可以找到一些有用信息- 请尝试
dmesg | tail 这样的命令看看。
解决:安装nfs-utils
yum -y install nfs-utils
systemctl start nfs-utils
systemctl enable nfs-utils
https://blog.csdn.net/qq_27070443/article/details/86135384
centos7之NFS使用 https://www.cnblogs.com/lei0213/p/8570785.html
centos7下搭建nfs服务器与连接详解 https://blog.csdn.net/dengyadeng/article/details/79549632
linux 磁盘管理:mount挂载,/etc/fstab配置文件 https://www.cnblogs.com/along21/p/7410619.html
mount.nfs:access denied by server while mounting **原因 https://www.xuebuyuan.com/2110924.html
NFS /etc/exports参数解释 https://blog.csdn.net/qq_36357820/article/details/78488077alpine NFS服务搭建 https://wiki.alpinelinux.org/wiki/Setting_up_a_nfs-server
Windows10配置NFS服务端和客户端 https://www.cnblogs.com/xuxy03/p/6232378.html