mount 挂载

Centos 7

Centos7配置nfs服务实现共享文件
将A服务器的文件,通过共享挂载到B服务器的目录下实现文件的同步存取

安装 NFS 服务器所需的软件包
安装nfs:yum -y install nfs-utils rpcbind

实验环境:A: Centos7.6.1810 B:Centos7.6.1810
1.在A,B服务器安装nfs

yum install nfs-utils
#安装此服务时会同时安装rpcbind
  1. A服务器上
systemctl start nfs
systemctl enable nfs
systemctl start rpcbind
systemctl enable rpcbind
vi /etc/exports
#添加允许B服务器的共享访问
/home *(rw,sync,no_root_squash,no_subtree_check)
/mnt/hgfs *(rw,sync,no_root_squash,no_subtree_check)
systemctl restart nfs

Ubuntu配置NFS服务

1) Ubuntu安装nfs服务器:sudo apt install nfs-kernel-server
2)修改配置文件:sudo vim /etc/exports
eg. /home/embedfire/workdir 192.168.1.*(rw,sync,all_squash,anonuid=1000,anongid=1000,no_subtree_check)
3)重启NFS服务:sudo service nfs-kernel-server restart

1.安装nfs-server

root@MS-HJYOPWFIBZUV:~# apt-get install nfs-kernel-server
root@MS-HJYOPWFIBZUV:~# /etc/init.d/nfs-kernel-server restart
 * Stopping NFS kernel daemon                                                                                    [ OK ]
 * Unexporting directories for NFS kernel daemon...                                                              [ OK ]
 * Exporting directories for NFS kernel daemon...                                                                [ OK ]
 * Starting NFS kernel daemon
 * Not starting: portmapper is not running

2.关闭防火墙

root@MS-HJYOPWFIBZUV:~# sudo ufw status
Status: inactive
root@MS-HJYOPWFIBZUV:~# sudo ufw disable
Firewall stopped and disabled on system startup

3.安装并运行rpcbing

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package rpcbing
root@MS-HJYOPWFIBZUV:~# sudo service rpcbind start
 * Starting RPC port mapper daemon rpcbind
ln: failed to create symbolic link '/run/sendsigs.omit.d/rpcbind': No such file or directory   [fail]
root@MS-HJYOPWFIBZUV:~# mkdir /run/sendsigs.omit.d
root@MS-HJYOPWFIBZUV:~# touch /run/sendsigs.omit.d/rpcbind
root@MS-HJYOPWFIBZUV:~# sudo service rpcbind start
 * Already running: rcpbind

4.启动nfs服务

root@MS-HJYOPWFIBZUV:~# /etc/init.d/nfs-kernel-server restart
 * Stopping NFS kernel daemon                                                                                    [ OK ]
 * Unexporting directories for NFS kernel daemon...                                                              [ OK ]
 * Exporting directories for NFS kernel daemon...                                                                [ OK ]
 * Starting NFS kernel daemon

配置相关

#####配置详解#####
/data       IP(option)
共享目录        地址(权限)
权限有:
1.访问权限:
rw:运行读写
ro:只读
2.用户映射权限
no_root_squash:与root_squash相反
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置)
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:同上
3.其他选项
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置)
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

3.B服务器上

systemctl start nfs
systemctl enable nfs
mkdir /tmp/nfs
mount -t nfs -o nolock 192.168.43.2:/mnt/hgfs /tmp/nfs/

4.配置B开机自动挂载

chmod +x /etc/rc.d/rc.local
vi /etc/rc.d/rc.local
#添加如下内容
mount -t nfs A-IP:/data /data

5.状态相关命令

#查看挂载详情
df -Th
#为rpcbind和nfs做开机启动
systemctl enable rpcbind.service
systemctl enable nfs-server.service
#查看已共享的目录,命令
showmount -e
showmount -e 192.168.43.2
#查看exportfs
 exportfs -r

6.设置开机挂载

#参考编辑/etc/fstab

7.No route to host
使用 ping 192.168.1.113 结果是正常的;
其实出现上面的这种原因是防火墙没有关闭;
centos7 和centos6防火墙是不一样的,
centos7是 firewall
centos6是 iptables

 #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
firewall-cmd --state
#启动一个服务:
systemctl start firewalld.service
#关闭一个服务:
systemctl stop firewalld.service
#在开机时启用一个服务:
systemctl enable firewalld.service
#在开机时禁用一个服务:
systemctl disable firewalld.service

8.客户端提示Permission denied

mount -t nfs -o nolock 192.168.43.2:/mnt/hgfs/for_linux /tmp/nfs/
mount: mounting 192.168.43.2:/mnt/hgfs/for_linux on /tmp/nfs/ failed: Permission denied

修改服务端

#强制重新读取/etc/exports文件
exportfs -ra
#提示该信息,需要将/etc/exports中的权限增加fsid即可
exportfs: /mnt/hgfs/for_linux requires fsid= for NFS export
#修改exports
vi /etc/exports
#增加fsid=0,
/home *(rw,sync,no_root_squash,no_subtree_check)
/mnt/hgfs/for_linux *(fsid=0,rw,sync,no_root_squash,no_subtree_check)
#再次重启nfs服务
systemctl restart nfs

Windows配置NFS

1)启用NFS服务:启用或关闭window给功能中勾选NFS


开启NFS

2)映射驱动器中填入\192.168.1.11\mnt


添加网络磁盘

解决中文乱码问题(非必要不改,可能导致其他应用服务不可用)

主要原因是微软NFS协议不支持UTF-8的问题,导致文件乱码,NAS中文件管理器显示正常。
目前WIN10中已含有一个Beta设置,支持全局 UTF-8,修改后即可正常显示,按下Win+R,输入 intl.cpl,点击确定。进入[管理],点击[更改系统区域设置],然后选择Beta版。

修改支持UTF-8

解决nfs服务在mount挂载报错failed: Permission denied

我的环境:服务端云服务器,客户端嵌入式设备。
云服务器和云服务器控制台防火墙均关闭,并且输入showmount -e正确显示文件路径,在其他linux主机中输入showmount -e 服务器ip也正确显示文件路径。但在嵌入式设备挂载时报错

mount: mounting x.x.x.x:/home/xx/nfs on /root/nfs failed: Permission denied
在云服务器,通过查看/var/log/syslog发现日志

rpc.mountd[468]: refused mount request from x.x.x.x for /home/xx/nfs (/home/xx/nfs): illegal port 37232
解决方法:

在服务器端修改/etc/exports为

cat /etc/exports
/home/xx/nfs *(rw,sync,no_root_squash,no_subtree_check,insecure)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容