需求
有2台远程服务器,其中一台(A)磁盘空间小,希望通过公网挂载另一台(B)的磁盘。
NFS 挂载
使用nfs(network file system)网络文件系统工具,通过网络使不同机器或者操作系统之间进行磁盘/目录共享,用于宿主机和目标机之间的文件分享。
安装nfs,服务端&客户端均需要安装
sudo apt install -y nfs-kernel-server
配置
- 服务端
在/etc/exports文件添加可以共享的文件夹和允许的客户端地址
/mnt/shared ip-A(rw,no_root_squash,async)
重启nfs服务
service nfs-server restart
- 客户端
创建挂载的目录
sudo mkdir /mnt/disk
挂载远程磁盘
sudo mount -t nfs ip-B:/mnt/disk /mnt/shared
此时,如果ok,可以直接跳过下面的问题排查。
问题排查
我遇到了挂载失败问题,记录下失败原因和解决办法。 上述命令都是没问题的,不过客户端执行挂载后没反应,长时间阻塞等待后,出现timeout、超时的提示,且未挂载成功,此时则需要抓包排查。 排查的详细步骤不再赘述,总之,防火墙需要开通指定端口:
tcp 2049
tcp/udp 111
udp 4046
对应ufw:
sudo ufw allow from [your_ip]/32 to any port 2049 proto tcp
sudo ufw allow from [your_ip]/32 to any port 111
sudo ufw allow from [your_ip]/32 to any port 4046 proto udp