Современные виртуальные инфраструктуры предъявляют высокие требования к системе резервного копирования, особенно когда дело касается прямого доступа к raw-устройствам. Традиционно в Libvirt возможность создания инкрементных резервных копий была ограничена образами формата qcow2. Однако развитие программного обеспечения и внедрение новых функциональных решений расширяют горизонты, позволяя организовать надежные инкрементные бэкапы и для raw-устройств, что существенно повышает эффективность защиты данных и снижает нагрузку на систему. Libvirt является мощной платформой для управления виртуальными машинами и обеспечивает поддержку различных форматов дисков, включая qcow2 и raw. Для qcow2 уже давно была доступна возможность создания инкрементных копий благодаря встроенным битовым картам, которые отслеживают изменения данных и позволяют копировать только обновленные блоки.
Такая методика значительно экономит пространство и время, исключая необходимость полной копии при каждом бэкапе. С raw-устройствами ситуация была другой. Отсутствие встроенной системы для постоянного хранения битовых карт усложняло создание инкрементных резервных копий. Образы raw часто используются для прямого доступа к физическим устройствам и логическим томам, таким как LUNы. И до недавних пор возможность получить инкрементный бэкап таких устройств через Libvirt отсутствовала, что сказывалось на оперативности и эффективности процесса резервного копирования.
С выходом версии Libvirt 10.10.0 и выше была реализована поддержка настройки qcow-образов в качестве метаданных для raw-устройств. Это позволило подключать отдельные qcow-файлы, которые хранят битовые карты изменений, прикрепленные к raw-дискам. Таким образом, сохраняется совместимость с существующими механизмами резервного копирования Libvirt, одновременно открывая дверь к полноценной инкрементной защите для raw-дисков.
Технически реализация обходит ограничение отсутствия встроенного битмапа в raw, используя дополнительный qcow-файл в связке с основным raw-устройством. Этот файл выступает своеобразным индексом измененных блоков, позволяя системе отслеживать, какие данные изменялись с момента предыдущего бэкапа. Преимущество данного подхода в том, что адаптация производится в рамках уже привычных для пользователей инструментов, таких как qemu-img и virsh, без необходимости использования стороннего программного обеспечения. Для эффективного применения данной технологии требуется корректная конфигурация виртуальной машины и ее дисков. В первую очередь создается qcow-образ метаданных с такими же параметрами размера, что и у raw-файла.
Для предотвращения повреждения данных используется опция data_file_raw, указывающая на режим работы с произвольными raw-источниками. После создания временного файла происходит его замена реальным raw-устройством и внесение соответствующих изменений через qemu-img amend. Далее в XML-конфигурации виртуальной машины необходимо указать диск как файл с типом qcow2, включить кэширование в режиме none, использовать io native и опцию discard unmap. Основной raw-файл задается внутри тега dataStore с параметром raw, что позволяет Libvirt и QEMU корректно взаимодействовать с устройством и метаданными. После такой настройки становится возможным создавать контрольные точки (checkpoint) с помощью команды virsh checkpoint-create-as, используя дополнительный параметр --diskspec для указания имени bitmap.
При этом bitmap сохраняется непосредственно в qcow-файле метаданных, что обеспечивает его постоянство и доступность для последующих инкрементных операций. Такая архитектура даёт прозрачность и гибкость управлению резервными копиями, позволяя не только создавать актуальные снимки состояния дисков, но и выполнять откаты или анализ изменений. Важная особенность нового подхода – добавление поддержки в инструмент virtnbdbackup (начиная с версии 2.33), который позволяет создавать резервные копии виртуальных машин на уровне блочных устройств с поддержкой битмапов. Это значительно упрощает автоматизацию и интеграцию процесса бэкапа в существующие системы резервного копирования, уменьшая аппаратные затраты на хранение и пропускную способность сети.
Стоит отметить, что внедрение данной технологии требует понимания архитектуры виртуальных устройств и осторожности при проведении операций с raw-устройствами. Неправильное конфигурирование может привести к потере данных или снижению производительности. Поэтому рекомендуется тщательно тестировать настройки в тестовой среде, а также регулярно контролировать состояние битмапов и корректность работы checkpoint. Реализация инкрементных бэкапов для raw-устройств с использованием Libvirt и qcow2-метаданных расширяет возможности администраторов виртуальных окружений, позволяя обеспечить надежность данных без значительных расходов на хранение и длительные окна резервного копирования. Внедрение этой технологии помогает справляться с растущими объемами информации и сложными требованиями к быстродействию и постоянной доступности систем.