存储系统如何在同一个地方处理不同的写入流?

时间:2011-08-31 02:34:16

标签: filesystems locking

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

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

  1. 所有数据均来自A.
  2. 所有数据均来自B。
  3. 部分数据来自A;部分数据来自B。
  4. 在我看来,结果1& 2是可以接受的,但结果3是不可接受的。但有人不这么认为。你的意见怎么样?

1 个答案:

答案 0 :(得分:1)

我同意它应该是一个或全部都不是。这可以通过使用一种形式的存储系统管理器很容易地完成,并以足够大的块写入管理器。管理器可以在内部进行适当的锁定,这样一次只能写一个请求中的一个块,并且不会出现重叠。