Seafile storage: too many links


#1

Hi,
Seafile Pro 6.0.8
We use an NFS file server as storage backend.
I just discovered an error in our seafile storage where a user repo has too many links. The file server reports

Unable to link /ifs/data/rz/seafile/data/blocks/b0/8a01c8d32c45119e40c0b99a219bc74b9f39fa in directory /ifs/data/rz/seafile/data/storage/blocks/259f8a0e-964f-4b98-a4d9-e81a4d6d08c7/b0, Local error : Unable to link lin 105dbcbe5: Too many links: Too many links

Looking at the file I see, that it already has 1000 (!!!) links:

# ls -li 664bf7a2-5b84-4c11-bc30-01cbe0b15f90/b0
total 650
4316408274 -rw-------    1000 112  112  229376 Jan 13  2014 8a01c8d32c45119e40c0b99a219bc74b9f39fa

How is this possible and what can I do to resolve the error? I was running seaf-fsck on the repo but it didn’t find an error. The repo is empty. It only contains the seafile.doc.


#2

When a file is copied from one library to another, if you use file system backend (the default), the file is not actually copied but hard linked. This saves some physical storage. I think there should be some way to increase the number of links per file?


#3

I just found out that it’s actually the Seafile doc which seems to be hard linked to every repo:

# ls -l
insgesamt 0
-rw-r--r--. 1 root root 229376  1. Jan 1970  Seafile使用指南.doc

It has exactly the same size as the file above.
It’s an Isilon file server running OneFS, and I don’t see a possibility to increase the number of links. Can we prevent linking the Seafile.doc into every new repo?


#4

OK, I found out how to increase the number of hard links.
But I never needed this before. More than 1000 hard links per file is very unusual. Maybe you should give a hint in the server manual (if I didn’t overlooked it). Or you should not link the Seafile.doc into every repo.


#5

Is this the case for other storage backends too? Like S3, Swift or Ceph?


#6

Yep, maybe an option to really copy the data instead of hard links.


#7

No, S3 and Ceph uses real copy.


#8

And what about deduplication on these backends?


#9

Deduplication only works within a library. Files in different libraries will not be deduped.