
Я настроил KVM на хосте Debian 10.
Работают 2 виртуальные машины.
Виртуальная машина №1 имеет внутри себя OMV.
Виртуальная машина №2 имеет чистый Debian.
Каждая виртуальная машина установлена в своем собственном файле образа qcow2.
Эти две машины совместно используют одно дополнительное хранилище, представляющее собой файл хранилища RAW. На обеих машинах это хранилище отмечено как «Sharable».
Текущая проблема, которую я заметил, заключается в том, что таблица файлов не обновляется на лету. Я имею в виду, если вы что-то делаете с этим хранилищем в одной виртуальной машине, изменения не будут видны на другой, ПОКА эта другая виртуальная машина не будет перезагружена (скорее всего, remount делает то же самое).
Если изменения вносятся обеими виртуальными машинами, OMV позже начинает выдавать ошибки, связанные с SMB.
Перезагрузка OMV не обновила таблицу файлов, однако перезагрузка машины Debian привела к потере всех данных.
OMV проводит акцию Samba.
Есть ли у кого-нибудь опыт работы с общим хранилищем и знает ли он, как хотя бы вручную обновить таблицу файлов без перемонтирования хранилища?
решение1
вкратце:Имейте простую виртуальную машину Debian (виртуальная машина №2)смонтировать общий ресурс Sambaразмещенный на вашей виртуальной машине OpenMediaVault (виртуальная машина № 1). Подключите только файл необработанного хранилища к виртуальной машине № 1.
Объяснение
То, что вы настроили, похоже на то, как если бы вы одновременно подключали один флэш-накопитель к двум компьютерам. Я уже писал об этом:
Когда вы монтируете файловую систему на жестком диске куда-то на обоих компьютерах, каждый компьютер не имеет понятия, что другой также использует файловую систему. Это может привести ксерьезное повреждение данныхпотому что каждый компьютер наступает друг другу на пятки.
От:Как заставить инициатор iSCSI распространять изменения?
Чтобы исправить это, вам нужен слой между диском хранения (на сервере) и несколькими машинами (клиентами), получающими к нему доступ, который будет знать, что несколько клиентов могут получать доступ к одному и тому же хранилищу.
Два распространенных способа настройки:НФСиСИФС(Самба), которые являютсясетевые файловые системы.
Я вижу, что у вас уже настроен сервер Samba. Все, что вам нужно сделать, чтобы совместно использовать хранилище, — это подключить ваши виртуальные машины к этому одному серверу Samba. Виртуальный диск следует подключать только к серверу Samba.
Вы можете пойти еще дальше и создатьраспределенная файловая система, что представляет собой способ объединения хранилищ с нескольких серверов и доступа к ним в единой сетевой файловой системе.
В качестве альтернативы можно также предоставить общий доступ к виртуальному диску, как вы изначально пытались сделать, но вам все равно понадобится файловая система, которая будет знать, что несколько компьютеров могут изменять данные одновременно. Этот другой ответпредполагаетфайловые системы с общим диском, которые абстрагируют общее хранилище на более низком уровне, чем сетевые файловые системы.
Ресурсы
Официальная документация
- Настройка NFS-серверана Debian Wiki
- Простая настройка сервера обмена файлами Sambaна Debian Wiki
- Служба OpenMediaVault Samba
Учебники
- Настройка NFS-сервера и клиента на Debian 9 (Stretch)на HowtoForge
(Учебник все еще должен быть действителен для Debian 10) - Установка и настройка общего доступа к серверу Samba на Debian 10 / Ubuntu 18.04на тему «Вычислительная техника для гиков»
Выше и дальше: распределенные файловые системы
решение2
Монтирование файловой системы ext4 с правами чтения/записи на двух узлах одновременно не сделает содержимое доступным для обоих узлов, а вместо этого приведет к повреждению файловой системы.
Если вы пометите диск как общий в virt-manager, гипервизор просто перестанет выдавать вам предупреждения — это происходит на уровне виртуального оборудования, а не на уровне файловой системы.
Если вам нужны общие диски (и на это есть веские причины), используйте GFS или OCF2 (самый простой выбор для новичков).