Импорт операционной системы Linux в среду SmartCloud Enterprise

Советы по эффективному импорту образов операционной системы в среду SmartCloud

Среда IBM® SmartCloud Enterprise 2.0 позволяет переносить образы операционной системы Linux® в облако. В этой статье даются отсутствующие в официальной документации рекомендации, позволяющие выполнить эту задачу более эффективно. Автор статьи, имеющий за плечами успешный опыт импортирования в IBM SmartCloud Enterprise образов на основе CentOS и Ubuntu, объясняет, как подготовить образ и метаданные, какие инструменты использовать и как настроить рабочее место. Также он дает некоторые советы, касающиеся диагностики и устранения возникающих неполадок.

Томоюки Ниидзима, исполнительный архитектор ИТ по направлениям Cloud Computing и Smarter Cities, IBM

Tomoyuki NiijimaТомоюки Ниидзима (Tomoyuki Niijima) – архитектор ИТ, разрабатывавший и внедрявший крупномасштабные сложнейшие информационные системы на протяжении последних 20 лет. Является соавтором трех документов AIX Redbook и автором статей, опубликованных в нескольких журналах, включая SAP Professional Journal. Также принимал участие в разделе Open Source-технологий. Последние два года его деятельность посвящена облачным вычислениям, в особенности эффективному и гибкому развертыванию и управлению такими сложными компонентами, как операционные системы, промежуточное программное обеспечение, приложения и операционные инструменты.



05.02.2013

В IBM® SmartCloud Enterprise 2.0 появилась возможность импорта образов операционных систем в облако, однако доступна она только для операционной системы Linux, а в Windows® и UNIX она не поддерживаются. Согласно руководству SmartCloud Enterprise Customizing Images and Software Bundles, поддерживаются только дистрибутивы Red Hat и SuSE; вы не сможете импортировать образы других дистрибутивов Linux до тех пор, пока они не будут соответствовать условиям, описываемым в этой статье.

Большинство процедур по переносу образа должны выполняться с помощью командной строки и API-интерфейсов. Вы должны быть знакомы с API-функциями SmartCloud, а также обладать минимальными навыками инсталляции и настройки операционной системы Linux.

Пользователям SmartCloud доступны два справочных руководства: Customizing Images and Software Bundles и REST API reference 2.0. Несмотря на то, что в них содержится много полезной информации, мне кажется, что в них мало место уделено эффективному импорту ОС Linux в облако, поэтому я решил написать отдельную статью на эту тему.

На рисунке 1 изображена общая схема процесса импорта образа в SmartCloud Enterprise.

Рисунок 1. Общая схема переноса образа в среду IBM SmartCloud Enterprise
Рисунок 1. Общая схема переноса образа в среду IBM SmartCloud Enterprise

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

Четыре основных задачи по импорту ОС Linux

Для переноса операционной системы Linux в SmartCloud Enterprise необходимо выполнить четыре основных задачи:

  1. Подготовка образа ОС Linux и метаданных. Для подготовки образа ОС Linux вам потребуется гипервизор. Подготовка метаданных выполняется вручную, но вы можете повторно использовать в качестве шаблона метаданные любого публичного образа, доступного в SmartCloud.
  2. Сохранение образа и метаданных на устройстве постоянного хранения. Вы можете записать образ и метаданные, создав экземпляр с присоединенным устройством хранения. Можно загрузить образ и метаданные по сети или создать их внутри экземпляра.
  3. Импортирование образа с устройства хранения в качестве частного образа. Для этой задачи будет описана команда POST {baseURI}/offerings/image API.
  4. Создание экземпляра из образа. Успешно импортированный образ появляется в списке образов, и на его основе можно создавать instance (экзпмпляр), как и из других частных образов

Для предварительной подготовки я рекомендую прочесть справочные материалы и загрузить следующие компоненты:

  • Руководство Customizing Images and Software Bundles и справочное руководство REST API Reference 2.0 (доступны в разделе Support технической библиотеки портала SmartCloud) или справочные руководства по инструментам командной строки, которые вы собираетесь использовать.
  • QEMU – гипервизор и инструмент для работы с образами.
  • ISO-образ вашей операционной системы Linux.
  • RealVNC VNC viewer.

Теперь перейдем к детальному рассмотрению каждой из четырех задач. В каждом разделе вы найдете различные полезные советы.


Подготовка образа ОС Linux и метаданных

В этом разделе описываются следующие шаги:

  • Подготовка шаблона метаданных.
  • Подготовка экземпляра рабочего места.
  • Установка QEMU.
  • Настройка сервера VNC.
  • Подготовка образа ОС.
  • Установка ОС с помощью QEMU.
  • Минимальная настройка образа операционной системы.

Подготовка шаблона метаданных

Проще всего подготовить набор метаданных, необходимый для импортирования вашего образа, используя уже имеющиеся метаданные публичного образа. Если вы импортируете ОС SuSE или ее клон, то используйте готовые метаданные публичного образа SuSE. Если вы импортируете ОС Red Hat или ее клон (например, CentOS), то используйте метаданные публичного образа Red Hat.

  1. Поскольку публичный образ защищен от копирования, то необходимо создать экземпляр из публичного образа, который вы хотите использовать. Убедитесь, что вы создаете экземпляр целевой ОС с той же самой архитектурой процессора, например, 32- или 64-разрядный образ.
  2. После того, как будет готов экземпляр публичного образа, сохраните его в качестве частного образа. Теперь можно установить для частного образа флаг CopyAllowed = Y на странице Asset Catalog портала SmartCloud.
  3. Ссылка на страницу Asset Catalog в строке заголовка вкладки Control panel портала SmartCloud portal. Щелкните по ссылке и откройте вкладку My Dashboard и вы увидите список ваших частных образов.
  4. Щелкните значок с изображением карандаша для образа, который вы только что сохранили и щелкните по ссылке continue.... Внизу экрана появится флаг Copy Allowed.
  5. Измените его значение на Y и нажмите кнопку Update.
  6. Создайте устройство постоянного хранения в формате ext3. Для него будет достаточно выделить 60 гигабайт.
  7. Скопируйте частный образ на устройство постоянного хранения с помощью PUT {baseURI}/storage/{storage id} API.

Подготовка экземпляра рабочего места

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

Рисунок 2. Подготовка образа ОС и метаданных в экземпляре рабочего места SmartCloud
Рисунок 2. Подготовка образа ОС и метаданных в экземпляре рабочего места SmartCloud

По завершении копирования создайте еще один экземпляр с присоединенным устройством хранения. Это будет экземпляр вашего рабочего места. Рекомендуется использовать 64-разрадную ОС Red Hat 6.0, но можно использовать любой вариант Linux. В следующем примере предположим, что точкой монтирования устройства хранения является /data.

Вы увидите похожий набор образов и метаданных:

$ ls -l /data/image
total 3459192
-rw-rw-r--. 1 idcuser idcuser         451 Jan  3 03:14 BSS.zip
-rw-r--r--. 1 idcuser idcuser 64424509440 Jan  3 00:04 K7BqB_W2SOG3K@rUrln1EA.img
-rw-rw-r--. 1 idcuser idcuser         196 Jan  3 03:23 K7BqB_W2SOG3K@rUrln1EA.mf
-rwxr-xr-x. 1 idcuser idcuser        2013 Jan  3 00:04 K7BqB_W2SOG3K@rUrln1EA.ovf
-rwxr-xr-x. 1 idcuser idcuser       57830 Jan  3 00:04 RAM.zip
-rwxr-xr-x. 1 idcuser idcuser       20648 Jan  3 00:04 Terms.zip

Базовые имена файлов .img, .mf и .ovf различаются для каждого образа. Можно повторно использовать файлы RAM.zip, Terms.zip и the .ovf в том виде, как они есть, а остальные файлы можно удалить.

Установка QEMU

Загрузите tarball-файл QEMU с исходным кодом с Web-сайта QEMU и выполните команды configure, make и install:

wget http://wiki.qemu.org/download/qemu-1.0.tar.gz
tar -xzf qemu-1.0.tar.gz
cd qemu-1.0
./configure --target-list=x86_64-softmmu,i386-softmmu
make & install

Можно добавить путь /usr/local/bin в переменную окружения PATH, поскольку в предыдущем примере набор инструментов QEMU устанавливается в директорию.

Настройка сервера VNC

QEMU открывает виртуальную консоль в своем собственном сервере VNC. Вам необходимо установить подключение к системе XWindow VNC экземпляра с помощью клиента VNC, установленного на вашем компьютере, и запустить еще один клиент VNC в системе XWindow для подключения к VNC-порту QEMU.

Подготовка образа операционной системы

Образ операционной системы – это двоичный файл, содержащий образ жесткого диска с установленной ОС Linux. Он также называется виртуальным диском, поскольку гипервизор может управлять им, используя в качестве жесткого диска. Самый простой способ создания образа операционной системы – это инсталляция ОС на виртуальный диск с помощью гипервизора и ISO-файла или инсталляционного CD/DVD-диска операционной системы.

Инсталляция операционной системы с помощью QEMU

Можно выполнить эту процедуру в сеансе VNC, поскольку для открытия консоли QEMU необходимо запустить клиент VNC в системе XWindows, как описывалось ранее. Для подключения к XWindows с вашего компьютера можно использовать программу RealVNC Viewer.

  1. Создайте пустой образ в формате raw:
    qemu-img create -f raw hdd.img 60G
  2. Запустите гипервизор, используя файл образа и ISO-файл:
    qemu-system-i386 -m 1G -hda hdd.img -cdrom installer_image.iso -boot d
  3. Если вы устанавливаете 64-разрядную операционную систему, то вместо последней команды выполните команду qemu-system-x86_64. Чтобы увеличить объем виртуальной памяти, измените значение после флага -m.
  4. Для просмотра консоли QEMU необходимо использовать клиент VNC в системе XWindow экземпляра рабочего места. В ОС RHEL6 доступен инструмент TigеrVNC Viewer (для нашей задачи используйте меню Applications > Internet). Запустите TigеrVNC Viewer и укажите > localhost в качестве сервера VNC, чтобы подключиться к консоли QEMU.
    Рисунок 3. Просмотр установки гостевой ОС с помощью VNC экземпляра SmartCloud
    Рисунок 3. Просмотр установки гостевой ОС с помощью VNC экземпляра SmartCloud
  5. Работа установщика операционной системы может оказаться очень медленной, поскольку в экземпляре SmartCloud нет ускорителя KVM. Вы можете выполнить этот шаг на локальном компьютере, но тогда вам придется передавать файл размером более 10 Гб через Интернет каждый раз, когда вы вносите изменения в образ, до тех пор, пока эта задача, наконец, не будет завершена.

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

  • Нельзя использовать LVM. Поскольку последняя версия установщика ОС Linux по умолчанию использует LVM, то необходимо выбрать режим пользовательской установки, чтобы избежать использования LVM.
  • Можно использовать только разделы /boot и /, которые должны располагаться в первичном разделе и быть отформатированы в файловой системе ext3. Эти параметры необходимо явно указать в меню пользовательской установки.
  • Нельзя использовать область подкачки (swap). Возможно, вы захотите увеличить объем виртуальной памяти в тех случаях, когда установщик зависает при отсутствии достаточного количества памяти. Вместо этого можно использовать текстовый режим установки, не требующий столь большого объема памяти, однако некоторые текстовые установщики не поддерживают пользовательский режим, необходимый для выполнения первых двух условий.

После успешной установки операционной системы в файл образа перезагрузитесь, войдите в систему и проверьте, что среда содержит модули virtio и учетную запись пользователя root. Для проверки наличия модулей ядра virtio в директории /lib/modules и в исходном образе виртуального диска выполните следующие две команды:

modprobe -l | grep virtio
gzip -dc /boot/initr*.img | cpio -t | grep virtio

Если в выводе любой из этих команд отсутствуют строка virtio_pci или virtio_blk, то необходимо установить модуль ядра virtio и заново создать образ виртуального диска. В противном случае вы сможете импортировать образ, но он не будет загружаться.

Минимальная настройка образа операционной системы

Ниже приводится минимальная настройка образа операционной системы перед его импортированием.

  1. Создайте учетную запись пользователя idcuser.
    groupadd -g 501 idcuser
    useradd -u 500 -g 501 idcuser
    passwd idcuser
    mkdir /home/idcuser/.ssh
    chown -R idcuser.idcuser /home/idcuser
    chmod 600 /home/idcuser/.ssh
  2. Разрешите пользователю idcuser использовать команду sudo (/etc/sudoers).
    idcuser ALL=(ALL) NOPASSWD:ALL
  3. Настройте демон sshd (/etc/ssh/sshd_config).

Я рекомендую отложить выполнение последнего шага до тех пор, пока вы не сможете получить доступ к экземпляру из-под учетной записи idcuser с использованием RSA-ключа, следующим образом:

PermitRootLogin no
PasswordAuthentication no
UsePAM no

Примечание. Если вы импортируете дистрибутив Linux, отличающийся от Red Hat или SuSE (например, Ubuntu), то необходимо найти способ конвертации конфигурации сетевых интерфейсов. Я рекомендую создать резервный IP-адрес и временно установить его для образа. Тогда вы всегда сможете подключиться к экземпляру. После того, как ваш образ загрузится в среде SmartCloud, вы сможете изменить сетевые настройки.


Сохранение образа и метаданных на устройстве постоянного хранения

В этом разделе описываются следующие действия:

  • Подготовка метаданных и их структура.
  • Отключение устройства хранения.

Подготовка метаданных и их структура

На следующем рисунке изображена структура метаданных образа SmartCloud. Файлы .ovf, .img, BSS.zip, RAM.zip и .mf являются обязательными.

Рисунок 4. Структура метаданных
Рисунок 4. Структура метаданных

Вы можете повторно использовать файл RAM.zip публичного образа, как было описано выше, но если вы понимаете назначение этих файлов, то можете изменить их.

Если вы не изменяете имена этих обязательных файлов, то нет необходимости изменять файл .ovf. Другими словами, если вы хотите присвоить файлам .img и .ovf другие имена, то вам придется изменить файл .ovf.

  1. В самом конце процесса подготовки метаданных запустите сценарий FileValidation.sh для генерации файла .mf. Файл .mf file содержит контрольные суммы каждого файла, поэтому если вы запустили сценарий FileValidation.sh, а после этого внесли какие-то изменения, то необходимо запустить этот сценарий еще раз.

    Ниже приведен пример содержимого файла BSS.xml, находящегося внутри файла BSS.zip. Подробное описание этого файла есть в руководстве Customizing Images and Software Bundles.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ns2:serviceoffering offeringtype="IMAGE" id=""
     xmlns:ns2="http://www.ibm.com/cloud/storage/xml">
        <shortdesc>CentOS 6.1 32bit test</shortdesc>
        <longdesc>CentOS 6.1 32bit test</longdesc>
        <offeringfamilyid>1003</offeringfamilyid>
        <platformVersion>1.2</platformVersion>
        <attributes>
            <os>CentOS 6.1 32bit test/6.1</os>
            <allowedsize.32>COP32,BRZ32,SLV32,GLD32</allowedsize.32>
        </attributes>
    </ns2:serviceoffering>
  2. Здесь вся хитрость заключается в теге <os>. После имени операционной системы можно добавить символ "/" и указать номер ее версии.
  3. Убедитесь, что тег <offeringfamilyid> содержит значение 1003. В противном случае вам нужно заплатить за экземпляр на основании другой ценовой таблицы. Значение тега <allowedsize.32> будет другим, если вы импортируете образ 64-разрядной ОС.
  4. Создайте файл BSS.zip, содержащий файл BSS.xml, и сохраните его в директории /data/image:
  5. Переместите ваш образ операционной системы в директорию /data/image и переименуйте его в xxxx.img, где xxxx – имя, совпадающее с именем файла xxxx.ovf.
  6. Перейдите в директорию /data/image и запустите сценарий FileValidation.sh; выберите menu 2 для повторного создания manifest-файла.

Отключение устройства хранения

Вам придется удалять экземпляр рабочего места для отключения устройства хранения до тех пор, пока у вас не появится возможность динамически отключать устройство хранения. Я настоятельно рекомендую создать частный образ экземпляра, прежде чем вы удалите его, поскольку если процесс импорта или подготовки завершится с ошибкой, то вам придется вернуться назад к этому шагу для изменения вашего образа или метаданных. Не стоит слишком надеяться на удачный исход: ваша первая попытка может окончиться неудачей по различным причинам. Прежде чем удалять экземпляр рабочего места, убедитесь в том, что вы сможете создать экземпляр из частного образа.


Импортирование образа с устройства хранения в частный образ

Выполните процедуру импорта образа с устройства хранения в частный образ SmartCloud с помощью запроса {baseURI}/offerings/image API. Запишите идентификатор образа, который будет включен в ответ на ваш запрос. Этот идентификатор понадобится при проверке статуса вашего запроса или полном удалении образа в случае возникновения ошибок. Иногда поврежденный образ не отображается в списке частных образов портала SmartCloud, тем не менее, продолжает существовать и увеличивать счетчик образов.

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

Если и последующие попытки закончатся неудачей, то вернитесь к этапу подготовки метаданных – возможно, с ними не все в порядке.


Создание экземпляра из образа

В последнем разделе мы рассмотрим подготовку экземпляра на основе вашего образа, а также некоторые вопросы, связанные с поддержкой Ubuntu.

Подготовка экземпляра на основе образа

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

После того, как ваш образ станет активным, попытайтесь получить доступ к нему из-под учетной записи idcuser. Если SSH-клиент не сможет подключиться по тайм-ауту, то, возможно, ваш экземпляр не загружен или в нем не настроен сетевой интерфейс. Вернитесь к этапу создания образа и проверьте конфигурацию модулей virtio.

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

Если образ загружен, то стоит поискать какие-либо сообщения в syslog-файлах.

Если SSH-клиент получает сообщения об ошибках аутентификации, то проблема может быть связана с настройкой RSA-ключей. У вас должна быть возможность войти в систему с учетной запись пользователя root. Проверьте разрешения для файлов в директории /home/idcuser.

После того, как вы подключились

Если, наконец, вам удалось подключиться из-под учетной записи idcuser с использованием RSA-ключа, то сохраните подключение и настройте файл sshd_config так, чтобы запретить подключения с использованием учетной записи root и настроить обязательное использование паролей (без использования PAM), после чего перезапустите демон sshd. Запустите другой сеанс и убедитесь, что у пользователя idcuser осталась возможность подключаться с помощью RSA-ключа.

Если все в порядке, то возьмите ваш частный образ первого сгенерированного экземпляра и сгенерируйте из этого образа второй экземпляр с другим IP-адресом и RSA-ключом.

Вопросы, связанные с поддержкой Ubuntu

Конфигурационный файл сетевых параметров в ОС Ubuntu отличается от конфигурационного файла в Red Hat. Механизм инициализации SmartCloud создает конфигурацию в стиле Red Hat, который не поддерживается в Ubuntu. Для преобразования конфигурации Red Hat в конфигурацию Ubuntu необходимо создать следующий initd-сценарий, запускающийся на уровнях выполнения с 3 по 5.

#!/usr/bin/perl

$INTERFACE="/etc/network/interfaces";
$NETCONFDIR="/etc/sysconfig/network-scripts/";

if ( (stat($INTERFACE))[9] > (stat($NETCONFDIR."ifcfg-eth0"))[9] ){
  exit 0;
}

system("/bin/sed -n s/HOSTNAME=//p /etc/sysconfig/network > /etc/hostname");
system("/bin/hostname `cat /etc/hostname`");

open(OUT,">$INTERFACE");
print OUT << "EOF";
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
EOF

open(TT,"ls ".$NETCONFDIR."ifcfg-eth?|");
while (<TT>){
  chop;
  $t=$n=$_;
  $n=~s/^.*\/ifcfg-//;
  open(IF,$t);
  while (<IF>){
    chop;
    if (/^IPADDR=(.*)$/){
      $addr=$1;
    } elsif (/^NETMASK=(.*)$/){
      $mask=$1;
    } elsif (/^GATEWAY=(.*)$/){
      $gw=$1;
    }
  }
  close(IF);

  @a=split(/\./,$addr);
  @m=split(/\./,$mask);

  for ($c=0; $c<4; $c++){
    $a=$a[$c]*1;
    $m=$m[$c]*1;
    $b[$c]=($a & $m) + (255 & ~ $m);
  }
  $bcast=sprintf("%d.%d.%d.%d",$b[0],$b[1],$b[2],$b[3]);

  print(OUT "iface $n inet static\n");
  print(OUT "    address $addr\n");
  print(OUT "    netmask $mask\n");
  print(OUT "    gateway $gw\n");
  print(OUT "    broadcast $bcast\n");
  print(OUT "\n");
}
close(TT);
close(OUT);

system("/etc/init.d/networking restart");
exit(0);

Заключение

Функция импорта образов IBM SmartCloud Enterprise 2.0 работает. Поддерживаются образы вариантов Linux, отличных от Red Hat или SuSE, а для создания образа вы даже можете использовать экземпляр рабочего места SmartCloud. Тем не менее, имеются определенные условия и ограничения, которые касаются формата образов и могут усложнить процедуру импорта образов операционных систем. Советы, которые приводятся в этой статье, должны помочь вам преодолеть большинство этих трудностей.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления, Linux
ArticleID=857446
ArticleTitle=Импорт операционной системы Linux в среду SmartCloud Enterprise
publish-date=02052013