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
- 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.
- Si el archivo de imagen se carga desde un PC con Linux, ejecute el comando scp.
- 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.
Tabla 1 Paquetes de herramientas Paquete de herramientas
Cómo obtener
qemu-img-hw.zip
https://cn-south-1-cloud-reset-pwd.obs.cn-south-1.myhuaweicloud.com/imageImportTools/qemu-img-hw.zip
createMF.zip
https://cn-south-1-cloud-reset-pwd.obs.cn-south-1.myhuaweicloud.com/imageImportTools/createMF.zip
- Utilice qemu-img-hw para convertir el formato de imagen.
- Vaya al directorio donde se almacena qemu-img-hw, por ejemplo, /usr/qemu-img-hw.
cd /usr/qemu-img-hw
- Ejecute el siguiente comando para hacer qemu-img-hw ejecutable:
chmod +x qemu-img-hw
- 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
- Vaya al directorio donde se almacena qemu-img-hw, por ejemplo, /usr/qemu-img-hw.
- Utilice CreateMF.jar para generar un archivo de bitmap.
- 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.
- Ejecute el siguiente comando para ingresar el directorio donde se almacena CreateMF.jar:
cd /usr/createMF
- 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.
- Asegúrese de que se ha instalado JDK en el ECS.
- Usa s3cmd para subir el archivo (s) a un bucket OBS.
- Instale s3cmd en el ECS.
Si se ha instalado s3cmd, omita este paso.
- Ejecute el siguiente comando para instalar setuptools:
- Ejecute el siguiente comando para instalar wget:
- 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
- Ejecute los siguientes comandos para instalar s3cmd:
unzip s3cmd-master.zip
cd s3cmd-master
python setup.py install
- 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.
- 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.
- Instale s3cmd en el ECS.
- 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.
- Acceda a la consola IMS.
- Inicie sesión en la consola de gestión.
- En Compute, haga clic en Image Management Service.
Se muestra la consola IMS.
- En la esquina superior derecha, haga clic en Create Image.
- En el área Image Type and Source, seleccione System disk image o Data disk image para Type.
- 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.
- Seleccione Enable Fast Create y seleccione la frase siguiente Image File Preparation.
Figura 1 Importación rápida de un archivo de imagen
- 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.
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.
- Acceda a la consola IMS.
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.