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

Поиск информации
Поиск в интернете по 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. Увидел такую картину:
И мне почти все стало понятно :)
раздел /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 Mб
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
Пришлось повторить описанную выше процедуру переноса сервера.
Заключение
Когда весь путь пройден, все кажется настолько простым и очевидным, что просто диву даешься чего я так мучился в начале :)
Вдруг кто-то окажется в начале этого пути и не все будет ему очевидным. Может быть мое описание ему хоть немного поможет :)