Облачная платформаAdvanced

Быстрый импорт образа файла в Linux

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Сценарии

В этом разделе описывается, как преобразовать формат большого образа файла на сервере Linux, а затем быстро импортировать его в облачную платформу. Рекомендуется использовать EulerOS ECS для преобразования форматов образов и создания bitmap‑файлов.

В Linux рекомендуется использовать qemu-img-hw для преобразования форматов образов.

Предварительные условия

  • Образ файла был первоначально настроен в соответствии с инструкциями в Table 2 на основе ОС в образе файла.
  • Вы создали ECS с EulerOS в консоли управления и привязали к ECS EIP.
  • В консоли управления был создан OBS bucket.

Процедура

  1. Загрузите образ файла.

    • Если образ файла загружается с Linux‑ПК, выполните команду scp.

      Например, чтобы загрузить image01.qcow2 в каталог /usr/ ECS, выполните следующую команду:

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

      xxx.xxx.xx.xxx указывает на EIP, привязанный к ECS.

    • Если образ файла загружается с Windows‑ПК, используйте инструмент передачи файлов, например WinSCP, для загрузки образа файла.

  2. Получите инструмент преобразования образов (qemu-img-hw.zip) и инструмент создания bitmap‑файлов (createMF.zip), загрузите их в ECS и распакуйте пакеты.

    Таблица 1 Пакеты инструментов

    Пакет инструмента

    Как получить

    qemu-img-hw.zip

    https://ecs-instance-driver.obs.ru-moscow-1.hc.sbercloud.ru/qemu-img-hw.zip

    createMF.zip

    https://ecs-instance-driver.obs.ru-moscow-1.hc.sbercloud.ru/createMF.zip

  3. Используйте qemu-img-hw для преобразования формата образа.

    1. Перейдите в каталог, где хранится qemu-img-hw, например, /usr/qemu-img-hw.

      cd /usr/qemu-img-hw

    2. Выполните следующую команду, чтобы сделать qemu-img-hw исполняемым:

      chmod +x qemu-img-hw

    3. Запустите qemu-img-hw для преобразования формата образа в ZVHD2 (рекомендовано) или RAW.

      Формат команды:

      ./qemu-img-hw convert -p -O {target-image-format} {source-image-file} {target-image-file}

      Например, выполните следующую команду, чтобы преобразовать файл image01.qcow2 в файл image01.zvhd2:

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

      • Если файл образа преобразован в формат ZVHD2, перейдите к 5.
      • Если файл образа преобразован в формат RAW, перейдите к 4.

  4. Используйте CreateMF.jar для создания bitmap‑файла.

    1. Убедитесь, что JDK установлен на ECS.

      Выполните следующие команды, чтобы проверить, установлен ли JDK:

      source /etc/profile

      java -version

      Если отображается версия Java, JDK установлен.

    2. Выполните следующую команду, чтобы перейти в каталог, где хранится CreateMF.jar:

      cd /usr/createMF

    3. Выполните следующую команду для создания bitmap‑файла:

      java -jar CreateMF.jar /\u003coriginal-RAW-file-path\u003e/\u003cgenerated-.mf-file-path\u003e

      Пример:

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

      Caution
      • Сгенерированный файл bitmap .mf должен иметь тот же префикс, что и RAW‑файл образа. Например, если имя файла образа image01.raw, то имя сгенерированного bitmap‑файла image01.mf.

  5. Используйте s3cmd для загрузки файла(ов) в OBS bucket.

    1. Установите s3cmd на ECS.

      Если s3cmd уже установлен, пропустите этот шаг.

      1. Выполните следующую команду для установки setuptools:

        yum install python-setuptools

      2. Выполните следующую команду для установки wget:

        yum install wget

      3. Выполните следующие команды для получения программного пакета s3cmd:

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

        mv master.zip s3cmd-master.zip

      4. Выполните следующие команды для установки s3cmd:

        unzip s3cmd-master.zip

        cd s3cmd-master

        python setup.py install

    2. Настройте s3cmd.

      Выполните следующую команду для настройки 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.)
      Note

      Конфигурации будут сохранены в /root/.s3cfg. Если вы хотите изменить эти конфигурации, выполните команду s3cmd --configure для настройки параметров или выполните команду vi .s3cfg для редактирования файла .s3cfg.

    3. Выполните следующую команду для загрузки файла образа ZVHD2 (или файла образа RAW и его bitmap‑файла) в OBS‑бакет.
      s3cmd put image01.zvhd2 s3:// mybucket /
      Caution

      Файл bitmap .mf должен находиться в том же OBS‑бакете, что и файл образа RAW.

  6. Зарегистрируйте частный образ.

    Вы можете зарегистрировать частный образ, используя преобразованный файл ZVHD2 или RAW в консоли или с помощью API.

    Метод 1: Зарегистрировать частный образ в консоли.

    1. Войдите в консоль управления.
      1. В разделе Computing нажмите Image Management Service. Отобразится консоль IMS.
    2. В правом верхнем углу нажмите Create Image.
    3. В области Image Type and Source выберите Import Image для Type, затем выберите System disk image или Data disk image для Image Type.
    4. Выберите бакет, в котором хранится файл образа ZVHD2 или RAW, а затем выберите файл образа.
    5. Выберите Enable Fast Create и выберите строку, следующую за Image File Preparation.
    6. Установите параметры согласно подсказке.

      Для получения подробной информации о параметрах см. Registering an Image File as a Private Image.

      Caution
      • ОС должна быть такой же, как в файле образа.
      • Ёмкость системного диска должна быть больше, чем указано в файле образа.

        Выполните следующую команду, чтобы проверить ёмкость системного диска в файле образа:

        qemu-img-hw info test.zvhd2

    Метод 2: Зарегистрировать частный образ с помощью API.

    API имеет вид POST /v2/cloudimages/quickimport/action.

    Для получения подробной информации о том, как вызвать этот API, см. «Importing an Image File Quickly» в Image Management Service API Reference.

Приложение 1: Общие команды qemu-img-hw

  • Преобразовать формат файла образа.
    qemu-img-hw convert -p -O {target-image-format} {source-image-file} {target-image-file}

    Параметры описаны следующим образом:

    -p: указывает прогресс преобразования.

    Часть, следующая за -O (которая должна быть в верхнем регистре), состоит из формата целевого образа, исходного файла образа и целевого файла образа.

    Например, выполните следующую команду для преобразования файла образа QCOW2 в файл ZVHD2:

    qemu-img-hw convert -p -O zvhd2 test.qcow2 test.zvhd2
  • Запрос информации о файле образа.
    qemu-img-hw info {image-file}

    Пример:

    qemu-img-hw info test.zvhd2
  • Просмотр справочной информации.
    qemu-img-hw -help

Приложение 2: Распространённые ошибки qemu-img-hw

  • Симптом:

    Следующая информация отображается при выполнении команды qemu-img-hw:

    ./qemu-img-hw: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./qemu-img-hw)

    Решение:

    Выполните команду strings /lib64/libc.so.6 | grep GLIBC для проверки версии GLIBC. Если версия слишком ранняя, установите последнюю версию. Выполните следующие команды последовательно:

    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
    Note

    Если отображается сообщение "configure: error: no acceptable C compiler found in $PATH", выполните команду yum -y install gcc.

    make
    make install
  • Симптом:

    Следующая информация отображается при выполнении команды qemu-img-hw:

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

    Решение:

    Выполните следующую команду:

    yum install libaio
  • Симптом:

    Следующая информация отображается при выполнении команды qemu-img-hw:

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

    Решение: выполните openssl version, чтобы проверить, является ли версия OpenSSL более поздней, чем 1.0. Если да, установите OpenSSL 1.0.

    Выполните следующие команды для установки OpenSSL 1.0:

    wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_0_2k/openssl-1.0.2k.tar.gz
    tar -xvf openssl-1.0.2k.tar.gz
    cd openssl-1.0.2k
    ./config -d shared --prefix=/tmp/openssl (custom installation directory)
    make
    make install
    cp /tmp/openssl/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10

    Удалите файл /usr/lib64/libcrypto.so.10, если он больше не нужен.