Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-10-09 GMT+08:00

Importación rápida de un archivo de imagen (Linux)

Escenarios

Esta sección describe cómo convertir el formato de un archivo de imagen en un servidor Linux y luego importarlo rápidamente a la plataforma en la nube. Se recomienda utilizar un ECS de EulerOS para convertir formatos de archivo de imagen y generar archivos de bitmap.

En Linux, se recomienda usar qemu-img-hw para convertir formatos de imagen.

Prerrequisitos

  • El archivo de imagen ha sido optimizado. Para obtener más información, consulte Proceso de Optimización (Windows) o Proceso de Optimización (Linux). Asegúrese de que el archivo de imagen cumple los requisitos en Tabla 1(Windows) o Tabla 1(Linux).

    Seleccione el contenido de referencia basado en el tipo de sistema operativo en el archivo de imagen.

  • Ha creado un ECS que ejecuta EulerOS en la consola de gestión y ha vinculado un EIP al ECS.
  • Se ha creado un bucket OBS en la consola de gestión.

Procedimiento

  1. Sube un archivo de imagen.

    • Si el archivo de imagen se carga desde un PC con Linux, ejecute el comando scp.

      Por ejemplo, para cargar image01.qcow2 en el directorio /usr/ del ECS, ejecute el siguiente comando:

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

      xxx.xxx.xxx.xxx indica el EIP vinculado con el ECS.

    • Si el archivo de imagen se carga desde un PC con Windows, utilice una herramienta de transferencia de archivos, como WinSCP, para cargar el archivo de imagen.

  2. Obtenga la herramienta de conversión de imágenes (qemu-img-hw.zip) y la herramienta de generación de archivos de bitmap (createMF.zip), súbalos al ECS y descomprima los paquetes.

  3. Utilice qemu-img-hw para convertir el formato de imagen.

    1. Vaya al directorio donde se almacena qemu-img-hw, por ejemplo, /usr/qemu-img-hw.

      cd /usr/qemu-img-hw

    2. Ejecute el siguiente comando para hacer qemu-img-hw ejecutable:

      chmod +x qemu-img-hw

    3. Ejecute qemu-img-hw para convertir el formato de archivo de imagen a ZVHD2 (recomendado) o RAW.

      Formatos de los comandos:

      ./qemu-img-hw convert -p -O Target_image_format Source_image_file Target_image_file

      Por ejemplo, ejecute el siguiente comando para convertir un archivo image01.qcow2 en un archivo image01.zvhd2:

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

      • Si el archivo de imagen se convierte al formato ZVHD2, vaya a5.
      • Si el archivo de imagen se convierte al formato RAW, vaya a 4.

  4. Utilice CreateMF.jar para generar un archivo de bitmap.

    1. Asegúrese de que se ha instalado JDK en el ECS.

      Ejecute los siguientes comandos para comprobar si JDK está instalado:

      source /etc/profile

      java -version

      Si se muestra una versión de Java, se ha instalado JDK.

    2. Ejecute el siguiente comando para ingresar el directorio donde se almacena CreateMF.jar:

      cd /usr/createMF

    3. Ejecute el siguiente comando para generar un archivo de bitmap:

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

      Ejemplo:

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

      El archivo de bitmap generado .mf debe tener el mismo nombre que el archivo de imagen RAW. Por ejemplo, si el nombre del archivo de imagen es image01.raw, el nombre de mapa de bits generado es image01.mf.

  5. Usa s3cmd para subir el archivo (s) a un bucket OBS.

    1. Instale s3cmd en el ECS.

      Si se ha instalado s3cmd, omita este paso.

      1. Ejecute el siguiente comando para instalar setuptools:

        yum install python-setuptools

      2. Ejecute el siguiente comando para instalar wget:

        yum install wget

      3. Ejecute los siguientes comandos para obtener el paquete de software s75pxd:

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

        mv master.zip s3cmd-master.zip

      4. Ejecute los siguientes comandos para instalar s3cmd:

        unzip s3cmd-master.zip

        cd s3cmd-master

        python setup.py install

    2. Configurar s3cmd.

      Ejecute el siguiente 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.)

      Las configuraciones se almacenarán en /root/.s3cfg. Si desea modificar estas configuraciones, ejecute el comando s3cmd --configure para configurar los parámetros o ejecute el comando vi.s3cfg para editar el archivo.s3cfg.

    3. Ejecute el siguiente comando para cargar el archivo de imagen ZVHD2 (o el archivo de imagen RAW y su archivo de mapa de bits) en un bucket OBS.

      s3cmd put image01.zvhd2 s3://mybucket/

      El archivo de .mf bitmap debe estar en el mismo bucket de OBS que el archivo de imagen RAW.

  6. Registre una imagen privada.

    Puede registrar una imagen privada usando el archivo convertido ZVHD2 o RAW en la consola o usando una API.

    Método 1: Registre una imagen privada en la consola.

    1. Acceda a la consola IMS.
      1. Inicie sesión en la consola de gestión.
      2. En Compute, haga clic en Image Management Service.

        Se muestra la consola IMS.

    2. En la esquina superior derecha, haga clic en Create Image.
    3. En el área Image Type and Source, seleccione System disk image o Data disk image para Type.
    4. Seleccione Image File para Source. Seleccione el bucket que almacena el archivo de imagen ZVHD2 o RAW y, a continuación, seleccione el archivo de imagen. Si el archivo de imagen está en formato RAW, también debe seleccionar su archivo de bitmap.
    5. Seleccione Enable Fast Create y seleccione la frase siguiente Image File Preparation.
      Figura 1 Importación rápida de un archivo de imagen
    6. Configure los parámetros según se indique.

      Para obtener más información sobre los parámetros, consulte Registro de un archivo de imagen externo como imagen privadayRegistro de un archivo de imagen externo como imagen privada.

      • El sistema operativo debe ser el mismo que en el archivo de imagen.
      • El tamaño del disco del sistema debe ser mayor que el especificado en el archivo de imagen.

        Ejecute el siguiente comando para comprobar el tamaño del disco del sistema en el archivo de imagen:

        qemu-img-hw info test.zvhd2

    Método 2: Registra una imagen privada usando una API.

    Puede utilizar la API POST /v2/cloudimages/quickimport/action para importar rápidamente un archivo de imagen.

    Para obtener más información sobre cómo llamar a esta API, consulta Importar un archivo de imagen rápidamente.

Apéndice 1: Comandos comunes qemu-img-hw

  • Conversión de formatos de archivo de imagen: qemu-img-hw convert -p -O Target_image_format Source_image__file Target_image_file

    Los parámetros se describen a continuación:

    -p: indica el progreso de la conversión.

    La parte siguiente -O (que debe estar en mayúsculas) consiste en el formato de imagen de destino, el archivo de imagen de origen y el archivo de imagen de destino.

    Por ejemplo, ejecute el siguiente comando para convertir un archivo de imagen QCOW2 en un archivo ZVHD2:

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

  • Consultar información del archivo de imagen: qemu-img-hw info Source image file

    Un comando de ejemplo es qemu-img-hw info test.zvhd2.

  • Consultar información de ayuda: qemu-img-hw –help

Apéndice 2: Errores comunes durante la ejecución de qemu-img-hw

  • Síntoma:
    La siguiente información se muestra cuando ejecuta el comando qemu-img-hw:
    ./qemu-img-hw: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./qemu-img-hw)

    Solución:

    Ejecute el comando strings /lib64/libc.so.6 | grep glibc para comprobar la versión de glibc. Si la versión es demasiado temprana, instale la versión más reciente. Ejecute los siguientes comandos en secuencia:

    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

    Si se muestra configure: error: no acceptable C compiler found in $PATH, ejecute el comando yum -y install gcc.

    make

    make install

  • Síntoma:

    La siguiente información se muestra cuando ejecuta el comando qemu-img-hw:

    ./qemu-img-hw: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

    Solución: Ejecute primero el comando yum install libaio.