当更新大量文件时,Samba共享文件夹变得没有反应(使用repo同步命令)[关闭] 。

问题描述 投票:0回答:1

我在一台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同步一样)

下面是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
ubuntu-18.04 macos-catalina samba repo
1个回答
0
投票

所以我做了三件事。

1. 日志显示没有错误,但每次他们结束时,打开文件的数量是16384。我把这个更新为937730(只是一个任意的数字,从配置之一

2. 当我运行repo sync时,更新的GIT repo数量增加了,但还是会在某个时候停止(总共有700多个git repos),并出现 "太多打开的文件 "的错误信息。我更新了linux打开文件的限制,使其达到一个较大的数量,但还是会在某些时候停止(总共有700多个git repos),并出现 "太多打开文件 "的错误信息。(https:/askubuntu.comquestions1049058how-to-increase-max-open-files-limit-onubuntu-18-04。)

这个问题还是没有解决,虽然在客户端命令退出之前,会有更多的repo更新.原来是repo命令给服务器带来了过多的打开文件(一些6位数的打开文件号)。

3. 我没有使用'repo sync'来按顺序更新所有700多个repo,而是使用下面的shell脚本来分块更新repo。

repo sync **SPACE SEPARATED LIST OF 20 PROJECTS**
sleep 100

repo sync **SPACE SEPARATED LIST OF 20 PROJECTS**
sleep 100

这不是一个解决方案,但这暂时是可行的。谁能帮忙找一个更好的解决方案?

© www.soinside.com 2019 - 2024. All rights reserved.