Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2022-11-16 GMT+08:00

Importando rapidamente um arquivo de imagem (Linux)

Cenários

Esta seção descreve como converter o formato de um arquivo de imagem em um servidor Linux e, em seguida, importá-lo rapidamente para a plataforma de nuvem. É aconselhável usar um EulerOS ECS para converter formatos de arquivo de imagem e gerar arquivos bitmap.

No Linux, é aconselhável usar qemu-img-hw para converter formatos de imagem.

Pré-requisitos

  • O arquivo de imagem foi otimizado. Para obter detalhes, consulte Processo de otimização (Windows) ou Processo de otimização (Linux). Verifique se o arquivo de imagem atende aos requisitos em Tabela 1 (Windows) ou Tabela 1 (Linux).

    Selecione o conteúdo de referência com base no tipo de SO no arquivo de imagem.

  • Você criou um ECS executando o EulerOS no console de gerenciamento e vinculou um EIP ao ECS.
  • Um bucket do OBS foi criado no console de gerenciamento.

Procedimento

  1. Carregue um arquivo de imagem.

    • Se o arquivo de imagem for carregado de um PC Linux, execute o comando scp.

      Por exemplo, para carregar image01.qcow2 no diretório /usr/ do ECS, execute o seguinte comando:

      scp /var/image01.qcow2 root@xxx.xxx.xx.xxx:/usr/

      xxx.xxx.xx.xxx indica o EIP vinculado ao ECS.

    • Se o arquivo de imagem for carregado de um PC com Windows, use uma ferramenta de transferência de arquivos, como o WinSCP, para carregar o arquivo de imagem.

  2. Obtenha a ferramenta de conversão de imagens (qemu-img-hw.zip) e a ferramenta de geração de arquivos bitmap (createMF.zip), carregue-as no ECS e descompacte os pacotes.

  3. Use qemu-img-hw para converter o formato da imagem.

    1. Vá para o diretório onde qemu-img-hw está armazenado, por exemplo, /usr/qemu-img-hw.

      cd /usr/qemu-img-hw

    2. Execute o seguinte comando para tornar qemu-img-hw executável:

      chmod +x qemu-img-hw

    3. Execute qemu-img-hw para converter o formato do arquivo de imagem para ZVHD2 (recomendado) ou RAW.

      Formato do comando:

      ./qemu-img-hw convert -p -O Formato_imagem_alvo Arquivo_imagem_fonte Arquivo_imagem_alvo

      Por exemplo, execute o seguinte comando para converter um arquivo image01.qcow2 para um arquivo image01.zvhd2:

      ./qemu-img-hw convert -p -O zvhd2 image01.qcow2 image01.zvhd2

      • Se o arquivo de imagem for convertido para o formato ZVHD2, vá para 5.
      • Se o arquivo de imagem for convertido para o formato RAW, vá para 4.

  4. Use CreateMF.jar para gerar um arquivo bitmap.

    1. Verifique se o JDK foi instalado no ECS.

      Execute os seguintes comandos para verificar se o JDK está instalado:

      source /etc/profile

      java -version

      Se uma versão do Java for exibida, o JDK foi instalado.

    2. Execute o seguinte comando para entrar no diretório em que CreateMF.jar está armazenado:

      cd /usr/createMF

    3. Execute o seguinte comando para gerar um arquivo bitmap:

      java -jar CreateMF.jar /Original RAW file path/Generated .mf file path

      Exemplo:

      java -jar CreateMF.jar image01.raw image01.mf

      O arquivo bitmap gerado.mf deve ter o mesmo nome que o arquivo de imagem RAW. Por exemplo, se o nome do arquivo de imagem for image01.raw, o nome de bitmap gerado é image01.mf.

  5. Use s3cmd para fazer upload do(s) arquivo(s) em um bucket do OBS.

    1. Instale s3cmd no ECS.

      Se s3cmd tiver sido instalado, pule este passo.

      1. Execute o seguinte comando para instalar o setuptools:

        yum install python-setuptools

      2. Execute o seguinte comando para instalar o wget:

        yum install wget

      3. Execute os seguintes comandos para obter o pacote de software s75pxd:

        wget https://github.com/s3tools/s3cmd/archive/master.zip

        mv master.zip s3cmd-master.zip

      4. Execute os seguintes comandos para instalar s3cmd:

        unzip s3cmd-master.zip

        cd s3cmd-master

        python setup.py install

    2. Configure s3cmd.

      Execute o seguinte comando para configurar s3cmd:

      s3cmd --configure
      Access Key: Enter an AK.
      Secret Key: Enter an SK.
      Default Region: Enter the region where the bucket is located.
      S3 Endpoint: Refer to the OBS endpoint.
      DNS-style bucket+hostname:port template for accessing a bucket: Enter a server address with a bucket name, for example, mybucket.obs.myclouds.com.
      Encryption password: Press Enter.
      Path to GPG program: Press Enter.
      Use HTTPS protocol: Specifies whether to use HTTPS. The value can be Yes or No.
      HTTP Proxy server name: Specifies the proxy address used to connect the cloud from an external network. (If you do not need it, press Enter.)
      HTTP Proxy server port: Specifies the proxy port used to connect to the cloud from an external network (If you do not need it, press Enter.)
      Test access with supplied credentials? y
      (If "Success. Your access key and secret key worked fine :-)" is displayed, the connection is successful.)
      Save settings? y (Specifies whether to save the configurations. If you enter y, the configuration will be saved.)

      As configurações serão armazenadas em /root/.s3cfg. Se você quiser modificar essas configurações, execute o comando s3cmd --configure para configurar os parâmetros ou execute o comando vi .s3cfg para editar o arquivo .s3cfg.

    3. Execute o comando a seguir para carregar o arquivo de imagem ZVHD2 (ou o arquivo de imagem RAW e seu arquivo bitmap) em um bucket do OBS.

      s3cmd put image01.zvhd2 s3://mybucket/

      O arquivo .mf bitmap deve estar no mesmo intervalo do OBS que o arquivo de imagem RAW.

  6. Registre uma imagem privada.

    Você pode registrar uma imagem privada usando o arquivo ZVHD2 ou RAW convertido no console ou usando uma API.

    Método 1: Registre uma imagem privada no console.

    1. Acesse o console do IMS.
      1. Acesse o console de gerenciamento.
      2. Em Compute, clique em Image Management Service.

        O console do IMS é exibido.

    2. No canto superior direito, clique em Create Image.
    3. Na área Image Type and Source, selecione System disk image ou Data disk image para Type.
    4. Selecione Image File para Source. Selecione o bucket que armazena o arquivo de imagem ZVHD2 ou RAW e, em seguida, selecione o arquivo de imagem. Se o arquivo de imagem estiver no formato RAW, você também precisará selecionar seu arquivo bitmap.
    5. Selecione Enable Fast Create, e selecione a frase a seguir Image File Preparation.
      Figura 1 Importando rapidamente um arquivo de imagem
    6. Defina os parâmetros conforme solicitado.

      Para obter detalhes sobre os parâmetros, consulte Registrando um arquivo de imagem externo como uma imagem privada e Registrando um arquivo de imagem como uma imagem privada.

      • O SO deve ser o mesmo do arquivo de imagem.
      • O tamanho do disco do sistema deve ser maior que o especificado no arquivo de imagem.

        Execute o seguinte comando para verificar o tamanho do disco do sistema no arquivo de imagem:

        qemu-img-hw info test.zvhd2

    Método 2: Registre uma imagem privada usando uma API.

    Você pode usar a API POST /v2/cloudimages/quickimport/action para importar rapidamente um arquivo de imagem.

    Para obter detalhes sobre como chamar essa API, consulte Importando um arquivo de imagem rapidamente.

Apêndice 1: Comandos comuns do qemu-img-hw

  • Convertendo formatos de arquivo de imagem: qemu-img-hw convert -p -O Formato_imagem_alvo Arquivo_imagem_fonte Arquivo_imagem_alvo

    Os parâmetros são descritos como segue:

    -p: indica o progresso da conversão.

    A parte que segue -O (que deve estar em maiúsculas) consiste no formato de imagem de destino, arquivo de imagem de origem e arquivo de imagem de destino.

    Por exemplo, execute o seguinte comando para converter um arquivo de imagem QCOW2 em um arquivo ZVHD2:

    qemu-img-hw convert -p -O zvhd2 test.qcow2 test.zvhd2

  • Consultando informações do arquivo de imagem: qemu-img-hw info Arquivo de imagem de origem

    Um exemplo de comando é qemu-img-hw info test.zvhd2.

  • Exibindo informações de ajuda: qemu-img-hw –help

Apêndice 2: Erros comuns durante a execução do qemu-img-hw

  • Sintoma:
    As seguintes informações são exibidas quando você executa o comando qemu-img-hw:
    ./qemu-img-hw: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./qemu-img-hw)

    Solução:

    Execute o comando strings /lib64/libc.so.6 | grep glibc para verificar a versão da glibc. Se a versão for muito cedo, instale a versão mais recente. Execute os seguintes comandos em sequência:

    wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz

    wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz

    tar -xvf glibc-2.15.tar.gz

    tar -xvf glibc-ports-2.15.tar.gz

    mv glibc-ports-2.15 glibc-2.15/ports

    mkdir glibc-build-2.15

    cd glibc-build-2.15

    ../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

    Se configure: error: no acceptable C compiler found in $PATH for exibido, execute o comando yum -y install gcc.

    make

    make install

  • Sintoma:

    As seguintes informações são exibidas quando você executa o comando qemu-img-hw:

    ./qemu-img-hw: error while loading shared libraries: libaio.so.1: cannot open shared object file: Nenhum arquivo ou diretório

    Solução: Execute o comando yum install libaio primeiro.