Git克隆到NFS磁盘出错:致命错误:写入错误:坏文件描述符。

10

我有一个NFS服务器,共享了一个磁盘(没有SSD缓存)给几个主机使用。当用户从我们的GitLab克隆到这个NFS磁盘时,总是会遇到以下错误:

remote: Compressing objects: 100% (430/430), done.
fatal: write error: Bad file descriptor.61 MiB | 453.00 KiB/s     
fatal: index-pack failed

如果只有一个人进行 git clone,那么就会完成,但是如果多个人同时进行 git,就会出现错误。

这是我们 NFS 服务器的配置:

/data/proj 192.168.1.0/24(rw,no_root_squash,sync,no_subtree_check)

以下是主机挂载信息:

192.168.1.10:/data/proj on /proj type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.2.211,local_lock=none,addr=192.168.1.10)

我试图更改NFS服务器的配置,例如异步,但是它没有生效,更改.gitconfig设置也没有生效。 我认为问题更像是在NFS服务器配置中,但我不知道如何解决,请帮忙!

3个回答

1

我在nfs挂载上使用git时遇到了类似的问题。不过我的错误信息不同:

Cloning into 'tileserver-gl'...
remote: Counting objects: 2179, done.
remote: Compressing objects: 100% (813/813), done.
remote: Total 2179 (delta 1357), reused 2179 (delta 1357)
Receiving objects: 100% (2179/2179), 3.04 MiB | 22.72 MiB/s, done.
fatal: premature end of pack file, 83 bytes missing
warning: die() called many times. Recursion error or racy threaded death!
fatal: premature end of pack file, 81 bytes missing
fatal: index-pack failed

修复实际上与Cao Cự Bảo的答案完全相反。解决方案是在/etc/fstab中的挂载选项中添加sync选项。
添加了这个选项后,git克隆就可以正常工作了。

0

我认为您在配置NFS服务器时使用了带有"同步"选项的导出文件。
要解决这个问题,可以尝试将/etc/exports文件修改如下:

<<folder share nfs>> <<your network>> (rw,**async**)

示例:/home/abc 172.33.32.0/255.255.224.0(rw,async)

在Nfs客户端上:重新挂载nfs。


-1

检查您是否具有对Git存储库的写入访问权限。


提问者说,只有在多个用户同时执行“git clone”时才会出现问题,所以你的回答似乎不相关。此外,这只是一条评论,因此应该发布为评论而不是答案。 - zkoza
在这个问题中:“如果只有一个人git clone,那么就可以完成,如果多个人同时git,就会出现错误”,写入访问并不是问题。 - Eric Aya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接