Увы, резервное копирование не всегда происходит быстро. На скорость создания копии влияют десятки факторов, и из-за этого часто страдают бизнес-процессы, снижается производительность, а главное — данные остаются незащищенными. Сегодня я расскажу о том, как можно ускорить резервное копирование, устранив одно или несколько “узких мест” в архитектуре. Если вы задаетесь вопросом, оптимально ли настроено резервное копирование, вас не устраивает скорость создания резервных копий, либо данные вовсе не успевают перемещаться в заданные хранилища, то добро пожаловать под кат! Обсудим, что с этим можно сделать. 

Привет, Хабр! Меня зовут Дмитрий Ермолаев, и я руковожу технической поддержкой в компании “Киберпротект”. И хотя в большей степени опыт нашей команды относится к продукту Кибер Бэкап, практически все советы можно применить и к другим системам резервного копирования, ведь фактически скоростному созданию аварийной копии мешают одни и те же факторы. Возможно, какие-то из пунктов покажутся вам очевидными — и это значит, что вы уже не новичок в работе с резервным копированием. Но сотни обращений в нашу техподдержку по этим вопросам подтверждают, что многие просто устанавливают систему “из коробки” и не в курсе, как именно улучшить процессы резервного копирования. 

1. Бэкапить блоки, даже если нужны файлы

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

Решить эту проблему можно сменив тип резервного копирования на блочный (работа на уровне диска или тома). В таком случае СРК забирает информацию непосредственно с диска, процесс идет быстрее. При этом в большинстве современных инструментов резервного копирования даже при блочном бэкапе можно задать исключения при создании копии, а также восстанавливать отдельные папки и файлы впоследствии. Так что мы практически ничего не теряем, сменив режим резервного копирования. А прирост скорости может быть весьма ощутимым.  Например, в Кибер Бэкапе подобный выбор выглядит следующим образом.

2. Использовать инкрементное резервное копирование

Полная резервная копия — это хорошо. Но в некоторых случаях она делается очень долго. Часто смена настройки СРК с полной на инкрементную копию позволяет значительно увеличить скорость выполнения задач, потому что в резервную копию добавляются только новые данные. Особенно в тех случаях, когда изменения за рабочий день невелики, инкрементный бэкап позволяет ускорить резервное копирование, сохранив тот же уровень защиты.

Тут, конечно, можно возразить, что инкрементный бэкап сложнее и отнимает ресурсы ЦП для создания образов и их последующего восстановления. Но, как показывает практика, уровень дополнительной нагрузки на процессор обычно не превышает 1%. Так что инкрементный бэкап стоит свеч в 90% случаев и позволяет ускорить РК. Например, в Кибер Бэкапе можно просто включить опцию “всегда инкрементное” для уже настроенных или новых планов резервного копирования. Эта схема раскрывает потенциал работы специального формата резервных копий “Киберпротекта” и в результате дает одновременно эффективную дедупликацию и сжатие, а также высокие скорости восстановления даже при длине цепочки 100+ точек. Как она работает я подробнее расскажу в отдельном посте.

3. Оптимизировать файловую систему

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

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

Кстати, если ваши резервные копии реально большие, а диск или том используется только для этой задачи, можно столкнуться с ограничением файловой системы на максимальное количество сегментов файла (~1,5 миллионов). Достаточно запустить параллельное резервное копирование  2-3 виртуальных машин с образами, скажем, по 500ГБ, и на томе NTFS с размером кластера 4 кб (по умолчанию) возникнут проблемы с дальнейшим расширением скопированных образов.

   

4. Использовать резервное копирование на уровне гипервизора

Самый простой и прозрачный способ защитить виртуальные машины — установить на них средства резервного копирования, как на физические ПК. Такой подход будет работать, но при резервном копировании агент будет использовать ресурсы операционной системы той виртуальной машины, внутри которой он работает. В этом случае мы сталкиваемся с проблемой разделения ресурсов между пользовательскими нагрузками и работой СРК. Наиболее ярко снижение скорости резервного копирования наблюдается на ВМ с минимальными ресурсами. Да и пользователям не очень нравится, когда рабочее место начинает тормозить. 

Решить эту проблему можно за счет интеграции СРК и гипервизора. В этом случае на виртуальных машинах не устанавливаются отдельные агенты, а СРК производит резервное копирование извне, используя свободные ресурсы кластера. В результате никакого снижения производительности не происходит. А учитывая, что все больше СРК поддерживают широкий спектр гипервизоров, подобный подход оправдывает себя полностью. Мы тоже работаем с разными гипервизорами — от VMware и oVirt до российских разработок, таких как ECP VeiL или РЭД Виртуализация. Кстати, работа по тестированию и устранению багов в таких связках была проведена нешуточная, и мои коллеги обязательно расскажут об этом в блоге в ближайшее время.

5. Развести процессы резервного копирования ВМ по времени

Технически можно запустить резервное копирование нескольких виртуальных машин одновременно. Например, в Кибер Бэкап 15 их количество достигает 10 штук на одного агента. Это удобно, если у вас сотни мелких виртуальных машин. Но если под такую схему попадают крупные и тяжелые образы, могут возникнуть проблемы вплоть до деградации производительности всего кластера и гипервизора в целом. 

Тут очень важно не намудрить и последить за метриками. Справляется ли ваша система (физическая или виртуальная) с текущей бэкап-нагрузкой. Для этого целесообразно использовать простой системный монитор. Например, вот такой.

Может оказаться так, что нормальный такой двухпроцессорный сервер с 500 Гбайт ОЗУ не тянет сразу несколько процессов резервных копий…потому что они попадают на медленные накопители, которые не справляются с потоком операций ввода/вывода. В этом случае можно настроить план резервного копирования и развести операции по времени — и волки сыты, и апгрейдить сервер по конским ценам не нужно.

6. Минимизируйте нагрузку на сеть 

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

Для того, чтобы нагрузка на сеть стала меньше, можно использовать сжатие и дедупликацию данных. Практически все современные СРК это поддерживают, но не все пользователи знают, что сетевая папка для успешной работы алгоритмов оптимизации должна соответствовать определенным требованиям. Например, в Кибер Бэкапе необходимо использовать сетевую папку с версией протокола SMB 2.1 (а лучше 3.1+), чтобы сжатие и дедупликация работали автоматом и на лету. Тогда неуникальные фрагменты информации не будут даже попадать на сетевой адаптер.

7. Или вообще не используйте сеть

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

Сделать это очень просто — достаточно подключить дисковый массив или даже сервер резервного копирования непосредственно к тому серверу или кластеру, который вы защищаете. При этом никто не отменяет централизованный контроль и управление процессом резервного копирования. Например, сервер Кибер Бэкап может координировать работу агентов, которые при этом ведут копирование без использования сети.

В системах виртуализации работает та же логика. Например, если вы используете устройство SAN для хранения датасторов  ВМ, достаточно выделить свободный сервер (можно не очень мощный, который не так важен в продуктиве) и подключить его к этому же SAN через FibreChannel. В результате получится  резервное копирование виртуальных машин, без использования сети.

Работает такая схема надежно. Мы неоднократно тестировали ее в разных средах виртуализации, в том числе c VMware. На сервере просто устанавливается ОС Windows и агент бэкапа WMware. После этого на него отправляются LUN, на которых находятся датасторы хостов ESXi.

Подключенные LUN не инициализируются в ОС и не используются на запись. Но в момент резервного копирования, после создания снимка виртуальной машины, агент обращается к презентованным ему дискам SAN, забирает из них данные дисков виртуальных машин и сохраняет резервную копию на свои локальные диски. 

8. Выделить больше ресурсов для Virtual Appliance агентов для VMware.

Раз уж мы заговорили о виртуализации и VMware, нельзя не упомянуть такой простой метод ускорения, как увеличение производительности виртуальных устройств, который актуален также для oVirt, ECP Veil, Кибер Инфраструктуры и некоторых других. По умолчанию агенты для резервного копирования в экосистеме VMware создаются как двухъядерные виртуальные машины с 4 Гигабайтами оперативной памяти. И, что интересно, увеличение количества памяти до 8-10 ГБ ведет к серьезному росту производительности бэкапа. А если нагрузка сложная и данные требуют тщательной дедупликации и сжатия, можно также накинуть и количества ядер. 

Подобный ход оправдан в крупных инфраструктурах. А насколько именно увеличивать параметры, помогает определить системный монитор. Таким образом, проводя тонкую настройку мощности ВМ с агентом СРК можно и производительность увеличить, и лишних ресурсов практически не потратить. 

9. Отключить многотомные снимки VSS

Многотомные моментальные снимки VSS — полезная штука. Они позволяют синхронизировать данные между всеми томам на компьютере, создавая теневую копию. Такой подход активно используется для работы с тяжелыми и ответственными инфраструктурами, например часто применяется для СУБД  Oracle.  Но проблема в том, что синхронизация приводит к тому, что работа с дисками происходит одновременно, а не последовательно. 

Если вам не критична синхронизация состояния данных на томах, то эту опцию можно отключить.  Это поможет снять нагрузку на операционную систему и диски. В этом случае теневые копии на томах будут создаваться последовательно, а общая производительность процесса резервного копирования вырастет, если узким местом была именно производительность дисков.

Заключение

Все разработчики (и мы в том числе) стремятся сделать резервное копирование простым коробочным продуктом. И это во многом получается. Например, сегодня можно просто взять и установить СРК не только на Windows или в экосистеме VMware, но и на операционные системы из реестра российского ПО или на отечественные системы виртуализации. И все будет работать без дополнительного обращения в техподдержку. Однако вопросы тонкой настройки остаются актуальными, и нередко одно из приведенных выше 9 правил позволяет ускорить резервное копирование.

Не буду спорить, эта задача вообще не всегда актуальна. Если объем защищаемых данных невелик, а ресурсов в системе достаточно, можно обойтись вообще без оптимизаций. Но если скорость стала снижаться, и это влияет на время создания копий (не удается перенести данные за нужный промежуток времени) или на работу пользователей (тормозят основные процессы), стоит попробовать и ускорить РК, какой бы системой вы ни пользовались.

Комментарии (25)


  1. Mudrist
    14.09.2022 15:56
    +1

    Ого! Российский разработчик бэкапа на Хабре..да еще и с советами и ноу-хау...это позитивно. Хотя бы бэкап свой у нас, похоже, есть. )


    1. Cyber_KAA
      14.09.2022 16:12

      У нас много чего есть своего - подписывайтесь, будем делиться в новых постах


    1. WondeRu
      14.09.2022 18:18
      +4

      Вы всегда удивляетесь существованию Кибер Бекапа?


      1. Mudrist
        14.09.2022 23:21

        Вау, у меня появился личный поклонник. :) Вы следите за мной? Чесслово, приятно! А удивляюсь я скорее тому, что со второго поста пошли какие-то реально советы, а не рассказы о том, какой прекрасный продукт на рынке появился. Думала, будет сплошной маркетинг...но, похоже, ошиблась.


  1. PlayTo
    14.09.2022 17:10

    Судя по всему, нужно закладывать "соломку" заранее. Большая часть советов - изначальная настройка. Потом, я так понимаю, особо уже не оптимизировать.


    1. Cyber_KAA
      14.09.2022 17:14

      Чем сложнее инфраструктура, тем тщательнее необходимо продумывать процесс внедрения резервного копирования этой системы. Тут собраны ответы на 80% случаев, которые происходят в виде "что-то медленно все работает". Остальные 20% помогает решить техподдержка.


  1. oller
    14.09.2022 19:01

    Смотрю на интерфейс, и вот прям хочется спросить не Nakivo под низом у вас с темой, которая очень сильно похожа?


    1. Cyber_KAA
      15.09.2022 11:24

      нет


  1. vagon333
    15.09.2022 01:01

    У меня домашняя лаба из 5 ESXi ноутов и пара серверов в дата центре.
    Использую более простые продукты для бэкапа.
    Посчитал на вашем сайте и получилось что при цене каждого ESXi 64к х 7машин = 448к для среды.
    Пожадничал. Буду дальше бэкапить набором из жизни и палок. :)

    Кстати, у КП сайта дискриминация по региональному признаку?
    При попытке зайти на сайт:


    1. Cyber_KAA
      15.09.2022 11:27
      +1

      на нас регулярно делают DDoS атаки, поэтому поставили систему защиты. Она отключила сети, откуда идут атаки.


  1. saboteur_kiev
    15.09.2022 01:45

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

    Откуда возьмется большая фрагментация на файловой системе, куда складывают большие файлы и удаляют большие файлы?


    1. ErmolaevD Автор
      15.09.2022 09:35
      +1

      Сценарий простой - многопоточная запись больших файлов на один том. Запись на диск идет по очереди от каждого потока. Если одновременно записывать 10-20 потоков, то были случаи достижения ограничения файловой системы уже на 300 ГБ размере файла архива.


  1. Ivan_2424
    15.09.2022 08:39
    +1

    Отличная картинка с тортиком. :) А что там у вас за шаманство с инкрементным бэкапом? Возникает чувство, что вы нам что-то недорассказали...

    раскрывает потенциал работы специального формата резервных копий “Киберпротекта” и в результате дает одновременно эффективную дедупликацию и сжатие, а также высокие скорости восстановления даже при длине цепочки 100+ точек. 


    1. ErmolaevD Автор
      15.09.2022 09:50
      +1

      Наш формат архива .tibx одна из изюминок продукта. Во многих сценариях мы рекомендуем использовать схему "Всегда инкремент" из-за ее высокой производительности и надежности. Я понимаю что практически все привыкли, что "полная копия" это самое лучшее что придумало человечество, а длинные цепочки это медленно и опасно. У нас на этот счет немного другое мнение. Ну и под капотом этого формата очень много фишек, которые позволяют нам говорить о скорости и надежности при работе даже с длинными цепочками. Но по этой теме я думаю мы сделаем отдельную статью.


  1. AlexeevEugene
    15.09.2022 08:48

    Не увидел в статье заветного слова ReFS


    1. khajiit
      15.09.2022 12:48

      Аналогично не увидел Brtfs или ZFS, бэкапа виртуалок через заморозки ФС гостя и снятие снепшота.


  1. FlashHaos
    15.09.2022 12:51

    Многопоточное чтение крупных каталогов с автоматическим разбиением на потоки присутствует?


  1. mvv-rus
    15.09.2022 16:11

    4. Использовать резервное копирование на уровне гипервизора

    По моему опыту (это был Veeam и VMWare лет пять назад) — палка о двух концах (может быть). Возможная проблема в том, что бэкап по факту делается со снимка виртуального диска VM, сделанного средствами гипервизора, а потом этот снимок надо удалить, т.е. слить с ним все накопленные изменения на разностном виртуальном диске, который в процессе бэкапа играет роль основного.
    Если железо возрастное (а у меня оно было как раз возрастное) то операция слияния удаленного снимка с разностным диском может быть небыстрой. Более того, в процессе слияния есть момент, когда VM приостанавливается на время переключения с разностного основного диска на слитый. И если с железом напряжно, то приостановка, по моему опыту, запросто может затянуться на минуту, из-за чего возникают уже таймауты в сетевых протоколах (на, а про выходящий при этом из себя мониторинг я и не говорю).
    Так что этот совет я бы применял с осторожностью, особенно если речь идет об ускорении.
    PS Ну, а ещё он по очевидным причинам не подходит для бэкапа распределенной БД, вроде БД MS Exchange в DAG — если софт бэкапа специально не заточен под такую БД.


    1. ErmolaevD Автор
      15.09.2022 16:58

      Все верно, снимок на уровне гипервизора нагружает датасторы при удалении снимка и тут самое критичное это создание полной копии, потому что инкременты будут делаться быстро (CBT) и диски разницы не успеют сильно набрать вес. Но если гипевизор все же держит удар, то безагентное резервное копирование выполняется значительно быстрее чем агентом внутри гостевой ОС.
      Таймауты заморозки на создание и удаление снимка у VMware сейчас значительно меньше описанных Вами.
      БД можно спокойно забирать из гостевой ОС если создается снимок с поддержкой приложений (БД у которых есть свой врайтеры VSS).


      1. mvv-rus
        16.09.2022 02:24

        Не все так просто. VMWare там была тоже вполне актуальная (6 версии ЕМНИП). Виртуалки были малонагруженные с точки зрения диска ( Exchange Edge Transport и т.п.). А вот с хранилищем там что-то явно не то творилось.
        PS А про БД было про распределенную и там не все так просто.Например в упомянутом Exchange надо забирать только одну копию базы в DAG (и желательно, ту, которая пассивную).


        1. ErmolaevD Автор
          16.09.2022 17:34

          Про VMware vSphere 6 ничего плохого сказать не могу.
          А работа с пассивной копией БД нужна только при резервном копировании базы агентом. Если мы говорим про резервное копирование на уровне гипервизора, то тут всю подготовку обеспечивает app-consistent снимок ВМ. А мы уже забираем в бэкап всю машину, в которой уже консистентные базы. Из такой резервной копии мы можем вернуть всю машину, отдельно базы и почтовые ящики.


          1. mvv-rus
            16.09.2022 18:36

            А работа с пассивной копией БД нужна только при резервном копировании базы агентом.

            Если пытаться копировать без агента — будет еще хуже.
            Потому что речь идет о распределенной БД. Для которой вожна согласованность копий между разными VM. Exchange тут чисто для примера, как нечто старое и хорошо известное, как с ним работать. Сейчас распределенные БД достаточно широко встречаются. И правила работы с ними могут быть самые разные, т.к. архитектура у них тоже разная. А потому и вряд ли получится сделать универсальное решение для их копирования.


  1. Floresta
    15.09.2022 18:17

    Спасибо за советы!


  1. vitalyisaev2
    15.09.2022 22:01

    У вас на сайте написано, что вы бекапите SWAP. Расскажите, пожалуйста, как вы это делаете, и зачем это может понадобиться?


  1. vitalyisaev2
    15.09.2022 22:03

    Какие алгоритмы у вас используются для дедупликации?