Importe um Sistema Operacional Linux para o SmartCloud Enterprise

Dicas para importar de forma eficiente imagens do sistema operacional para o SmartCloud

O IBM® SmartCloud Enterprise 2.0 apresenta um recurso de importação de imagem que permite mover sua imagem do sistema operacional Linux® para a nuvem. Mas, para executar a tarefa de forma mais eficiente, este artigo fornece algumas dicas adicionais que complementam as informações fornecidas formalmente. Com base em sua própria experiência de importação bem-sucedida de versões do CentOS e Ubuntu para o IBM SmartCloud Enterprise, o autor explica como preparar sua imagem e metadados, que tipos de ferramentas são necessários, como configurar seu ambiente de trabalho e fornece algumas dicas para resolução de problemas do processo.

Tomoyuki Niijima, Executive IT Architect, Cloud Computing and Smarter Cities, IBM Japan

Tomoyuki NiijimaTomoyuki Niijima é IT Architect e projeta e implementa sistemas de TI de grande escala e supercomplexos há 20 anos. Ele é coautor de três Redbooks AIX e publicou artigos em várias revistas, incluindo a SAP Professional Journal. Ele também é bem ativo na área de software livre. Seu foco nos últimos dois anos é a computação em nuvem, em especial, como componentes complexos, incluindo sistemas operacionais, middleware, aplicativos e ferramentas operacionais, podem ser implementados e gerenciados de forma rápida, flexível e efetiva.



29/Fev/2012

O IBM SmartCloud Enterprise 2.0 apresenta um recurso de importação de imagem que permite mover a imagem do sistema operacional Linux para a nuvem. No entanto, esse recurso não oferece suporte para o Windows nem para outros sistemas operacionais UNIX, ® apenas para o sistema operacional Linux. De acordo com o guia Customizing Images and Software Bundles para o SmartCloud Enterprise, o sistema suporta apenas Red Hat ou SuSE, mas é possível importar outras imagens de sistema operacional Linux, desde que atendam às condições descritas neste artigo.

A maioria das etapas do processo de importação deve ser executada por meio de linhas de comando e APIs. É preciso ter certo conhecimento das APIs do SmartCloud, além de qualificações mínimas para instalação e customização do sistema operacional Linux.

Os guias Customizing Images and Software Bundles e REST API reference 2.0, disponíveis para usuários do SmartCloud, fornecem boas informações, mas não creio que sejam suficientes para executar a tarefa de importar um sistema operacional Linux de forma eficiente. Este artigo fornece informações complementares.

A Figura 1 fornece uma visão geral da importação da imagem para o SmartCloud Enterprise.

Figura 1. Visão geral da importação da imagem para o IBM SmartCloud Enterprise
Visão geral da importação da imagem para o IBM SmartCloud Enterprise

Vamos categorizar o conhecimento adicional importante que é necessário para executar essa tarefa em quatro áreas de tópicos gerais. Depois, vamos nos aprofundar em cada uma e fornecer algumas dicas que devem ser levadas em conta.

Quatro segredos para importar um sistema operacional Linux

As quatro etapas principais para importar um sistema operacional Linux para o SmartCloud Enterprise são:

  1. Preparar sua imagem e metadados de sistema operacional Linux. É preciso ter um hypervisor para preparar sua imagem de sistema operacional Linux. Os metadados precisam ser preparados manualmente, mas é possível reutilizá-los a partir de qualquer imagem pública disponível no SmartCloud como modelo.
  2. Armazenar a imagem e os metadados em seu armazenamento persistente. É possível gravar sua imagem e metadados criando uma instância que se conecta a um armazenamento. É possível fazer upload da sua imagem e metadados pela rede ou criá-los na instância.
  3. Importar sua imagem a partir do armazenamento como sua imagem particular. O comando POST {baseURI}/offerings/image API é explicado para suportar essa tarefa.
  4. Criar uma instância a partir da imagem. A imagem importada com sucesso aparece em sua lista de imagens, e é possível criar instâncias a partir dela como se faz com outras privadas.

As seguintes referências e componentes são recomendados antes de começar:

  • O guia Customizing Images and Software Bundles e o guia de referência REST API Reference 2.0 ou o guia de referência da ferramenta de linha de comando que escolher usar (os primeiros dois podem ser encontrados na biblioteca de documentação da guia Support do portal SmartCloud).
  • QEMU, o hypervisor e ferramenta de manipulação de imagem.
  • A imagem ISO do seu sistema operacional Linux de destino.
  • Visualizador RealVNC VNC.

Agora, vamos dar uma olhada mais de perto em cada uma das quatro etapas. Cada seção contém dicas.


Preparar sua imagem e metadados de sistema operacional Linux

Esta seção descreve as seguintes etapas:

  • Preparar o modelo de metadados.
  • Preparar a instância de ambiente de trabalho.
  • Instalar o QEMU.
  • Configurar o servidor VNC.
  • Preparar a imagem do sistema operacional.
  • Instalar o sistema operacional usando o QEMU.
  • Configuração mínima da imagem de sistema operacional.

Preparar um modelo de metadados

A maneira mais fácil de preparar o conjunto de metadados que é preciso importar para sua imagem é reutilizar um a partir de uma imagem pública. Se estiver importando SuSE ou seu clone, reutilize os metadados a partir de uma imagem SuSE pública. Se seu destino for Red Hat ou um clone dele, como CentOS, aproveite os metadados da imagem Red Hat pública.

  1. Visto que uma imagem pública está protegida contra cópias, é preciso criar uma instância da imagem pública que deseja reutilizar. Certifique-se de criar uma instância de cobre da mesma arquitetura de processador — por exemplo, de uma imagem de 32 ou 64 bits— como seu sistema operacional de destino.
  2. Depois que uma instância da imagem pública estiver pronta, salve sua imagem privada a partir da instância. Agora, é possível configurar o sinalizador CopyAllowed = Y na imagem privada a partir da tela de catálogo de ativos do portal SmartCloud.
  3. O link para o catálogo de ativos se encontra na linha de cabeçalho da guia Control panel do portal SmartCloud. Clique no link e abra a guia My Dashboard . Deve aparecer a lista de seus ativos de imagem privada.
  4. Clique no ícone de lápis da imagem que acabou de salvar e no link continue... . Um sinalizador Copy Allowed aparece na parte inferior da tela.
  5. Altere-o para Y e clique no botão Update .
  6. Crie um armazenamento persistente no formato ext3. São suficientes 60 GB.
  7. Copie a imagem privada para o armazenamento persistente usando PUT {baseURI}/storage/{storage id} API.

Preparar a instância do ambiente de trabalho

A Figura 2 descreve como preparar a instância do ambiente de trabalho.

Figura 2. Preparar a imagem e os metadados do sistema operacional em uma instância de ambiente de trabalho do SmartCloud
Preparar a imagem e os metadados do sistema operacional em uma instância de ambiente de trabalho do SmartCloud

Após a cópia ser concluída, crie outra instância anexando o armazenamento. Essa é a instância do ambiente de trabalho. O Red Hat 6.0 de 64 bits é recomendado, mas é possível usar qualquer sistema operacional Linux. Suponhamos que /data seja o ponto de montagem do armazenamento na descrição a seguir.

Aparecerá um conjunto de arquivos de imagem e de metadados similar a este:

$ 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

O nome base dos arquivos .img, .mf e .ovf é diferente em cada imagem. É possível reutilizar os arquivos RAM.zip, Terms.zip e .ovf como estão. Os outros arquivos podem ser excluídos.

Instalar o QEMU

Faça o download do tarball de origem do QEMU do site do QEMU, configure-o e instale-o:

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

Convém incluir /usr/local/bin em sua variável de ambiente PATH , visto que a instrução anterior instala um conjunto de ferramentas QEMU no diretório.

Configurar o servidor VNC

O QEMU abre um console virtual em seu próprio servidor VNC. É preciso abrir uma conexão VNC com o XWindow da instância que usa o cliente VNC em seu PC e iniciar outro cliente VNC no XWindow para se conectar à porta VNC do QEMU.

Preparar a imagem do sistema operacional

Uma imagem de sistema operacional é um arquivo binário que contém uma imagem da unidade de disco rígido do sistema operacional Linux instalado. Também é chamada de disco virtual porque pode ser acionada por um hypervisor como unidade de disco rígido. A forma mais fácil de criar uma imagem de sistema operacional é instalar um sistema operacional em um disco virtual usando um hypervisor e um arquivo ISO de um CD/DVD de instalação de sistema operacional.

Instalar seu sistema operacional usando o QEMU

Convém executar esta etapa em uma sessão do VNC porque é preciso iniciar o cliente VNC no XWindows para abrir o console do QEMU como descrito antes. É possível usar o RealVNC Viewer para se conectar ao XWindows a partir do seu PC.

  1. Crie um arquivo de imagem vazio em formato bruto:
    qemu-img create -f raw hdd.img 60G
  2. Inicie o hypervisor com o arquivo de imagem e o arquivo ISO:
    qemu-system-i386 -m 1G -hda hdd.img -cdrom installer_image.iso -boot d
  3. Se estiver instalando um sistema operacional de 64 bits, execute qemu-system-x86_64 em vez disso. Para aumentar a memória virtual, mude o valor após o sinalizador -m .
  4. É preciso usar um cliente VNC no XWindow da instância de ambiente de trabalho para visualizar o console do QEMU. O visualizador TigarVNC está disponível em RHEL6, no submenu Applications > Internet para essa finalidade. Execute o visualizador TigarVNC e especifique >localhost como servidor VNC para se conectar ao console do QEMU.
    Figura 3. Visualizando uma instalação de sistema operacional convidado via VNC em uma instância do SmartCloud
    Visualizando uma instalação de sistema operacional convidado via VNC em uma instância do SmartCloud
  5. Pode levar bastante tempo para executar o instalador do sistema operacional no QEMU se não estiver disponível um acelerador de teclado/vídeo/mouse na instância do SmartCloud. É possível executar essa etapa no PC local, mas será preciso transferir um arquivo de 10 GB pela Internet toda vez que for feita qualquer mudança na imagem até finalmente concluir a tarefa.

Após o instalador iniciar, siga as instruções de instalação para seu sistema operacional de destino, mas certifique-se de que as seguintes condições sejam atendidas:

  • Não é possível usar LVM; um instalador recente do sistema operacional Linux usa LVM por padrão. Selecione a instalação customizada e evite usar LVM.
  • São permitidos apenas /boot e /partition. Ambos devem estar na partição primária e em formato ext3. Novamente, é preciso especificar explicitamente esses parâmetros no menu de instalação customizada.
  • Sem troca. Convém aumentar o tamanho da memória virtual quando o instalador travar por falta de memória suficiente. É possível usar em vez disso um instalador de texto para diminuir o requisito de memória do instalador, mas alguns instaladores de texto não fornecem um menu de instalação customizada que é necessário para suportar as duas primeiras condições.

Após a instalação bem-sucedida do seu sistema operacional de destino no arquivo de imagem, reinicialize e efetue login para verificar se o ambiente suporta virtio como usuário raiz. Os seguintes dois comandos verificam se há módulos de kernel virtio em /lib/modules e a imagem de disco virtual inicial:

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

Se não houver virtio_pci ou virtio_blk nos resultados do código anterior, será preciso instalar o módulo do kernel virtio e/ou recriar a imagem do disco virtual. Caso contrário, sua imagem pode ser importada, mas não vai inicializar.

Configuração mínima de uma imagem de sistema operacional

A seguinte é a configuração mínima para uma imagem de sistema operacional antes da importação.

  1. Crie 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. Ative o idcuser sudo(/etc/sudoers).
    idcuser ALL=(ALL) NOPASSWD:ALL
  3. Configure sshd (/etc/ssh/sshd_config).

Recomendo adiar essa última etapa até obter acesso à instância como idcuser usando uma chave RSA, como esta:

PermitRootLogin no
PasswordAuthentication no
UsePAM no

Observação: Se estiver sendo importado um sistema operacional Linux diferente do Red Hat ou de um clone do SuSE, algo como o Ubuntu, é preciso ter uma maneira de converter a configuração de interface de rede. Recomendo, por ora, a criação de um IP reservado e a configuração do endereço IP na imagem. Isso permite conectar-se à instância. É possível customizar sua imagem após ela inicializar no SmartCloud.


Armazenar a imagem e os metadados em seu armazenamento persistente

Esta seção descreve o seguinte:

  • Preparação e estrutura de metadados.
  • Desconectando o armazenamento.

Preparação e estrutura de metadados

A figura a seguir mostra a estrutura de metadados de uma imagem no SmartCloud. Os arquivos obrigatórios são .ovf, .img, BSS.zip, RAM.zip e .mf.

Figura 4. Estrutura de metadados
Estrutura de metadados

Reutilize RAM.zip de uma imagem pública do SmartCloud conforme descrito anteriormente, mas é possível analisar os arquivos e modificá-los se tiver certeza do que está fazendo.

Não é preciso modificar os arquivos .ovf, desde que sejam mantidos os nomes desses arquivos obrigatórios. Em outras palavras, se quiser usar outro nome para os arquivos .img e .ovf, é preciso reconectar o arquivo .ovf.

  1. Execute a ferramenta FileValidation.sh no fim da tarefa de preparação de metadados para gerar o arquivo .mf. Visto que o arquivo .mf contém uma soma de verificação de cada arquivo, é preciso executar novamente a ferramenta para gerar outro arquivo .mf se tiver sido feita alguma mudança após ele ter sido criado.

    Este é um exemplo de BSS.xml em um BSS.zip. Consulte o guia Customizing Images and Software Bundles para obter uma descrição detalhada do arquivo.

    <?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. O truque aqui é a tag <os> . É possível especificar o número da versão do sistema operacional separado por "/" após o nome do sistema operacional.
  3. Certifique-se de que o valor de <offeringfamilyid> seja 1003. Caso contrário, a cobrança por sua instância ocorrerá com base em uma tabela de preços diferente. O valor da tag <allowedsize.32> é diferente ao importar a imagem de um sistema operacional de 64 bits.
  4. Crie um arquivo BSS.zip para incluir BSS.xml e armazene-o em /data/image:
    zip /data/image/BSS.zip BSS.xml
  5. Transfira sua imagem de sistema operacional para /data/image e a renomeie como xxxx.img em que xxxx é o mesmo nome base de xxxx.ovf.
  6. Acesse o diretório /data/image e execute FileValidation.sh. Selecione menu 2 para recriar o arquivo de manifesto.

Desconectar o armazenamento

É preciso excluir sua instância de ambiente de trabalho para desconectar o armazenamento até surgir um recurso que permita desconectar dinamicamente o armazenamento. Recomendo fortemente tirar uma imagem privada da instância antes de excluí-la, porque é preciso voltar a esse ponto para modificar sua imagem ou metadados se sua importação ou fornecimento falhar. Não é bom ser otimista demais: sua primeira tentativa provavelmente falhará por vários motivos. Certifique-se de criar uma instância a partir da imagem privada antes de excluir a instância do ambiente de trabalho.


Importar sua imagem a partir do armazenamento como sua imagem privada

Importe sua imagem a partir do armazenamento para uma imagem privada no SmartCloud usando POST {baseURI}/offerings/image API. Anote o ID da imagem que é incluído na resposta à sua solicitação. Ele será necessário ao verificar o status da sua solicitação ou excluir sua entrada de imagem quando ela falhar. Às vezes, ele não se encontra em sua lista de imagens privadas no portal na nuvem, mas existe e consumirá a contagem da sua imagem.

A primeira tentativa provavelmente falhará. Não pergunte por que, mas não é preciso se preocupar. Respire fundo, cruze os dedos e repita tudo antes de desistir.

Volte para a etapa de preparação de metadados em caso de falha; provavelmente há algo errado com seus metadados.


Criar uma instância a partir da imagem

Esta última seção trata do fornecimento da instância a partir da sua imagem e inclui algumas questões de suporte do Ubuntu.

Fornecimento da sua instância a partir da sua imagem

É possível criar sua instância a partir da sua imagem no portal. Se a criação da instância falhou, volte à etapa de criação da imagem para confirmar se todas as condições são atendidas. Uma falha nesse estágio em geral resulta de um formato de arquivo de imagem incorreto.

Tente obter acesso como idcuser depois que sua imagem estiver ativa. Se seu cliente SSH atingir o tempo limite, sua instância talvez não inicialize ou não configure a interface de rede. Volte para a etapa de criação de imagem e verifique a configuração virtio .

É bom tentar descobrir o que aconteceu dentro da instância. Tire sua imagem privada da instância e copie-a no armazenamento, execute-a com QEMU e verifique-a.

Se ela inicializar, deverá haver alguns registros no arquivo syslog.

Se o seu cliente SSH receber uma mensagem de falha de autenticação, pode ser um problema de configuração da chave RSA. Talvez seja possível efetuar login como raiz. Verifique a permissão dos arquivos em /home/idcuser.

Depois de entrar

Se finalmente efetuar login como idcuser usando a chave RSA, mantenha a conexão e configure o arquivo sshd_config para não permitir acesso do root, uso de senha ou uso de PAM, e depois reinicie o sshd. Certifique-se de ainda ser capaz de efetuar login como idcuser com a chave RSA de outra sessão.

Se tudo parecer certo, pegue sua imagem privada da instância de primeira geração e crie uma instância de segunda geração a partir da imagem com um endereço IP diferente e uma chave RSA.

Questões de suporte do Ubuntu

O arquivo de configuração de rede do sistema operacional Ubuntu é bem diferente daquele no Red Hat. O mecanismo de fornecimento do SmartCloud configurará um arquivo de configuração em estilo Red Hat que o Ubuntu não suporta. É preciso implementar o seguinte script initd para os níveis de execução 3 a 5, para converter o arquivo de configuração em estilo Red Hat para um em estilo Ubuntu.

#!/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);

Em conclusão

O recurso de importação de imagem do IBM SmartCloud Enterprise 2.0 funciona. Ele suporta imagens do sistema operacional Linux que não sejam Red Hat ou SuSE, e é possível até ter uma instância de ambiente de trabalho no SmartCloud para criar sua imagem. Mas há condições e restrições quanto ao formato da imagem que tornam a importação dessas imagens de sistema operacional um pouco mais difíceis do que tarefas de principiantes; o conselho fornecido no presente artigo deve ajudá-lo a superar a maioria desses obstáculos.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Cloud computing, Linux
ArticleID=799357
ArticleTitle=Importe um Sistema Operacional Linux para o SmartCloud Enterprise
publish-date=02292012