NFS拷贝大文件出错的解决办法
1、问题背景
在学习《韦东山嵌入式》第二期视频的时候,需要把arm-jz2440通过网线与PC机相连,使用NFS挂载文件,在PC上编译好模块后传输到arm-jz2440的Linux系统上再运行。一切准备就绪,挂载也成功,当时的挂载命令:
mount -t nfs -o nolock 192.168.36.48:/nfs /mnt
在挂载目录mnt上copy小文件(1K~20K左右)到arm-jz2440的Linux系统上没有发生问题,当copy驱动程序的模块.ko文件(64K左右)的时候出现错误:
nfs:server is not responding, still trying
2、解决办法
网上搜索一下原因,是PC上的网卡速度和arm-jz2440上的网卡速度不匹配产生的,解决办法是PC机和arm-jz2440的NFS都设置相同的最大数据传输速率。
小白的PC用的是haneWIN,设置很简单。到此就应该能够解决问题,但是小白尝试后发现参数要调试一下,并不是所有的情况都用速率1024(网上基本是1024)能解决。以下是小白的尝试,发现小白的arm-jz2440需要到4096才能正常传输大文件。
第一次尝试(失败)
mount -t nfs -o nolock,rsize=1024,wsize=1024 192.168.36.48:/nfs /mnt
第二次尝试(失败)
mount -t nfs -o nolock,rsize=2048,wsize=2048 192.168.36.48:/nfs /mnt
第三次尝试(成功)
mount -t nfs -o nolock,rsize=4096,wsize=4096 192.168.36.48:/nfs /mnt
PS:所以每个人的单板都需要自己调试一下,速率成倍增加就足够了。