Samba 共享文件夹在更新大量文件时变得无响应(使用 repo sync 命令)
Samba shared folder becomes unresponsive when updating lot of files (using repo sync command)
我在 Linux (Ubuntu) 机器上有一个代码库,它与使用 samba 的其他机器共享。当从 MacOS (10.15.5) 访问代码库并使用 'repo sync' 时,命令在几个 git 存储库突然更新后停止,并显示以下消息
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. 当我 运行 回购同步时, GIT 回购的更新数量更好但它仍然会在某个时候停止(有总共 700+ git 个回购)和错误消息 "Too many open files"。我将 linux 打开文件限制更新为较大的数量。 (https://askubuntu.com/questions/1049058/how-to-increase-max-open-files-limit-on-ubuntu-18-04)
问题仍未解决,尽管在命令在客户端退出之前会更新更多的回购协议。
事实证明,repo 命令使服务器过载 waaaaay 太多打开的文件(大约 6 digit 打开文件数)。
3. 而不是 运行ning 'repo sync' 会按顺序更新所有 700 多个存储库,我使用下面的 shell 脚本来分块更新 repos
repo sync **SPACE SEPARATED LIST OF 20 PROJECTS**
sleep 100
repo sync **SPACE SEPARATED LIST OF 20 PROJECTS**
sleep 100
这不是解决方案,但目前有效。有人可以帮助找到更好的解决方案吗?
我在 Linux (Ubuntu) 机器上有一个代码库,它与使用 samba 的其他机器共享。当从 MacOS (10.15.5) 访问代码库并使用 'repo sync' 时,命令在几个 git 存储库突然更新后停止,并显示以下消息
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. 当我 运行 回购同步时, GIT 回购的更新数量更好但它仍然会在某个时候停止(有总共 700+ git 个回购)和错误消息 "Too many open files"。我将 linux 打开文件限制更新为较大的数量。 (https://askubuntu.com/questions/1049058/how-to-increase-max-open-files-limit-on-ubuntu-18-04)
问题仍未解决,尽管在命令在客户端退出之前会更新更多的回购协议。 事实证明,repo 命令使服务器过载 waaaaay 太多打开的文件(大约 6 digit 打开文件数)。
3. 而不是 运行ning 'repo sync' 会按顺序更新所有 700 多个存储库,我使用下面的 shell 脚本来分块更新 repos
repo sync **SPACE SEPARATED LIST OF 20 PROJECTS**
sleep 100
repo sync **SPACE SEPARATED LIST OF 20 PROJECTS**
sleep 100
这不是解决方案,但目前有效。有人可以帮助找到更好的解决方案吗?