Pull to refresh

Как перенести ESXi сервер на другой сервер

Reading time6 min
Views6.4K

Введение


Данный материал описывает способ установки ESXi сервера на оборудование, которое не поддерживается его установщиком. Проблема обходится путем переноса образа ESXi с работающего сервера на сервер, где возникла проблема установки. В моем случае проблема была с HP Proliant Blade 35p.

Проблема с 35 блейдом


Понадобилось нам установить ESXi на Blade HP BL35p. Но почему-то при установке ESXi не может обнаружить установленный там жесткий диск. Причем на HP BL20p ставится без проблем, а вот на 35й никак не хочет — выдает ошибку:

Unable to find a supported device

Поиск информации
Поиск в интернете по ESXi дал информацию о возможности загружаться с флешки (http://www.yellow-bricks.com/2008/07/29/esxi-35-update-2-on-a-usb-memory-key/). Но здесь появилась другая проблема — BL35p не имеет внешних USB портов.
Вариант с загрузкой по ILO тоже не очень подходит, т. к. для этого надо обязательно заходить на Blade браузером и монтировать ему образ.

Была еще одна возможность использования USB устройств. На передней панели сервера есть специальный разъем, куда подсоединяется хитрый кабель с выходами на PS/2 мышь, клавиатуру, монитор и 2 USB порта. Но такое решение больше подходит для временного подключения, а не для штатной работы.

Вариант с образом dd для flash


неудача с dd на партицию

Поскольку готовый образ для работы прямо с флешки уже есть, я подумал перенести его прямо на диск. Damn Small Linux тоже не захотел грузиться на блейде. Я попробовал и в безопасном режиме и еще пару вариантов — не вышло.
Поэтому я просто поставил наш корпоративный CentOs на диск, а потом записал этот образ в специально отведенную партицию:
centos # dd bs=512 if=VMware-...-.i386.dd of=/dev/hda3
Потом залез в grub.conf и добавил пункт загрузки для ESXi
title ESXi
root (hd0,2)
chainloader +1
Наивный! Я думал, что все так просто :)
Такой способ не мог заработать в принципе, но я тогда еще не знал этого.
Тут стоит отметить что все это я проделывал, выискивая хоть небольшой но целый интервал времени, между другими хоть и мелкими, но неотложными задачами. А такое прерывание не способствует глубокому пониманию вопроса :)
Я надеялся, что все заработает само после нескольких удачных манипуляций, найденных в интернете.

неудача с dd на отдельный диск

Снова начал искать способ запустить сервер. На этот раз я искал возможность сделать двойную загрузку из GRUB.
Нашел обсуждение похожей проблемы How do I setup ESXi in a dualboot with Linux? ( communities.vmware.com/message/1205801;jsessionid=8858F14289C5790501D2BE15F4E048CF )

Добавил 2й винчестер в сервер, записал образ туда
centos # dd bs=512 if=VMware-...-.i386.dd of=/dev/hdb
Повторил манипуляции с grub
title ESXi
root (hd1,0)
chainloader +1
но что-то не хотел он грузиться из grub. Отключил 1й диск и вот он грузится со 2го. Я обрадовался: наконец-то! Все-таки это довольно просто!
Но и на этот раз загрузка прервалась. Не могу найти загружаемый раздел, ожидание появления загружаемого USB устройства, — так отрапортовал сервер. И в итоге ошибка загрузки.

dd образ уже содержит несколько разделов

Дальнейший поиск привел меня к этому документу www.grid.org/blog/cameron/updating-vmware-esxi-disk-dump-file
Тогда я понял почему не сработал способ с записью образа в раздел диска — сам образ уже содержит в себе несколько разделов диска.
~# fdisk -ul VMware-...-.i386.dd
You must set cylinders.
You can do this from the extra functions menu.
Disk VMware-...-.i386.dd: 0 MB, 0 bytes
64 heads, 32 sectors/track, 0 cylinders, total 0 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
VMware-...-.i386.dd1 8192 1535999 763904 5 Extended
VMware-...-.i386.dd4 * 32 8191 4080 4 FAT16 <32M
VMware-...-.i386.dd5 8224 106495 49136 6 FAT16
VMware-...-.i386.dd6 106528 204799 49136 6 FAT16
VMware-...-.i386.dd7 204832 430079 112624 fc Unknown
VMware-...-.i386.dd8 430112 1535999 552944 6 FAT16
Partition table entries are not in disk order


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

Загрузка ESXi по сети с использованием PXE


В процессе поиска я также встретил довольно заманчивый способ загрузки ESXi по сети с помощью PXE. Здесь все также просто как и с созданием загрузочной флешки, только добавляются еще несколько шагов по настройке PXE сервера.
В данном документе все подробно расписано communities.vmware.com/docs/DOC-6824. Даже применить нужную конфигурацию после загрузки можно communities.vmware.com/docs/DOC-7510.
Но в данном случае нужен отдельный PXE сервер, настраивать который прямо сейчас не хотелось, поэтому я пошел другим путем :)

Успешный вариант с переносом разделов с BL20p


Я подумал, что все это просто организуется как для флешки, так и для PXE загрузки. Можно добавлять записи для своих драйверов устройств при помощи манипуляций с файлом oem.tgz. Значит мне нужен просто нормальный Live Cd и сервер, на который уже установился ESXi.
Поэтому я установил ESXi на резервный BL20p, где не возникает никаких проблем. Скачал ubuntu-8.10-desktop-i386.iso
карта партиций только что установленного ESXi

Загрузился в Убунту посмотрел на диск с ESXi. Увидел такую картину:

fdisk -ul /dev/cciss/c0d0

И мне почти все стало понятно :)
раздел /dev/cciss/c0d0p4 у нас загрузочный, дополнительный раздел (extended) /dev/cciss/c0d0p1 со своими подразделами (p5, p6, p7, p8) содержит в себе все необходимое для работы ESXi.
Остаются еще два основных раздела:
/dev/cciss/c0d0p2 — здесь лежит файл подкачки (uwswap)
/dev/cciss/c0d0p3 — это хранилище, под которое при установке выделяется все оставшееся место.

перенос основной части

Далее я начал перенос ESXi сервера с BL20p на BL35p. Для этого я загрузился на обоих с Live CD Ubuntu.
На BL20p выполнил
blade20p #fdisk -ul /dev/cciss/c0d0
Disk /dev/cciss/c0d0: 18.3 GB, 18345246720 bytes
64 heads, 32 sectors/track, 17495 cylinders, total 35830560 sectors
Units = sectors of 1 * 512 = 512 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/cciss/c0d0p1 8192 1535999 763904 5 Extended
/dev/cciss/c0d0p2 1536000 9922559 4193280 6 FAT16
/dev/cciss/c0d0p3 9922560 35830559 12954000 fb VMware VMFS
/dev/cciss/c0d0p4 * 32 8191 4080 4 FAT16 <32M
/dev/cciss/c0d0p5 8224 106495 49136 6 FAT16
/dev/cciss/c0d0p6 106528 204799 49136 6 FAT16
/dev/cciss/c0d0p7 204832 430079 112624 fc VMware VMKCORE
/dev/cciss/c0d0p8 430112 1535999 552944 6 FAT16
Partition table entries are not in disk order

Здесь уже видна знакомая нам картина. Зная где заканчивается расширенный раздел №1 (/dev/cciss/c0d0p1), снимаю его образ
blade20p # dd bs=512 if=/dev/cciss/c0d0 of=/tmp/boot_esxi.dd count=1535999
Потом переношу этот образ размером 786`431`488 байт на другой сервер
blade20p # scp /tmp/boot_esxi.dd bl35p:/tmp/
Ну и пишу этот образ на жесткий диск
blade35p # dd bs=512 if=/tmp/boot_esxi.dd of=/dev/sda

копирование содержимого партиции2

Форматирую 2й раздел (/dev/sda2) в FAT16, т. к. он хотя и есть в таблице разделов, но реально он не размечен на диске.
На обоих серверах монтирую 2й раздел
blade35p # mount /dev/sda /mnt (на BL35p)
blade20p # mount /dev/cciss/c0d0p2 (на BL20p)
Копирую содержимое разделов с 20го на 35й
blade20p # echo > /mn t/uwswap (обнуляю swap размером в 1 Гб)
blade20p # scp /mnt/* blade35p:/mnt/ -r


манипуляции с партицией3 (возможно, что это делать не обязательно)

Поскольку 3й раздел /dev/cciss/c0d0p3 в формате vmfs, я не знаю что с ним делать в Убунте. Поэтому просто переношу 400Мб этого раздела в виде образа. Перед этим я выяснил, загрузившись в ESXi, что на этом разделе есть служебные файлы, которые занимают 366
blade20p # df -h
Filesystem Size Used Available Use% Mounted on
unknown 183.9M 116.4M 67.5M 63% /
unknown 4.0G 1.0G 3.0G 25% /vmfs/volumes/49df3145-f290113e-defa-001635c10df4
unknown 12.3G 366.0M 11.9G 3% /vmfs/volumes/49df314a-a47bf89f-e95d-001635c10df4
unknown 539.8M 175.0M 364.8M 32% /vmfs/volumes/3abb47ef-875ea67c-c948-7bf6ff8d3c38
unknown 47.8M 1.0k 47.8M 0% /vmfs/volumes/f25a177c-84106917-bb27-25e3fe8f8471
unknown 47.8M 36.6M 11.2M 77% /vmfs/volumes/c8f8fc7d-7c221e9a-67b6-5dcb9d3b36ad


Переношу так же как и первый кусок до этого:
blade20p # dd bs=512 if=/dev/cciss/c0d0p3 of=/tmp/partit3.dd count=819200 (819200 = 400*1024*1024/512)
blade20p # scp /tmp/partit3.dd bl35p:/tmp/

Ну и пишу этот образ на жесткий диск в нужный раздел
blade35p # dd bs=512 if=/tmp/partit3.dd of=/dev/sda3

После перезагрузки ESXi работает как ни в чем не бывало. Ура! Все получилось! :)

создание Storage из VI Client

Остается только сконфигурировать наш сервер.
Настраиваю из консоли ip адрес нового сервера. Захожу на него с помощью VMWare Infrastructure Client. В настройках вижу, что на этом сервере есть хранилище на 13,3 Гб и еще около 40 Гб неиспользуемого пространства, т. к. здесь установлен винчестер на 60Гб.
Удаляю существующее хранилище на 13,3 Гб, потом создаю новое из неразмеченного пространства в 55 Гб.

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

Эту ситуацию описал DimkaPhantom dimkaphantom.habrahabr.ru/blog/54322

Пришлось повторить описанную выше процедуру переноса сервера.

Заключение



Когда весь путь пройден, все кажется настолько простым и очевидным, что просто диву даешься чего я так мучился в начале :)
Вдруг кто-то окажется в начале этого пути и не все будет ему очевидным. Может быть мое описание ему хоть немного поможет :)
Tags:
Hubs:
Total votes 33: ↑11 and ↓22-11
Comments12

Articles