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
- 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.
- Se o arquivo de imagem for carregado de um PC Linux, execute o comando scp.
- 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.
Tabela 1 Pacotes de ferramentas Pacotes de ferramentas
Como Obter
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
- Use qemu-img-hw para converter o formato da imagem.
- Vá para o diretório onde qemu-img-hw está armazenado, por exemplo, /usr/qemu-img-hw.
cd /usr/qemu-img-hw
- Execute o seguinte comando para tornar qemu-img-hw executável:
chmod +x qemu-img-hw
- 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
- Vá para o diretório onde qemu-img-hw está armazenado, por exemplo, /usr/qemu-img-hw.
- Use CreateMF.jar para gerar um arquivo bitmap.
- 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.
- Execute o seguinte comando para entrar no diretório em que CreateMF.jar está armazenado:
cd /usr/createMF
- 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.
- Verifique se o JDK foi instalado no ECS.
- Use s3cmd para fazer upload do(s) arquivo(s) em um bucket do OBS.
- Instale s3cmd no ECS.
Se s3cmd tiver sido instalado, pule este passo.
- Execute o seguinte comando para instalar o setuptools:
- Execute o seguinte comando para instalar o wget:
- 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
- Execute os seguintes comandos para instalar s3cmd:
unzip s3cmd-master.zip
cd s3cmd-master
python setup.py install
- 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.
- 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.
- Instale s3cmd no ECS.
- 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.
- Acesse o console do IMS.
- Acesse o console de gerenciamento.
- Em Compute, clique em Image Management Service.
O console do IMS é exibido.
- No canto superior direito, clique em Create Image.
- Na área Image Type and Source, selecione System disk image ou Data disk image para Type.
- 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.
- Selecione Enable Fast Create, e selecione a frase a seguir Image File Preparation.
Figura 1 Importando rapidamente um arquivo de imagem
- 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.
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.
- Acesse o console do IMS.
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.