目录
[TOC]
不要搞这个nfs,我用了好久才发现所有人都可以访问,多个客户端专门设置ip又麻烦,推荐用nfsv4+Kerberos,但是我看了教程感觉好麻烦,索性直接用现成的rclone+sftp
服务端:
Ubuntu下NFS Server安装配置
Ubuntu安装nfs-server
apt-get install nfs-kernel-server
centos使用这条命令安装
yum install -y nfs-utils rpcbind
关闭防火墙
sudo ufw disable
systemctl stop firewalld.service
启动rpcbind和nfs并设置开机启动
systemctl start rpcbind.service
systemctl start nfs-server.service
systemctl enable rpcbind.service
systemctl enable nfs-server.service
确认NFS服务器启动成功:
rpcinfo -p
建立nfs专用文件夹,这个文件夹将在第3不配置成为与客户端共享的文件夹
mkdir -p /home/nfs/test
配置nfs
vim /etc/exports
配置如下:
/home/nfs/ *(async,insecure,no_root_squash,no_subtree_check,rw)
注:nfs允许挂载的目录及权限,在文件/etc/exports
中进行定义,各字段含义如下:/home/nfs/
:与nfs服务客户端共享的目录,这个路径必须和你前面设置的文件的路径一致!*
:允许所有的网段访问,建议改成客户端ip
rw
:来访者的权限,rw表示可读写,ro表示只能读取不能修改async
:表示异同步,同步用sync,推荐使用asyncroot_squash
当登录NFS主机使用共享目录的使用者是root时,其权限将被转换成为匿名使用者,通常它的UID与GID都会变成nobody身份。no_root_squash
: 如果登录NFS主机使用共享目录的使用者是root
,那么对于这个共享的目录来说,它具有root
的权限
如果端口号大于1024
,则需要将 insecure
选项加入到配置文件(/etc/exports
)相关选项中mount
客户端才能正常工作no_subtree_check
:不检查父目录的权限。
重启nfs服务
/etc/init.d/nfs-kernel-server restart
或
systemctl restart nfs-kernel-server.service
显示共享出的目录,校验配置是否成功
showmount -e
本机测试挂载
mkdir -p /mnt/nfs-temp
sudo mount -t nfs 127.0.0.1:/home/nfs /mnt/nfs-temp
如果/mnt/nfs-temp
中有文件夹test
即说明nfs挂载成功
# root @ mx in /mnt [20:34:34]
$ ls -la /mnt/nfs-temp
total 12
drwxr-xr-x 3 root root 4096 Apr 29 20:34 .
drwxr-xr-x 3 root root 4096 Apr 29 20:33 ..
drwxr-xr-x 2 root root 4096 Apr 29 20:34 test
# root @ mx in /mnt [20:34:36]
后面客户端也是使用这条命令挂载
卸载本机测试挂载
umount -l /mnt/nfs-temp
删除本机nfs测试挂载路径
rm -r /mnt/nfs-temp
接下来就可以去客户端挂载了
客户端:
Ubuntu下nfs-client安装和配置
Ubuntu安装nfs
sudo apt-get install nfs-common rpcbind
centos使用这条命令安装
yum install -y nfs-utils rpcbind
启动并设置开机自启
systemctl enable rpcbind.service
systemctl start rpcbind.service
客户端不需要启动nfs服务,只需要启动rpcbind服务.
客户端挂载服务端的目录
mkdir -p /mnt/nfs
sudo mount -t nfs 127.0.0.1:/home/nfs /mnt/nfs
127.0.0.1
改成服务端ip
取消挂载用这个指命令
sudo umount /mnt
设置开机自动挂载
4、随系统启动自动挂载
编辑
vim /etc/fstab
追加:
127.0.0.1:/home/nfs /mnt nfs rw,tcp,intr 0 1
umount 报错umount.nfs4: /home/test: device is busy
①lsof
lsof /home/test
然后kill掉查出来的PID,再次尝试umount,看是否可以,不可以的话再试试下面的。
②fuser
fuser -mv /home/test
-v选项会打印出PID,这时候去kill掉或者直接这样:
fuser -kmv /home/test
直接会kill
掉,不用再单独kill
了。(小心有可能ssh或者其他重要的东西会被停止)
再次尝试umount
。