我们每小时收到大约10000封邮件。我们将它们作为单独的文件存储在ext3文件系统的每小时目录中。文件名包括序列号。我们使用rsync在另一个位置每20秒镜像一次这些文件(通过SAN,但这没关系)。
有时rsync运行会选择文件n-3,n-2,n-1,n + 1,然后下一个rsync运行继续n,n + 2,n + 3,n + 4,依此类推。
当一个进程在目录中以特定顺序创建文件时,是否有可能使用readdir()
的另一个进程看到文件以不同的顺序出现?
亲切的问候, 塞巴斯蒂安
答案 0 :(得分:1)
我想你的问题可以重申为:
如果进程A创建文件
d/x
和 然后创建文件d/y
,是吗 过程B可以执行a 目录readdir()
上的并发d
并查看 条目d/y
,但看不到条目d/x
?
答案是肯定的。 readdir
的排序保证确实很弱。
如果要强制执行排序,则需要在创建每个文件后显式fsync()
目录d
自身的文件描述符。