ubuntu-18.04 - 更新大量文件时,Samba 共享文件夹变得无响应(使用 repo sync 命令)
问题描述
我有一个基于 Linux (Ubuntu) 机器的代码库,它与使用 samba 的其他机器共享。从 MacOS (10.15.5) 访问代码库并使用“repo sync”时,命令会在一些 git repos 突然更新后停止,并显示以下消息
fatal: Unable to read directory. Resource temporarily unavailable!
我不确定为什么会这样。在我重新挂载 samba 共享文件夹之前没有任何效果
日志不显示任何错误。关于可能导致这种情况的任何线索?
- 网络很稳固。它的两个设备与静态 IP 连接
- 检查了运行 samba 服务器的 linux 机器上的 ulimit。它设定了一个巨大的价值
- 读写共享文件很好。复制单个大文件也没有问题。不知何故更新大量小文件会导致问题(如 repo sync 所做的那样)
这是 samba 的相关配置
## Samba Version is 4.7.6-Ubuntu
[Global]
min protocol = SMB2
log level = 2
syslog = true
max log size = 1000
; Disabled this for debugging
; vfs objects = catia fruit streams_xattr
; fruit:metadata = stream
; fruit:model = MacSamba
; fruit:posix_rename = yes
; fruit:veto_appledouble = no
; fruit:wipe_intentionally_left_blank_rfork = yes
; fruit:delete_empty_adfiles = yes
[Extension_Project]
path = /******
valid users = *****
guest ok = no
read only = no
writable = yes
browseable = yes
解决方案
所以我做了三件事:
1.日志显示没有错误,但每次打开文件数为 16384 时它们都结束。我将其更新为 937730(只是其中一个配置中的任意数字)
2.当我运行 repo sync 时,GIT repo 更新的数量更好,但它仍然会在某个时候停止(总共有 700 多个 git repos),并显示错误消息“打开的文件太多”。我将 linux 打开文件限制更新为一些较大的数字。(https://askubuntu.com/questions/1049058/how-to-increase-max-open-files-limit-on-ubuntu-18-04)
该问题仍未解决,尽管在客户端退出命令之前会更新更多的 repo。原来 repo 命令用 waaaaay 太多打开的文件(一些 6 位数的打开文件号)使服务器超载。
3.我没有运行将顺序更新所有 700 多个 repos 的“repo sync”,而是使用下面的 shell 脚本以块的形式更新 repos
repo sync **SPACE SEPARATED LIST OF 20 PROJECTS**
sleep 100
repo sync **SPACE SEPARATED LIST OF 20 PROJECTS**
sleep 100
这不是一个解决方案,但目前可行。有人可以帮助找到更好的解决方案吗?