Как система хранения может обрабатывать разные потоки записи в одном месте? - PullRequest
0 голосов
/ 31 августа 2011

Обычно, если два приложения отправляют два запроса на запись в одно и то же место (lba) диска, приложения или файловые системы добавят блокировку для него, поэтому одновременно обрабатывается только один запрос.

Но сейчас возникает сложная проблема. Может быть несколько запросов на запись, которые должны быть записаны в одно и то же место, но приложения не обрабатывают блокировку. Файловой системы нет, потому что данные напрямую записываются на сырой диск Что я могу сделать, это изменить код системы хранения. Сейчас все очень сложно. Предположим, есть два запроса, A и B. Тогда, наконец, данные в соответствующем lba могут быть одним из трех результатов:

  1. Все данные получены от A.
  2. Все данные получены из B.
  3. Части данных взяты из A; части данных из B.

По моему мнению, результаты 1 и 2 являются приемлемыми, но результат 3 не является приемлемым. Но кто-то так не считает. Как насчет ваших мнений?

1 Ответ

1 голос
/ 31 августа 2011

Я согласен, что это должно быть все одно или ни одно из них.Это можно сделать довольно легко, используя форму менеджера системы хранения и записывая его менеджеру достаточно большими порциями.Менеджер может выполнить соответствующую внутреннюю блокировку, чтобы за один раз записывался только один блок из одного запроса, и вы не получили перекрытий.

...