Вопрос или проблема
Я хочу создать zvol на zfs и подключить к этому zvol два инициатора через iscsi. Я попробовал это сделать, и на одном из инициаторов я использовал fdisk для создания файловой системы ext4 и монтирования, другой инициатор после входа в цель смонтировал тот же том, но я не могу синхронизировать файлы на нем, т.е. когда один инициатор создает файл на томе, другой не видит его, пока не выполнит размонтирование и монтирование снова. Как я могу иметь один и тот же том, смонтированный на обеих целях, и синхронизированные данные на нем? Это вообще возможно?
Заранее спасибо за помощь.
Короче говоря… Не получится!
Смотрите, ZFS не является кластерной файловой системой, поэтому когда один пользователь изменяет содержание файловой системы (данные или метаданные), все другие узлы, даже читатели, ничего не знают и не знают, когда обновлять свои таблицы в памяти, чтобы все оставалось согласованным. Вам нужно что-то кластерное, например VMFS, локальная файловая система с арбитром метаданных (например, NTFS/ReFS + CSVFS “костыли”) или какой-то распределенный менеджер блокировок, такой как EXT4 + LVM + sanlock.
Хорошее резюме с множеством подробных объяснений можно найти здесь:
Ответ или решение
Вопрос о подключении нескольких инициаторов к одной iSCSI-цели поднимает важную тему, которая касается возможности использования одного и того же тома данных одновременно несколькими серверами или устройствами. Это часто побуждает специалистов задуматься о возможностях одновременного доступа к данным и связанных с этим сложностях.
Теория (Theory)
iSCSI (Internet Small Computer Systems Interface) — распространённый протокол, используемый для связывания и обмена данными между серверами и устройствами хранения по IP-сетям. Когда речь идёт о подключении нескольких инициаторов к одной и той же цели, на первый план выходят вопросы о консистентности данных и целостности файловой системы.
Большинство традиционных файловых систем, таких как ext4 или NTFS, не предназначены для одновременного доступа несколькими узлами, где каждый может вносить изменения. Это связано с тем, что подобные файловые системы не имеют механизма согласования изменений, сделанных разными устройствами в реальном времени. Таким образом, если один инициатор вносит изменения, тот же объём данных у другого инициатора может не обновляться, пока не произойдут операции размонтирования и повторного монтирования.
Пример (Example)
В вашем примере вы создали файловую систему ext4 на ZVOL, используя один инициатор, и подключили к той же ZVOL другой инициатор. Когда один инициатор вносит изменения, такие как создание файла, другой инициатор не видит этих изменений без повторного монтирования. Это стандартная проблема при использовании некластерных файловых систем в общем ресурсном пространстве.
Применение (Application)
Если вам нужно, чтобы оба узла имели возможность синхронного доступа и изменения данных на одном и том же хранилище, необходимо использовать файловые системы, поддерживающие кластеризацию. К счастью, существует несколько подходов, которые могут решить эту задачу:
-
Кластерные файловые системы: Такие системы, как GFS2 (Global File System 2) или OCFS2 (Oracle Cluster File System), предназначены для работы в многозадачных окружениях и поддерживают синхронные операции чтения и записи с нескольких узлов. Они управляют блокировками данных и предотвращают коллизии.
-
Использование системы управления распределёнными блокировками: EXT4 с LVM и sanlock обеспечивает распределённую блокировку, предотвращая одновременное выполнение конфликтующих операций.
-
Использование распределённых файловых систем: Решения, такие как Ceph или GlusterFS, создают распределённую файловую систему поверх обычного хранения и самостоятельно обеспечивают согласованность данных между несколькими узлами.
-
Virtual Machine File System (VMFS): Эта система используется в VMware-средах и позволяет нескольким серверам одновременно работать с одним томом данных.
Заключение
Работа с многозадачным окружением требует специализированных решений для поддержания целостности и актуальности данных. Понимание ограничений некластерных файловых систем и использование соответствующих технологий позволит успешно реализовать доступ к данным для нескольких инициаторов. Важно тщательно оценить рабочую нагрузку и требования вашего проекта, чтобы выбрать наиболее подходящее решение для обеспечения надёжного и согласованного доступа к данным.