В состав ядра Linux принят dm-clone, модуль для эффективной репликации внешних устройств

Линус Торвальдс принял в ветку ядра, на основе которой формируется релиз 5.4, реализацию модуля dm-clone с реализацией нового обработчика на базе Device-Mapper, позволяющего клонировать существующее блочное устройство. Модуль даёт возможность на базе доступного в режиме только для чтения блочного устройства создать локальную копию, допускающую запись в процессе клонирования.

В качестве типового применения dm-clone упоминается клонирование по сети удалённых архивных устройств, доступных в режиме только для чтения и обрабатывающих ввод/вывод с большими задержками, в локальное быстрое устройство, поддерживающее запись и обрабатывающее запросы с минимальными задержками.

Клонированное устройство можно примонтировать и начать использование сразу после его создания, не дожидаясь завершения процесса переноса данных. Копирование информации будет продолжено в фоновом режиме, параллельно с вводом/выводом, образуемым при обращении к новому устройству. Например, dm-clone можно использовать для восстановления резервных копий из сетевых хранилищ, доступных по таким протоколам, как NBD, Fibre Channel, iSCSI и AoE, в локальное хранилище на базе SSD или NVMe. Код dm-clone оптимизирован для выполнения мелких операций случайной записи, размер которых соответствует размеру блока (по умолчанию 4K).

В процессе клонирования запросы на чтение будут приводить к прямому запросу данных с клонируемого устройства, а запросы на запись, затрагивающие ещё не синхронизированные области, будут откладываться до окончания внеплановой загрузки запрошенных блоков (операции загрузки для связанных с записью блоков инициируются мгновенно). Очищенные при помощи операции «discard» блоки исключаются из процесса копирования (после монтирования пользователь может выполнить «fstrim /mnt/cloned-fs» чтобы не копировать блоки, неиспользуемые в ФС).

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

Ключевым отличием от решений на базе Unionfs и OverlayFS является то, что dm-clone работает на уровне блочного устройства, независимо от применяемой на этом устройстве файловой системы, и формирует полную копию исходного устройства, а не накладывает дополнительный слой, в котором отслеживаются изменения. В отличие от dm-mirror модуль dm-clone изначально рассчитан на работу только с исходным разделом в режиме только для чтения, без трансляции в него операций записи. В dm-snapshot не создаётся полная копия и отсутствует поддержка фонового копирования. В dm-cache не создаётся полная копия, пробрасываются операции записи, а работа сводится к кэшированию обращений. Наиболее близким по функциональности является dm-thin, но он не поддерживает операции фонового копирования и ограничен только использованием определённых типов разделов (thin-provisioning).

Источник: http://www.opennet.ru/opennews/art.shtml?num=51542