摘要
您如何将Linux配置为既可以从本地磁盘/文件系统读取又可以同时写入网络共享,而不是在没有数据通过网络传输时进行读取,然后在通过本地磁盘访问网络时通过网络发送数据闲?
同时读取和写入要快得多,而不是只交替执行一项操作,然后再执行另一项操作。
细节
我正在将大量数据从Linux计算机上的本地磁盘移至NAS设备。
我rsync
用来基本上复制/srv/data
到/mnt/nas
,这是CIFS挂载。
它运行良好,读取速度为100MB /秒,写入NAS的速度为100MB /秒(千兆网络的限制),并且读取和写入同时进行。
但是现在,几个小时后,我发现它正在从本地磁盘读取,然后在将其写入NAS时停止读取,然后当没有更多数据要写入NAS时,它将恢复从磁盘中读取再次。读取磁盘时网络处于空闲状态,而使用网络时磁盘处于空闲状态。
不用说,先读取200MB再写入200MB比同时读取和写入200MB所需的时间长得多。
如何配置内核,使其同时保持早期的读写行为,而不是在读写之间交替进行,一次只执行一次操作?
一些观察:当本地磁盘以100 + MB / sec的速度读取时,一切似乎都并行发生,但是一旦磁盘变慢(由于某种原因,现在似乎仅以20MB / sec的速度),这就是这种读/写操作切换似乎发生了。
我还sync
可以每隔几秒钟手动运行一次,以使写入与读取并行发生(尽管显然速度有所降低),但是放入sync
一个while
循环使其每五秒钟运行似乎不是正确的解决方案...
内核似乎会缓存大约1GB的数据,然后尽可能快地通过网络将其写出-很好-我只是不明白为什么在通过USB发送数据时为什么需要停止读取慢速磁盘网络。