Назад | Перейти на главную страницу

Как перенести большой зашифрованный сервер на ESXi

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

В основе моей проблемы лежит то, что у меня есть старый управляемый сервер ESXi с несколькими критически важными виртуальными машинами debian и новый сервер ESXi, на котором я хочу разместить эти виртуальные машины. Серверы находятся в отдельных центрах обработки данных, и хотя фактический используемый размер виртуальных машин составляет всего несколько гигабайт непосредственно, каждый из них настроен как зашифрованный LVM, поэтому ESXi видит их как полностью заполненные диски емкостью 3 ТБ. В идеале я хотел бы создать копию некритических частей этих виртуальных машин, а затем в какой-то момент объявить о простоях, заморозить их и перенести критические части. Если бы диск не был зашифрован, я мог бы просто сжать диски, но я понимаю, что для их сжатия мне нужно было бы выключить серверы, что далеко не идеально. Таким образом, я вижу, что могу пойти по этому пути.

  1. Вручную передать каждый файл VMDK размером 3 ТБ (очень медленно)
  2. Имейте время простоя и измените размер, чтобы сделать передачу более приятной (время простоя не идеально)
  3. Используйте комбинацию DD, sfdisk, инструментов LVM и дампа для переноса данных на новые виртуальные машины.

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

Из-за шифрования вы не можете выполнить миграцию «полезной» части диска только с помощью инструментов, которые смотрят на виртуальную машину «извне». Сюда входят vMotion, Veeam B&R и т. Д.

Единственное, что мне приходит в голову, - это миграция, выполненная с помощью бесплатного конвертера VMware: это позволяет вам выполнять живую миграцию «P2V», глядя на виртуальную машину «изнутри».

Установите его на виртуальную машину Windows, которая может подключаться как к виртуальной машине, так и к хосту ESXi, выберите миграцию «включенной» машины Linux и укажите учетные данные root как для виртуальной машины, так и для хоста ESXi. Он войдет в систему и выполнит миграцию «изнутри», увидев, что диски заполнены на несколько ГБ, и перенесет только их. Я подозреваю, что если вы выберете «инфраструктура», конвертер попытается воспользоваться тем фактом, что виртуальная машина уже находится в инфраструктуре, и это плохо в вашем конкретном случае.

Никогда не пробовал это ни дома, ни на производстве с зашифрованным диском, но я выполнил живую миграцию P2V с диском 1 ТБ с физического хоста на хост ESXi, и миграция через 1GBe заняла всего около 40 минут, в то время как предполагаемое необработанное время для передачи Полный 1 ТБ данных по ссылке в ГБ занимает около 3 часов, поэтому выполняется что-то вроде копирования по типу файла.

Итак, это был лучший сценарий после провала P2V.

  1. Сделайте копию виртуальной машины в месте назначения с рабочим шифрованием LVM.
  2. Создайте вторую виртуальную машину и подключите к ней зашифрованный LVM в / mnt.

    Important so that the server itself is not running
    
  3. Копирование ключей между серверами для пользователей root для предотвращения проблем с доступом
  4. Выполните следующую команду

    rsync -aHxvK --numeric-ids --progress --exclude=/etc/fstab --exclude=/etc/crypttab --exclude=/etc/initramfs-tools/conf.d/* --exclude=/etc/network/* --exclude=/mnt/* --exclude=/dev/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* --exclude=/boot/* --exclude=/root/*   root@1.2.3.4:/* /mnt/
    

Это скопирует большинство неизменяемых файлов и даст вам работающую «копию» сервера. Большая часть этого rsync показана в нескольких руководствах в Интернете, но я обнаружил, что / etc / crypttab необходим для зашифрованных томов, или он не загружается, и требуется initramfs, или вы консольного спама при загрузке

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

Одно из возможных решений:

Создайте новую пустую виртуальную машину на целевом хосте.

Создайте или повторно используйте простую вспомогательную виртуальную машину.

Подключите диски целевой виртуальной машины к вспомогательной виртуальной машине, создайте на них разделы и файловые системы и смонтируйте их. Если используется старая (0.xx) версия grub, используйте -I 128 при создании файловых систем!

Из вспомогательной виртуальной машины скопируйте как можно больше работающей системы (исключая / proc и / sys !!) через rsync в файловые системы целевой виртуальной машины. Вам могут понадобиться --numeric-ids, -H и --sparse / - inplace. Используйте --delete вдумчиво.

Когда вы можете себе позволить, остановите исходную систему на короткое время простоя (отключите столько служб, сколько сможете, особенно серверы баз данных!), И выполните последнюю rsync.

Chroot в копию. Исправьте точки монтирования / proc и / sys, / dev (MAKEDEV generic обычно даст вам разумный, независимый от udev набор) и загрузчик (проще всего выполнить простую установку grub - помните, куда указывают файлы вашего устройства! - и позже используйте ручные параметры при первой загрузке, а затем исправьте это должным образом из работающей системы).

Unchroot, размонтировать и отключить диски. Загрузите копию (сначала сеть отключилась. Вам, вероятно, придется вручную настроить параметры загрузчика).