null

Клонирование рабочих станций

В данной статье я вновь возвращаюсь к теме клонирования, но в данном случае речь пойдет о более чем реальном «железу», честно проработавшем десяток лет. Не секрет, что техника Sun Microsystems славится своей живучестью. Однажды запущенная в production рабочая станиця в далекие 90-ые способна «пережить» несколько поколений системных администраторов. И когда заказчик наконец-то решается на upgrade или просто задумывается о резервной копии машины, нередко возникают ситуации с потерей рутовых паролей и самое главное — отсутствием в штате администратора, способного заново развернуть годами функционирующее ПО. Возникает потребность в «бесболезненном» мигрировании.

 

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

  1. Архитектура рабочей станции. Совместимые процессоры и память.

  2. Интерфейс подключения HDD.

  3. Дополнительное оборудование. Видео- и аудио- карты, модемы и т.д.

  4. Операционная система.

  5. Привязка ПО к hostid и пр.

 

Далее необходимо подобрать похожую по параметрам рабочую станцию, ориентируясь в первую очередь на процессор. Желательно иметь одинаковый интерфейс подключения HDD, клонирование диска SCSI → IDE довольно кропотливая задача, особенно для старых операционных систем. В случае с наличием дополнительных PCI-карт — крайне важно строгое соблюдение нумерации слотов.

 

Задача состоит из двух этапов: клонирование диска и тестирование ПО на новом железе.

 

Худшим случаем является несоответствие интерфейса и размера дисков. В таком случае нужно четко определить максимально допустимый размер раздела для данной операционной системы. К примеру, в Solaris 2.6 не поддерживается IDE-диски больше 8 гб, при этом размер раздела не может превышать 1024 цилиндра. Чего не скажешь о SCSI дисках.

Копирование таких дисков можно осуществить следующим образом:

  1. Грузимся на новой машине с Install CD Solaris 2.6: ok boot cdrom -s

  2. Создаем на новом диске разделы в соответствии со старым диском, учитывая рекомендации по размеру раздела: format

  3. Создаем на новых разделах файловую систему, монтируем ее и копируем каждый раздел через ufsdump → ufsrestore, отмонтируем.
    # newfs /dev/rdsk/c1t2d0s0
    # mount -F ufs -o rw /dev/dsk/c1t2d0s0 /mnt
    # ufsdump 0f – / | ( cd /mnt ;ufsrestore xvf – )
    # umount /mnt

  4. Делаем диск загрузочным:
    # installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1t2d0s0

  5. Проверяем /etc/vfstab на новом диске на совпадение имен c#t#d#s# (помним про различие SCSI и IDE), правим при неободимости.

  6. Копируем содержимое каталогов /dev и /devices с загрузочного CD на новый диск, предварительно зачистив их:
    cd /devices ; find . -depth -print | cpio -pvd /mnt/devices/
    cd /dev ; find . -depth -print | cpio -pvd /mnt/dev/

  7. При необходимости правим /mnt/etc/path_to_inst, /mnt/etc/name_to_major

  8. Пытаемся грузится с нового диска.

При успешной загрузке системы смотрим на логи загрузки ПО. Часто программы привязываются к hostid машины, вшитом в IDPROM. В таком случае есть грязный способ убедить программу в подлинность новой машины. Заходим в OBP и меняем нужные байты в IDPROM. Hostid состоит из 4 байт. Первый определяет тип системы, со второго по четвертый дублируются последние три байта MAC-адреса. Более подробно с IDPROM можно ознакоиться в данной статье:

http://zambon.us/thoughts/change_the_hostid_on_a_sun_box.html

 

Посмотреть содержимое IDPROM можно следующим образом:
ok .idprom
Format/Type: 1 80 Ethernet: 8 0 20 a1 b2 c3 Date: 0 0 0 0
Serial: a1 b2 c3 Checksum: a8

 

При совпадении типа машины меняем нужные нам три байта:

a1 c mkp
b2 d mkp
c3 e mkp

 

В последний байт IDPROM записываем новую check-сумму и перезагружаем машину.
0 f 0 do i idprom@ xor loop f mkp
reset

 

Грузимся с новым hostid и радуемся новой рабочей станции.