Как-то появилось у меня несколько персональных проектов, которые требовали относительно много дискового места — около 2TB. Подходящих VPS не нашлось (мало кто предлагает много HDD места), поэтому я взял выделенный сервер у OVH, поставил там ESXI 5.5 с бесплатной лицензией и всё работало.

Через некоторое время, с развитем проектов, я стал настраивать админские фишки — мониторинг, бэкап, и выяснил, что оказывается сервер, в котором мне обещали Soft RAID, и на который хостер (OVH) накатил свой образ ESXI — без RAID! То есть просто 2 диска. Ну да, теперь вот я знаю, что ESXI не поддерживает Soft RAID, только Hard. Стало неуютно. Да и 2TB стало не хватать. В общем взял я себе сервер побольше, с аппаратным RAID и поставил туда ESXI 6.0.

И возникло две задачи, решение которых я тут опишу:

  1. Перенести виртуальные машины (некоторые из которых около 1TB) с одного сервера на другой с минимальным оффлайном
  2. Делать регулярные бэкапы

Скажу сразу, что обе эти задачи легко решаются, если есть хотя бы минимальная платная лицензия ESXI. Дело в том, что «родной» Backup API в бесплатной версии ESXI выключен. Поэтому приходится находить другие пути.

С платной лицензией есть вариант миграции через vCenter. Ещё есть бесплатная версия Veeam Backup, которая позволяет делать бэкапы и переносить виртуальные машины с одной системы на другую и при этом не требуется их останавливать. Но с бесплатной лицензией ESXI, текущая версия — Veeam 9 — не работает вообще.

Ещё есть решение от HP — VM Explorer, у которого есть бесплатный Free Edition.

VM Explorer 6.2 умеет работать с free ESXI, но:

  • При создании бэкапа — с сервера копируется полный размер образа, даже если диск там тонкий (thin). То есть если диск у виртуальной машины на 500GB, а записано там только 50GB, то копироваться будут 500GB. И так — каждый раз. Режим инкрементального бэкапа (только на локальный компьютер) есть в платной версии, я его не тестировал — на знаю, насколько оно эффективно.
  • Бесплатная лицензия позволяет делать бэкап только на локальные диски. То есть, чтобы копировать на другой ESXI хост нужна уже платная лицензия.
  • В бесплатной версии нет планировщика, то есть запускать бэкапы нужно вручную.

Другое популярное решение — это open source проект ghettoVCB, но мне он показался несколько сложным для использования, да и документация выглядит немного устаревшей. Про этот проект уже писали здесь на Хабре.

Уверен, что есть и много других вариантов. Будет интересно почитать комментарии опытных админов. Хотя подозреваю, что опытные работают там, где купили нужные лицензии и не парятся…

Здесь можно просто упомянуть:

  • Nakivo, у которой в бесплатной версии ограничение на 2 VM.
  • Unitrends, у которой в бесплатной версии ограничение — 1TB.
  • Thinware

Если у вас есть опыт использование этих продуктов — поделитесь в комментариях.

Я в конечном итоге решил использовать 2 инструмента:


Xsibackup


До версии 4.4 Xsibackup был на Github, но сейчас (версия 6.0.7) с Github'а Xsibackup убрали, теперь инсталлировать надо с сайта авторов.

В бесплатной версии:

  • «Горячие» бэкапы, без остановки виртуальных машин. Делается это с помощью снепшота (snapshot)
  • Конфигурирование крона (cron) в ESXI
  • Отчёты по email
  • Ротация бэкапов
  • Бэкап на другой ESXI хост. В бесплатной версии — с помощью rsync, заточенного под ESXI. В платной версии ещё есть инкрементальные бэкапы (OneDiff) через создание промежуточных снэпшотов (как по мне — то не очень удачное решение) и дедупликация с помощью их NAS (XSINAS)

Инструкция установки Xsibackup
Эта же инструкция на английском — 33hops.com/blog_xsibackup-quickstart.html

Инсталлируется Xsibackup на ESXI хост, с которого нужно делать бэкапы.
На ESXI должен быть включена служба SSH.
Регистрируетесь на сайте авторов — Download xsibackup — 33hops.com/xsibackup-vmware-esxi-backup.html
Вам на email придёт бесплатный ключ и скрипт для инсталлирования на ESXI:
cd /vmfs/volumes/datastore1/xsi-dir 2>/dev/null || mkdir /vmfs/volumes/datastore1/xsi-dir && cd /vmfs/volumes/datastore1/xsi-dir && esxcli network firewall unload && wget http://a.33hops.com/downloads/?key=64cG...secretKey -O xsibackup.zip && unzip -o xsibackup.zip || cat xsibackup.zip && echo "" && chmod 0700 xsibackup* && rm -rf xsibackup.zip && esxcli network firewall load 

secretKey у вас будет свой.
Если datastore у вас называется по другому — то надо прописать свой путь.

Увидев wget, кто-то может покачать головой, и сказать, что ставить чужой софт на ESXI хост — это несекьюрно и т.д. Однако при любом бэкапе, вы будете отдавать root пароль программе для бэкапа, то есть кому-то доверять вы будете в любом случае. При локальном копировании Xsibackup использует только shell скрипты, которые можно посмотреть и проверить…

Затем создаёте папку, куда будем складывать бэкапы — локально, или на другом сервере:
mkdir /vmfs/volume1/datastore1/backup

Если копировать бэкапы будет между хостами, то делимся SSH ключами:
./xsibackup --link-srv=[second.esxi.system.ip]

Если хотим, чтоб был бэкапы запускались через крон, то:
./xsibackup --install-cron

Тестируем, что всё работает локально:
./xsibackup --backup-point=/vmfs/volumes/datastore1/backup --backup-type=running --mail-from=email.sender@yourdomain.com --mail-to=email.recipient@anotherdomain.com --smtp-srv=smtp.yourserver.com --smtp-port=25 --smtp-usr=username --smtp-pwd=password --test-mode=true

Чтобы протестировать работу между хостами, меняем:
--backup-point="IP-OF-ESXI:22:/vmfs/volumes/datastore1", где 22 - это SSH порт.

Если SMTP требует TLS, то поддерживается --smtp-sec=TLS

» Полный список опций (на английском)

Локально, то есть на одном хосте, всё работает отлично: бэкапы делаются с помощью нативной утилиты ESXI — vmkfstools. Всё быстро, и тонкие диски остаются тонкими. С жёсткими дисками, у меня получилась скорость около 60MB/s

Однако при копирование на удалённый хост я обнаружил, ту же проблему, что и с HP VM Explorer — копируется полный размер VM, даже если диск тонкий, и используется только меньшая часть.

Когда я спросил авторов, в чём причина, то они написали, что для копирования между хостами используется rsync, а он недостаточно «умён», чтобы пропускать невыделенные блоки тонких дисков.

При тестировании, я обнаружил, что при повторных бэкапах, rsync практически не сокращает время копирования — по сети опять уходит полный размер VM.

Авторы написали, что в планах у них запилить собственную утилиту вместо rsync, которая будет намного быстрей. Планируют выпустить до конца года.

В моём случае, хостер гарантирует скорость сети в 250Mb/s (~31MB/s), но реально между двумя хостами в одном датацентре бэкап у меня работал на 10-20MB/s. Не знаю в чём тут дело, — тормозит ли это сеть, rsync или что ещё, — но процесс растягивается слишком надолго.

Update: нашёл статью, — по их бенчмаркам выходит, что дело в тормознутом SSH (поверх которого работает rsync), по NFS было бы быстрее.

Радует, что в результате диски таки остаются тонкими.

Процесс переноса и бэкапа VMs


Процесс переноса VMs между хостами выглядит у меня так:

  • Сначала, я делаю локальные бэкапы с помощью Xsibackup.
  • Регистрирую новую VM — копию из предыдущего шага.
  • Необязательно: Можно «почистить» VM от удалённых файлов коммандой:

    vmkfstools --punchzero VMname.vmdk

    указывать основной файл, а не тот, который -flat.
  • Затем с помощью Ovftool (см.ниже) копирую на другой хост. Ovftool умеет слать тонкие диски так, что отсылается только используемая часть.
  • После этого VM на первом хосте выключается, а новом — запускается.

Таким же образом пока выглядит и бэкап VM от хостера к себе домой. Для этого у меня дома крутится ESXI — чтобы ovftool мог по сети передавать только полезную нагрузку.

На форумах пишут, что вроде бы есть способ копировать файлы на NFS с опцией sparse так, чтобы передавать только существующие данные, но я пока ещё не разобрался.

Способа делать инкрементальный бэкап я не нашёл.

Пока я это всё делаю вручную из консоли — переношу на другой хост, делаю первый бэкап, но со временем думаю всё настроить через крон. Может позже допишу здесь пару параграфов о том, как настраивать крон. Оригинальные инструкции вот здесь: 33hops.com/xsibackup-cron-how-to.html

Таким образом сейчас у меня первая копия лежит рядом, на том же сервере, и доступна для довольно быстрого восстановления.

Вторая копия — у меня дома, то есть, как и рекомендуют — в физически другом месте. Для восстановления придётся заливать по сети, что существенно медленнее. Но вероятность нужды в этом тоже довольно низкая.

Ovftool


Полное руководство на английском здесь, там же можно и скачать. Ovftool можно ставить к себе на любой компьютер, и управлять гипервизором с него. А можно и поставить прямо на ESXI хост, хотя это и не поддерживаемая возможность.

Инсталляция Ovftool на ESXI
В общем, процесс такой: сначала Ovftool ставится на Linux x64 (я делал на Ubuntu 16), а затем файлы переносятся на ESXI хост.

Вот по шагам:
  • Регистрируетесь с VMware и скачиваете «VMware OVF Tool for Linux 64-bit»
  • Запускаете скачанный файл на Linux и затем копируете получившиеся файлы на ESXI:
    sudo /bin/sh VMware-ovftool-4.1.0-2459827-lin.x86_64.bundle
    scp -r /usr/lib/vmware-ovftool/ root@esx.com:/vmfs/volumes/datastore1
    
  • Потом уже на самом хосте, необходимо отредактировать один файл — /vmfs/volumes/datastore1/vmware-ovftool/ovftool и в нём заменить #!/bin/bash на #!/bin/sh


Ovftool не умеет копировать VM в горячем режиме, то есть требует, чтобы виртуальная машина была выключена. Поэтому — необходимость в Xsibackup выше.

Несколько особенностей работы Ovftool:

  • У меня бывало выскакивали ошибки: «The task was canceled by a user» или «Error: vim.fault.FileNotFound». Причина обоих ошибок оказалось в том, что CDROM на оригинальной машине указывал на ISO, которого не было на целевом хосте. Попробуйте догадаться об этом по тексту ошибки… Решилось удалением CDROM устройства (оно использовалось только для инсталяции OS).
  • Я сам не проверял, но вроде бы ovftool не сохраняет snapshots.

Ещё несколько особенностей Ovftool, только при запуске на ESXI:

  • Хоть ovftool запускается локально, путь к хосту надо прописывать полностью, вместе с пользователем и паролём.
  • Не умеет интерактивно читать пароль с консоли, а требует, чтобы он был передан параметром в командной строке.
  • В пароле можно использовать только буквы, цифры и `-`. При попытке использовать другие символы, типа `#` — пароль не принимался.

Примеры использования ovftool:

  • Вывести список всех зарегистрированных виртуальных машин в датасторе:

    ovftool -ds=datastore1 "vi://root:password@esx1.com/"
  • Копирование виртуальной машины (она должна быть зарегистрированной):

    ovftool -ds=datastore1 -dm=thin "vi://root:password@esx1.com/vmName" "vi://root:password@esx2.com/"
Поделиться с друзьями
-->

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


  1. mikkisse
    10.10.2016 08:52

    Спасибо за статью.
    В принципе, перенос VM на другой хост ESXi можно было сделать следующим образом:
    1. Поднять второй сервер с лицензией evaltuion
    2. С помощью vCenter Converter перенести свои виртуальные машины на этот хост
    3. Накатить стандратную лицензию после миграции

    И если я правильно помню, vCenter converter умеет работать с тонкими дисками


  1. gotch
    10.10.2016 08:55
    +2

    Интересно. Если подвести скромный итог — нормальных средств нет. Нет vCenter, нет счастья.


  1. Ethril
    10.10.2016 09:27
    +1

    ghettoVCB намного удобнее использовать с MKSBackup в качестве фронтэнда — http://www.magikmon.com/mksbackup/ghettovcb.en.html


  1. NLO
    10.10.2016 09:31

    НЛО прилетело и опубликовало эту надпись здесь


    1. gotch
      10.10.2016 10:02

      К лицензиям ESXi понадобится лицензия на vCenter — он предлагает API для backup. Дешевле всего получается vSphere Essentials Plus, который можно дополнить Veeam Essentials.
      Ну а дешевле всего — на Microsoft, конечно, если у вас VM — WIndows.


      1. SlavikF
        10.10.2016 10:08
        +2

        vSphere Essentials Plus — $5,439.00. Как бы не очень дёшево…

        Самый дешёвый вариант, это vSphere Essentials Kits — $560.00, в который включен vCenter Server Essentials. Backup API тут уже работает, так что вариантов становится много…


        1. 2PAE
          10.10.2016 12:28

          Покупка Trilead VM Explorer может быть будет ещё дешевле?


          1. scope169
            11.10.2016 04:03

            Trilead сейчас называется HP — VM Explorer, о котором топикстартер упомянул вначале.


        1. navion
          10.10.2016 13:12

          Есть бесплатный VBR без инкрементальных бекапов (Bacula тоже их не умеет), есть полулегальная NFR для одного хоста и есть продукты для SMB: Altaro, Nakivo и даже Acronis дешевле Veeam.


        1. gotch
          11.10.2016 13:07

          Для VMWare это еще дешево, хе-хе-хе. В «не» Plus нет High Availability, а это как-то совсем скучно.


      1. NLO
        10.10.2016 10:09

        НЛО прилетело и опубликовало эту надпись здесь


      1. navion
        10.10.2016 13:05

        Не нужен там vCenter и для бекапа достаточно vSphere Essentials за 40 тыр на три хоста.


        1. yosemity
          10.10.2016 14:26

          vSphere Essentials подразумевает лицензию на vCenter. Юзать или нет, дело ваше, но глупо не использовать, если уж есть.


          1. navion
            10.10.2016 14:32

            С одним хостом там полезны только шаблоны ценой 8 ГБ оперативки.


            1. yosemity
              11.10.2016 01:30

              ммм. Ниче не понял. Платный Эссеншиал разрешает лицензию на 1 vCenter и 6 сокетов по 2 на каждый из трех хостов. Ты о чем?


              1. navion
                11.10.2016 12:17

                Я о том, что для vCenter нужны ресурсы (2 vCPU, 8 GB), но в Essentials при одном хосте никаких важных фичей он не даёт.


                1. yosemity
                  12.10.2016 13:34

                  Теперь понял. После развертывания vCenter можно порезать ему железо.


                  1. navion
                    12.10.2016 14:30

                    В шестёрке с этим не всё хорошо.
                    Может в 6.5 улучшат автонастройку в сторону уменьшения или вообще откроют API в бесплатной версии, раз Photon Controller не использует vCenter.


  1. merlin-vrn
    10.10.2016 14:46

    Вывод прост: ESXi вообще не предназначен для одиночных серверов виртуализации. Также плохо предназначен для их малого количества. Десять процессроных нод, отдельная СХД — пожалуйста, а один сервер — это боль. Не используйте ESXi.


    1. navion
      10.10.2016 18:05

      Вывод неверный, ESXi прекрасно годится для одиночного сервера, но бесплатная версия скорее является демкой из-за ограничений API.


    1. SlavikF
      10.10.2016 18:25

      Ну это смотря какие цели…
      С задачей просто крутить виртуалки ESXI прекрасно справляется и на одном хосте. У меня uptime — 2 года, и никаких проблем. И это немного…


      1. Sn0WLi9ht
        12.10.2016 16:04

        По хорошему нужно обновляться. В новых версиях исправления уязвимостей. Например была крупная уязвимость Heartbleed. Если вы хосты 2 года не перезагружали очевидно вы так-же не обновлялись.


    1. leninxxx
      10.10.2016 23:01

      Мне кажется с Вами очень многие не согласятся. И будут правы.


      1. yosemity
        11.10.2016 01:34

        +1 Отвечаю именно вам, ESXi рулит. Надеюсь, они запилят когда-нибудь поддержку софт-рейда. nvme просится.


        1. Sn0WLi9ht
          12.10.2016 15:57

          Поддержку софт-рейда выпилили по моему в 5 версии — это не энтерпрайзно, низкий уровень надежности, VMWare надоело разбираться с проблемами кастомеров.


          1. yosemity
            13.10.2016 18:27

            Софт-рейд имеет право на жизнь в том числе в энтерпрайзе. Флеш-решения на NVMe было бы не плохо отзеркалить и cофт-рейд 1 из какой-нибудь парочки p3600 — быстро, надежно и не дорого…


      1. merlin-vrn
        11.10.2016 10:38

        На данный момент — двое не согласились, двое согласились судя по количеству ±.

        Вообще у меня есть опыт эксплуатации этого. Я очень сильно недоволен VMWare. Одиночные хосты на Proxmoх настолько удобнее администрировать, что тут даже говорить не о чём, выбор однозначен. Ну и небольшие кластеры тоже.


        1. navion
          11.10.2016 12:24

          Некоторые просто не любят коммерческие продукты, а из ESXi давно выбросили весь Линукс и HCL надо принимать во внимание. С Proxmox не сталкивался, но у RHEV всё намного хуже при малом количестве хостов.

          По вопросу на SO — экспорт в OVF прекрасно справится с задачей.

          З.Ы. Под oVirt/RHEV есть какие-нибудь достойные продукты для РК, кроме CommVault и Acronis?


  1. Sn0WLi9ht
    10.10.2016 18:16

    Много лет пользуюсь ghettoVCB. Решение очень надежное, всем однозначно рекомендую. Thin и ротацию бекапов умеет. Есть сжатие (zip) но в реальной работе не имеет смысла — бывает нужно из бекапа поднять виртуалку, а с заархивированной виртуалкой такое не выйдет. Бекапить можно на NFS. Есть возможность прикрутить оповещение по email. Если есть возможность использовать хранилище с дедупликацией — тогда вообще идеальное решение получится. В скрипте нужно допилить возможность бекапа для более высоких версий (достаточно вставить нужные версии ESX), это должно быть просто.

    PS
    любой бекап VMWare делается при помощи снапшотов


    1. SlavikF
      10.10.2016 18:22

      Можете ли поделиться опытом работы с ghettoVCB:
      — умеет ли ghettoVCB делать инкрементальные бэкапы?
      — если бэкапить на другой ESXI хост — будет ли по сети гоняться полный размер VM или только используемая часть тонких дисков?
      — тот же вопрос для NFS — будет ли по сети гоняться полный?
      — вы пишете про дедупликацию — но дедупликация обычно делается на стороне хранилища. Значит, сначала надо по сети отправить полный размер виртуалки, и только уже на хранилище оно дедуплицируется. Так?


      1. Sn0WLi9ht
        10.10.2016 18:48
        +1

        — Инкрементальные не умеет, но по сети гонятся только данные (т.е. thin файл).
        — На другой хост нельзя бекапить, только на подмонтированное хранилище (то что можно указывать в путях бекапа утилите, т.е. это должен быть либо NFS сторадж, либо iscsi/das)
        — Да, дедупликация на стороне хранилища (нужно какой нибудь ZFS использовать), потому как самый главный недостаток ghettoVCB невозможность делать инкрементальные бекапы, только полные либо thin.

        Есть еще ряд недостатков:
        — Бэкап делается при помощи снятия снапшота, т.е. изменения VM начинают писаться в дельта-файл, а основной файл диска VM замораживается и копируется на бекап сторадж, после копирования ESX сливает содержимое изменений дельта файла в основной файл VM — и тут могут наблюдаться серьезные тормоза, зависит от вашего железа, размера VM, количества изменений внесенных в дельта файл и сопутствующих параметров. В основном я ставлю бекап на периоды низкой активности (на ночь). В принципе, на сколько я знаю, все виды бекап систем работают именно таким способом, это ограничения API — иными словами ghettoVCB не лучше и не хуже в этом плане коммерческих систем.
        — Потеря содержимого оперативной памяти. По идее в  VMWare есть механизм работающий через VMWare Tools который позволяет минимизировать последствия (принудительный сброс дисковых буферов операционной системы и т.д., но не всегда корректно работает, нужно это учитывать). В этом плане думаю так же нет отличий от коммерческих систем.
        — Думаю хорошей комбинацией является сочетание классического бекапа данных изнутри VM и ghettoVCB


    1. BrSlava
      11.10.2016 19:51

      ghettoVCB — отличный инструмент, но с версией ESXi 6 не хочет работать.

      > В скрипте нужно допилить возможность бекапа для более высоких версий (достаточно вставить нужные версии ESX), это должно быть просто.
      Не поделитесь как его просто допилить?


      1. Sn0WLi9ht
        12.10.2016 11:48

        Я посмотрел версию которая сейчас актуальна и судя по содержимому скрипта, там появилась поддержка 6-й версии https://raw.githubusercontent.com/lamw/ghettoVCB/master/ghettoVCB.sh

        Если хочется самому поправить, то нужно в исходном коде найти проверки версий, и добавить нужную версию. Например:

        if [[ "${VER}" == "4" ]] || [[ "${VER}" == "5" ]] ; then
        
        заменить на
        if [[ "${VER}" == "4" ]] || [[ "${VER}" == "5" ]] || [[ "${VER}" == "6" ]] ; then
        
        и т.д.


  1. ruslanmatrix
    11.10.2016 10:14

    Наизобретали велосипедов…
    Посчитайте TCO — стоимость времени админа на уставновку и настройку не популярного продукта, обслуживание системы год, поиск нового сотрудника, который знает продукт или затраты на обучение, передачи дел. Если не в 100%, то 99%, что это дороже покупки SBE VE за 50-55 000? с годовой поддержкой вендора.
    И перенести можно и бэкапить с помощью агента на любом гипервизоре даже без API. Хоть из Amazon.
    90 дней для тестирования бесплатно.


    1. navion
      11.10.2016 12:29

      Надо же, в 2016 году они всё же изобрели Instant Recovery.


  1. ruslanmatrix
    11.10.2016 22:27

    https://habrahabr.ru/company/symantec/blog/267159/

    Смотрим дату публикации и читаем

    можно создать в виртуальной среде клон физического сервера с возможностью его быстрого восстановления (Instant Recovery) буквально одной кнопкой. Именно это реализовано в Backup Exec 15.


    Всегда рад помочь в эффективном решении задач по серверам HP, виртуализации Vmware, бэкапу Symantec/Veritas/Veeam.


    1. navion
      11.10.2016 23:56

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