0

我正在对包含大约 9K 目录的目录进行 Subversion 更新。存储它的文件系统有刚刚超过 4K 的空闲 inode。我看到运行 svn 更新的问题,因为系统用完了 svnclient 创建的 .lock 文件的 inode:

user@host [cwd]$ svn update
svn: Can't open file 'baddir/.svn/lock': No space left on device
user@host [cwd]$ ls -1 | wc -l
8934
user@host [cwd]$ df -h .
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg00-lvol5
                      2.9G  958M  1.8G  35% /opt
user@host [cwd]$ df -hi .
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/mapper/vg00-lvol5
                        186K    182K    4.3K   98% /opt
user@host [cwd]$ ls -1 | grep -n . | grep baddir
2714:baddir

是的,已经消毒了。:) 似乎正在发生的是 svn 创建了一堆 .lock 文件。我认为问题在于取消链接的速度不够快,因为如果我使用 strace ( strace -o /tmp/deleteme svn update) 减慢操作速度,则更新会在其他目录上失败。如果没有减慢的 strace,它每次都发生在完全相同的目录上。

现在调整这个文件系统的大小会很不方便(它必须是 ext3 和这个大小,暂时),由于 ext3s 不足,我无法添加 inode。有没有办法让 svn 创建更少的 .lock 文件,或者使用操作系统提供的不需要创建额外文件的实际文件锁定功能?我知道flock 在NFS3 等上不起作用——但我不检查NFS。或者,是否有一些 ext3 可调参数可以用来加速断开链接?

有什么聪明的解决方法吗?它可以运行“svn update ./*”,但这需要永远。比如,几十分钟。我猜想创建 9K SSL 连接比创建一个慢。:)

4

0 回答 0