Added a comment
This commit is contained in:
parent
65ea8409ec
commit
9178019bc3
1 changed files with 28 additions and 0 deletions
|
@ -0,0 +1,28 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="zardoz"
|
||||||
|
ip="134.147.14.84"
|
||||||
|
subject="comment 3"
|
||||||
|
date="2014-07-15T07:29:37Z"
|
||||||
|
content="""
|
||||||
|
The ext-community seems to
|
||||||
|
[corroborate](http://www.redhat.com/archives/ext3-users/2013-March/msg00007.html)
|
||||||
|
the observation that having many sparse directories scales extremely
|
||||||
|
poorly, though this still leaves me curious as to how btrfs deals
|
||||||
|
with.
|
||||||
|
|
||||||
|
One thing I read is that btrfs stores a secondary index on directories
|
||||||
|
and uses this index in the readdir() syscall; this secondary index
|
||||||
|
works in such a way that inodes are likely to be traversed in
|
||||||
|
sequential on-disk order, while for ext, the readdir() results will be
|
||||||
|
ordered by inode number, yielding a random access pattern.
|
||||||
|
|
||||||
|
I must confess I’ve always liked to think of the file-system as a
|
||||||
|
cheap data-base, but apparently that is not such a good idea (i. e.,
|
||||||
|
it’s not cheap at all, in the long run). On the other hand (supposing
|
||||||
|
that operations like «git annex unused» do indeed work by traversing
|
||||||
|
the object tree), it probably wouldn’t be easy coming up with a scheme
|
||||||
|
that scales better. For traversal-bound operations, one might maintain
|
||||||
|
a database, but it would be a hassle to ensure that this in always in
|
||||||
|
sync with the file-system.
|
||||||
|
|
||||||
|
"""]]
|
Loading…
Add table
Add a link
Reference in a new issue