1
springmarker 2017-06-03 21:46:58 +08:00
根据文件名的哈希值来行吗
|
2
yidinghe 2017-06-03 22:26:42 +08:00 via Android
我遇到过单个目录文件超过 65535 个之后无法创建新文件。
|
3
Huuluo 2017-06-03 22:44:46 +08:00
目前做法放 1W
|
4
alex321 2017-06-03 23:28:56 +08:00 via Android
我们的系统上设计每层放 999 个。
|
5
coldwinds OP @springmarker 因为有连续 ID 所以就按 ID 来分了,就看 ID 怎么分段了
|
6
springmarker 2017-06-04 09:00:05 +08:00
哈希是 16 进制,假设文件“你好.txt ”的 md5 是 1F 88 90 7F 50 67 04 A3,按照哈希值分段分配目录,因为是 16 进制,一个目录下最少可以只有 16 个目录。2 个字节算一个目录的话就是一个目录下最多有 256 个目录,目录的深度是 8,当然最后 4 个字节可以不做目录,这样深度就是 6。当然有很多其他分法。
(应该是这样的,哈哈哈) |
7
sagaxu 2017-06-04 10:07:09 +08:00 1
只是 open+read/write,100 万个即使不分级,也不会影响太大。但是有些 SB 语言的 SB 库,会读整个目录的文件列表,100 万个就悲剧了,1000 个比较合理。
|
9
iyaozhen 2017-06-04 11:58:26 +08:00 via Android
一个文件夹下面不要放太多,会造成系统 inode 不够用。最好多搞几级(深度)文件夹。
|
10
huobazi 2017-06-05 10:00:51 +08:00
建议不要超过 65535 早期文件系统不支持超过 65535 的
|
11
huobazi 2017-06-05 10:06:52 +08:00
参考 http://objects.binaryfunction.com/carrierwave-better-storage/ 的说明,按照 id 分段
|