Назад | Перейти на главную страницу

DRBD - Почему доступ только для чтения к вторичному ресурсу может вызвать проблемы с согласованностью кеша

Согласно документации DRBD9 (https://www.drbd.org/en/doc/users-guide-90/s-resource-roles), чтение с устройства может вызвать проблемы с когерентностью кеша, но я не уверен, почему. (Я знаю, что не могу получить доступ к ресурсу во второй роли, но хочу понять причины)

Моя гипотеза (при условии, что у нас есть первичный DRBD-1 и вторичный DRBD-2, файловая система ext4 и "file_a" является файлом на устройстве drbd):

  1. DRBD-2 обращается к file_a и помещает смещение file_a (или что-то подобное) в свой кеш. (DRBD-2 имеет права только для чтения, поэтому система считает, что файл нельзя изменить).
  2. DRBD-1 записывает содержимое file_b по старому смещению file_a.
  3. DRBD-2 снова хочет получить доступ к file_a, поэтому система использует смещение, которое он сохранил в своем кэше, ожидая найти данные file_a при доступе к данным file_b.
  4. У нас проблема с согласованностью кеша.

Заранее спасибо за то, что пролили свет на этот момент.

Да, то, что вы описали, это точный сценарий, который может привести к проблемам с согласованностью кеша.

Чтобы решить эту проблему, вам пришлось использовать файловую систему, предназначенную для повторной проверки любых кэшированных записей, к которым имеют доступ другие хосты. Они называются кластерная файловая система, с основными примерами GFS2 и OCFS.

Но учтите, что по той же причине кластерные файловые системы обычно работают медленнее традиционных.