openwrt下搭建nfs

主机lan口ipwan口ip身份
服务端设备192.168.253.254192.168.200.253服务端
客户端设备192.168.253.253192.168.200.1客户端

NFS的全称是Network File System(网络文件系统);其主要功能是通过网络让不同的设备间共享文件或者目录。NFS客户端一般是应用服务器,通过挂载可以将NFS服务器端共享的目录挂载到客户端本地的目录下使用,这样看起来就像客户端使用自己的目录进行挂载

RPC服务为远程调用服务,测试NFS需要使用RPC的主程序rpcbind

NFS服务端

注意:overlay挂载类型不支持NFS协议

exportfs -r   刷新并判断配置是否正常

问题1:exportfs requires fsid= for nfs export

解决方式:配置添加:fsid=1

问题2:客户端挂载后无权限操作

解决方式:配置no_root_squash

通过u盘进行挂载:

本次测试所使用的u盘为FAT32格式,内存大小为16G

未插上u盘时

root@server:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 5.3M      5.3M         0 100% /rom
tmpfs                    60.7M     76.0K     60.6M   0% /tmp
/dev/mtdblock5            8.8M    880.0K      8.0M  10% /overlay
overlayfs:/overlay        8.8M    880.0K      8.0M  10% /
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sda1               128.9M     32.0K    128.9M   0% /sysmount/sda1

插上u盘后

root@server:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 5.3M      5.3M         0 100% /rom
tmpfs                    60.7M     76.0K     60.6M   0% /tmp
/dev/mtdblock5            8.8M    880.0K      8.0M  10% /overlay
overlayfs:/overlay        8.8M    880.0K      8.0M  10% /
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sda1               128.9M     32.0K    128.9M   0% /sysmount/sda1
/dev/sdb1                14.4G    780.8M     13.6G   5% /sysmount/sdb1

在/sysmount/sdb1下创建共享目录nfsservice并给文件夹修改权限

root@server:/sysmount/sdb1# mkdir nfsservice
root@server:/sysmount/sdb1# chmod 777 /sysmount/sdb1/nfsservice

服务器端写主配置文件

root@server:/sysmount/sdb1# vi /etc/exports
root@server:/sysmount/sdb1# cat /etc/exports
/sysmount/sdb1/nfsservice *(rw,fsid=1,no_root_squash,insecure,sync,no_subtree_check)

exports -r命令进行加载配置文件

注意:需要先开启rpcbind服务再开启nfs服务

root@server:/sysmount/sdb1# /etc/init.d/rpcbind restart
root@server:/sysmount/sdb1# /etc/init.d/rpcd restart
root@server:/sysmount/sdb1# /etc/init.d/nfsd restart

在服务器端进行测试是否能够连接到共享目录

root@server:/sysmount/sdb1# showmount -e
Export list for server:
/sysmount/sdb1/nfsservice *
root@server:/sysmount/sdb1# showmount -e 192.168.253.254
Export list for 192.168.253.254:
/sysmount/sdb1/nfsservice *

测试网络连通(两个设备通过wan口互连)

root@server:/sysmount/sdb1# ping 192.168.200.1
PING 192.168.200.1 (192.168.200.1): 56 data bytes
64 bytes from 192.168.200.1: seq=0 ttl=64 time=0.750 ms
^C
--- 192.168.200.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.750/0.750/0.750 ms

成功挂载后,在/tmp/share目录下可以对文件进行读取与修改;mount -t nfs可以替换为mount.nfs

root@server:/# mount -t nfs 127.0.0.1:/sysmount/sdb1/nfsservice /tmp/share
root@server:/# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 5.3M      5.3M         0 100% /rom
tmpfs                    60.7M     80.0K     60.6M   0% /tmp
/dev/mtdblock5            8.8M    884.0K      7.9M  10% /overlay
overlayfs:/overlay        8.8M    884.0K      7.9M  10% /
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sda1               128.9M     32.0K    128.9M   0% /sysmount/sda1
/dev/sdb1                14.4G    780.9M     13.6G   5% /sysmount/sdb1
127.0.0.1:/sysmount/sdb1/nfsservice
                         14.4G    780.9M     13.6G   5% /tmp/share

NFS客户端

包支持:kmod-fs-nfs,nfsv3.ko、nfsv4.ko

即在服务器上开启NFS服务器,然后客户端使用mount -t nfs命令挂载即可。

测试网络连通(设备wan口互连)

root@client:~# ping 192.168.200.253
PING 192.168.200.253 (192.168.200.253): 56 data bytes
64 bytes from 192.168.200.253: seq=0 ttl=64 time=1.037 ms
64 bytes from 192.168.200.253: seq=1 ttl=64 time=1.685 ms
64 bytes from 192.168.200.253: seq=2 ttl=64 time=0.646 ms
64 bytes from 192.168.200.253: seq=3 ttl=64 time=0.640 ms
64 bytes from 192.168.200.253: seq=4 ttl=64 time=0.666 ms
^C
--- 192.168.200.253 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 0.640/0.934/1.685 ms

客户端创建目录

root@client:~# mkdir /mnt/share

进行挂载,得到如下报错

root@client:~# mount -t nfs 192.168.200.253:/sysmount/sda1/share /mnt/share
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.

根据提示加上参数 -o nolock再次尝试挂载得到如下报错

root@client:/mnt/share# mount -t nfs -o nolock 192.168.200.253:/sysmount/sda1/share /mnt/share
mount.nfs: Connection refused
mount: mounting 192.168.200.253:/sysmount/sda1/share on /mnt/share failed: Connection refused

通过dmesg查看得到如下日志结果

[259671.777720] NFS: bad mount option value specified: minorversion=1
[259689.720991] NFS: bad mount option value specified: minorversion=1

通过查阅相关资料文档发现需要加上 -o nfsvers=3参数

root@client:~# mount -t nfs -o nfsvers=3,nolock 192.168.200.253:/sysmount/sda1/share /mnt/share

仍然得到两条拒绝连接的报错

mount.nfs: Connection refused
mount: mounting 192.168.200.253:/sysmount/sda1/share on /mnt/share failed: Connection refused

改变思路使用mount.nfs进行挂载依然提示mount.nfs: Connection refused

root@client:~# mount.nfs -o nfsvers=3,nolock 192.168.200.253:/sysmount/sda1/share /mnt/share
mount.nfs: Connection refused

使用mount.nfs4进行挂载也是提示mount.nfs: Connection refused

root@client:~# mount.nfs4 -o nfsvers=3,nolock 192.168.200.253:/sysmount/sda1/share /mnt/share
mount.nfs4: Connection refused

通过再次查阅相关资料发现可能是防火墙拦截导致连接失败

先把客户端防火墙关掉再试一遍

  • root@client:~# /etc/init.d/firewall stop
    Warning: Unable to locate ipset utility, disabling ipset support
    Warning: Section @zone[1] (wan) cannot resolve device of network 'wan6'
    Warning: Section @rule[12] (test1) does not specify a protocol, assuming TCP+UDP
    Warning: Section @rule[13] (test2) does not specify a protocol, assuming TCP+UDP
    
     * Flushing IPv4 filter table
     * Flushing IPv4 nat table
     * Flushing IPv4 mangle table
     * Flushing IPv6 filter table
     * Flushing IPv6 mangle table
     * Flushing conntrack table ...
     root@client:~# mount.nfs -o nfsvers=3,nolock 192.168.200.253:/sysmount/sda1/share /mnt/share
    mount.nfs: Connection refused
    

将客户端与服务端的防火墙均关闭,挂载成功,在客户端新建bbb.txt

root@client:~# mount.nfs -o nfsvers=3,nolock 192.168.200.253:/sysmount/sda1/share /mnt/share
root@client:~# cd /mnt/
root@client:/mnt# ls
share
root@client:/mnt# cd share/
root@client:/mnt/share# ls
aaa.txt
root@client:/mnt/share# vi bbb.txt
root@client:/mnt/share# root@UST-OS:/mnt/share# ls
aaa.txt  bbb.txt

去服务端的/sysmount/sda1/share目录下查看,发现可以同步更新,且两端均可对文件进行读写

root@server:~# cd /sysmount/sda1/share/
root@server:/sysmount/sda1/share# ls
aaa.txt  bbb.txt
root@server:/sysmount/sda1/share# cat bbb.txt
hello

在客户端可以看见挂载信息

root@client:/mnt/share# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 8.8M      8.8M         0 100% /rom
tmpfs                    60.7M    124.0K     60.6M   0% /tmp
/dev/mtdblock5            5.4M      1.1M      4.3M  21% /overlay
overlayfs:/overlay        5.4M      1.1M      4.3M  21% /
tmpfs                   512.0K         0    512.0K   0% /dev
192.168.200.253:/sysmount/sda1/share
                          7.3G    112.7M      7.2G   2% /mnt/share

粗略测试nfs写和读,数据不一定特别准确

root@server:/mnt/share# time dd if=/dev/zero of=/mnt/share/testfile bs=8k count=10k
10240+0 records in
10240+0 records out
real    0m 30.19s
user    0m 0.02s
sys     0m 1.39s

传输总大小为80MB,传输时间为30.19s ,得出写的传输速率为80/30.19=2.65MB/S

nfs读

root@server:/mnt/share# time dd if=/mnt/share/testfile of=/dev/null bs=8k
10240+0 records in
10240+0 records out
real    0m 8.60s
user    0m 0.07s
sys     0m 1.19s

读的速率为80/8.6=9.3MB/s

本次测试是采用关闭防火墙的形式完成的,也可以通过开启防火墙通过修改放行服务相对应的端口而进行测试

注意事项

如果客户端正在挂载中,服务端突然出现事故,nfs服务宕机了,客户端挂载目录会出现卡死现象,可使用命令umount -lf强制解除挂载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenWrt支持使用NFS(Network File System)来实现远程文件共享。NFS协议是一种基于网络的文件系统,它允许网络中的计算机之间共享目录和文件。通过NFS,可以将一个目录(或文件)挂载到另一个计算机上,使得另一个计算机上的用户可以像访问本地文件一样访问远程共享文件。 要在OpenWrt上启用NFS,需要进行以下步骤: 1. 安装NFS支持包。在OpenWrt上,可以使用opkg包管理器来安装nfs-utils和kmod-fs-nfs支持包。运行以下命令: ``` opkg update opkg install nfs-utils kmod-fs-nfs ``` 2. 配置NFS服务器。编辑/etc/exports文件,添加要共享的目录和允许访问该目录的主机。例如,要共享/mnt/data目录并允许192.168.1.100主机访问,可以将以下条目添加到/etc/exports文件中: ``` /mnt/data 192.168.1.100(rw,sync,no_root_squash) ``` 在上面的条目中,rw表示可读写访问,sync表示同步写入,no_root_squash表示允许root用户访问。 3. 启动NFS服务器。可以使用以下命令启动NFS服务器: ``` /etc/init.d/nfsd enable /etc/init.d/nfsd start ``` 4. 在客户端上挂载共享目录。在客户端上,可以使用mount命令将共享目录挂载到本地目录。例如,要将192.168.1.1服务器上的/mnt/data目录挂载到本地/mnt/nfs目录,可以运行以下命令: ``` mount -t nfs 192.168.1.1:/mnt/data /mnt/nfs ``` 在上面的命令中,-t nfs表示使用NFS协议挂载,192.168.1.1:/mnt/data表示要挂载的共享目录,/mnt/nfs表示本地目录。 以上就是在OpenWrt上使用NFS实现远程文件共享的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值