Filesystems 存储系统如何在同一位置处理不同的写入流?

Filesystems 存储系统如何在同一位置处理不同的写入流?,filesystems,locking,Filesystems,Locking,通常,如果两个应用程序向磁盘的同一位置(lba)发送两个写请求,应用程序或文件系统将为其添加锁,因此一次只处理一个请求 但现在有一个难题。可能有多个写入请求应该写入同一个位置,但应用程序不处理锁。没有文件系统,因为数据直接写入原始磁盘。我可以做的是修改存储系统的代码。现在事情很复杂。假设有两个请求,A和B。最后,相应lba中的数据可能是三个结果之一: 所有数据均来自A 所有数据均来自B 部分数据来自一个数据库;部分数据来自B 在我看来,结果1和2是可以接受的,但结果3是不可接受的。但有人不这么认

通常,如果两个应用程序向磁盘的同一位置(lba)发送两个写请求,应用程序或文件系统将为其添加锁,因此一次只处理一个请求

但现在有一个难题。可能有多个写入请求应该写入同一个位置,但应用程序不处理锁。没有文件系统,因为数据直接写入原始磁盘。我可以做的是修改存储系统的代码。现在事情很复杂。假设有两个请求,A和B。最后,相应lba中的数据可能是三个结果之一:

  • 所有数据均来自A
  • 所有数据均来自B
  • 部分数据来自一个数据库;部分数据来自B

  • 在我看来,结果1和2是可以接受的,但结果3是不可接受的。但有人不这么认为。你的意见如何?

    我同意应该是一个或一个都没有。通过使用存储系统管理器的一种形式,并以足够大的数据块向管理器写入数据,可以非常轻松地完成这项工作。管理器可以在内部执行适当的锁定,以便一次只写入一个请求中的一个块,并且不会出现重叠。

    集群环境如何?据我所知,集群仍然需要锁。但在我的例子中,用户空间软件不能正确地处理锁,我在想如何处理它。集群肯定不是我的专长。您可以查看虚拟机及其分布式锁管理器,了解一些想法。