Файловая система с общим блочным устройством (кластерная файловая система без сетевого взаимодействия)

Файловая система с общим блочным устройством (кластерная файловая система без сетевого взаимодействия)

Есть ли файловая система, которую можно монтировать несколько раз и которая поддерживает одновременный доступ к файлам для Linux? По сути, мне нужно что-то вроде кластерной файловой системы, но без необходимости иметь работающую сеть для распределенного менеджера блокировок. Это может быть очень удобно в сочетании с виртуальными машинами, которые могут делиться данными с хостом или другой виртуальной машиной без необходимости создания сетевого соединения. Я хочу этого избежать, чтобы сохранить сетевую архитектуру безопасной (виртуальная машина в DMZ), но делиться большими файлами. Не нужно масштабировать ее, просто две машины, которые монтируют одно и то же блочное устройство.

Разве нельзя разместить информацию о блокировке файлов прямо на диске?

решение1

Я предполагаю, что вы можете дать N VMs и доступ к одному и тому же блочному устройству, но только для чтения. Вы заметили это слово guess.

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

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

Полагаю, можно взять типичную файловую систему, которая уже является многопоточной, выяснить, где используются блокировки, и изменить это на какую-то операцию чтения/изменения/записи на диске.

Другая проблема с чтением/изменением/записью на диске заключается в том, что если вы часто блокируете данные, ваша производительность будет довольно низкой, поскольку каждое изменение чего-либо на диске требует:

  • блокировка диска (поиск, чтение/изменение/запись)
  • прочитайте сектор, который вы хотите изменить (искать/читать)
  • внесите изменения и напишите (напишите)
  • разблокировать диск (поиск, чтение/изменение/запись)

Это, возможно, не поможет, но я бы рассмотрел что-то вроде BSD Jails как более легкую систему виртуальных машин, если вы действительно не хотите нагружать сеть.

решение2

Чтобы ответить на мой собственный вопрос: в ситуации (пара)виртуализации развиваются некоторые общие файловые системы, которые могут использоваться для обмена файлами без сети между экземплярами. XenFS — это один из подходов, который, как мне кажется, не находится в активной разработке. Но для KVM, и, надеюсь, для XEN в скором времени, есть механизм общего доступа к папкам, основанный на библиотеке virtio, которая называется9p_virtio.

Связанный контент