Scroll to navigation

virt-dib(1) Virtualization Support virt-dib(1)

НАЗВА

virt-dib - виконати елементи diskimage-builder

КОРОТКИЙ ОПИС

 virt-dib -B DIB-LIB [параметри] елементи...

ОПИС

Virt-dib — інструмент для використання елементів "diskimage-builder" з метою побудови нового образу диска, створення нових дисків у пам'яті тощо.

Virt-dib призначено для безпечної заміни "diskimage-builder" і її режиму "ramdisk-image-create", див. "ПОРІВНЯННЯ З DISKIMAGE-BUILDER", щоб ознайомитися із коротким порівнянням із використанням "diskimage-builder".

"diskimage-builder" є частиною проєкту TripleO OpenStack: https://wiki.openstack.org/wiki/TripleO.

ПРИКЛАДИ

Збирання простих образів дистрибутивів

 virt-dib \
   -B /шлях/до/diskimage-builder/lib \
   -p /шлях/до/diskimage-builder/elements \
   --envvar DIB_RELEASE=jessie \
   --name debian-jessie \
   debian vm

Ця команда збирає образ диска Debian Jessie (8.x), який є придатним для запуску у форматі віртуальної машини, який буде збережено як debian-jessie.qcow2.

Збирання дисків у пам’яті

 virt-dib \
   -B /шлях/до/diskimage-builder/lib \
   -p /шлях/до/diskimage-builder/elements \
   --ramdisk \
   --name ramdisk \
   ubuntu deploy-ironic

Ця команда збирає диск у пам’яті для компонента Ironic OpenStack на основі дистрибутива Ubuntu.

ПАРАМЕТРИ

Показати довідкове повідомлення.
Встановити шлях до каталогу бібліотеки "diskimage-builder". Типово, це підкаталог lib у початкових кодах, а після встановлення до /usr каталог /usr/share/diskimage-builder/lib.

Цей параметр є обов'язковим, оскільки virt-dib має надати його елементам (оскільки деякі з них можуть використовувати скрипти у каталозі). Сама ж програма virt-dib не використовує цей каталог бібліотеки безпосередньо.

Використовувати для образу-результату вказану архітектуру. Типовим є значення, яке збігається зі значенням архітектури для основної системи, на якій запущено virt-dib.

У поточній версії цей параметр виконує лише встановлення змінної середовища "ARCH" для елементів, а елементи вже створюють образ для потрібної користувачу архітектури.

Створювати файли контрольних сум для образу. Підтримуваними є контрольні суми MD5 та SHA256.
Використовувати послідовності символів ANSI для розфарбовування повідомлень. Ці послідовності типово використовуються, якщо дані виводяться на термінал tty. Якщо дані, виведені програмою, спрямовуються до файла, послідовності визначення кольорів ANSI буде вимкнено, якщо ви не додасте до команди цей параметр.
Встановити значення рівня діагностики "РІВЕНЬ". Рівнем є невід'ємне ціле число. Типовим є рівень 0.

Цей рівень діагностики відрізняється від рівня, який встановлюється -x і -v, він збільшує обсяг діагностичної інформації, яка виводиться. Зокрема, він встановлює "DIB_DEBUG_TRACE", усі значення рівня > 0 уможливлюють трасування у виконуваних скриптах.

Встановити сховище і мітку для docker.

Використовується лише тоді, коли серед форматів є "docker", і є обов'язковим у цьому випадку.

Додати вказаний диск як допоміжний, такий, де зберігатимуться файли кешу елементів, зокрема образи дисків, пакунки дистрибутива тощо.

Див. "ДОПОМІЖНИЙ ДИСК".

Вказати формат допоміжного диска. Якщо цей прапорець не вказано, його буде автоматично визначено на основі даних самого диска.

Якщо ви працюєте із образами дисків гостьових систем у форматі raw із ненадійних джерел, вам слід завжди вказувати назву формату.

Цей параметр використовується, лише якщо вказано --drive.

Див. "ДОПОМІЖНИЙ ДИСК".

Додати новий шлях з елементами. Шляхи використовуватимуться у тому самому порядку, у якому з’являються параметри -p, отже, пошук за шляхом, вказаним першим, відбуватиметься спочатку.

Очевидно, варто додати шлях до власних елементів "diskimage-builder", оскільки більшість інших елементів покладатимуться на ці дані.

Встановити додаткові пакунки у образ, який збиратиметься.

Робота цього параметра залежить від виконуваного файла "install-packages", який визначається елементами керування пакунками.

Цей параметр може бути використано декілька разів, декілька пакунків у аргументах слід відокремлювати комами.

Передати або встановити змінну середовища для елементів.

Див. "ЗМІННІ СЕРЕДОВИЩА" нижче, щоб дізнатися більше про взаємодію і використання змінних середовища.

Цим параметром можна скористатися у декілька способів:

Передати змінну середовища "ЗМІННА". Якщо змінну не встановлено, до елементів нічого не експортуватиметься.
Встановити для змінної середовища "ЗМІННА" значення "ЗНАЧЕННЯ" для елементів, незалежно від того, чи вже існує змінна середовища із тією самою назвою.

Може бути корисним для передавання змінної середовища без експортування у середовище, де запущено virt-dib.

Ігнорувати вказаний елемент.
Ігнорувати будь-який скрипт елемента із назвою "СКРИПТ", байдуже, до якого елемента він належатиме.

Це може бути корисним, якщо якийсь скрипт погано працює з virt-dib, наприклад, якщо скриптові справді потрібне середовище "diskimage-builder".

Встановити список форматів виведення даних, відокремлених комами.

Підтримувані формати:

"docker"
Імпортувати образ до docker за допомогою команди docker import. Призначення для образу має бути вказано за допомогою --docker-target.

Будь ласка, зауважте, що виконання цієї дії зазвичай потребує вмикання служби docker, інакше його не вдасться виконати. Крім того, docker працює з використанням sudo(8), отже, переконайтеся, що користувач має право запускати принаймні docker.

"qcow2" (типово увімкнено)
qcow2 для QEMU. Для роботи з цим форматом потрібна програма "qemu-img".
"raw"
Формат даних диска без обробки.
"squashfs"
Файлова система squashfs, яку стиснуто за допомогою XZ. Для користування цим форматом виведення даних потрібна можливість "squashfs"; див. також "ДОСТУПНІСТЬ" in guestfs(3).
"tar"
Архів без стискання.
"tgz"
Архів tar, стиснутий за допомогою gzip.
"vhd"
Образ диска "Virtual Hard Disk". Виведення даних у цьому форматі вимагає наявності "vhd-util".

Будь ласка, зверніть увагу на те, що версія "vhd-util" повинна бути зібраною із латкою, яка вмикає підтримку підкоманди "convert", і бути придатною до завантаження. Латку можна знайти тут: https://github.com/emonty/vhd-util/blob/master/debian/patches/citrix.

Встановити файлову систему, яку буде використано для кореневої теки системи. Типовою є "ext4".

Див. також "guestfs_filesystem_available" in guestfs(3)

Встановити каталог у основній системі, до якого кешуватимуться ресурси, які використовуються елементами фази "extra-data.d". Типовим є ~/.cache/image-create.

Будь ласка, зауважте, що більшість ресурсів, які отримуватимуться на фазах, відмінних від "extra-data.d", кешуватимуться на допоміжному диску, вказаному за допомогою --drive; див. також "ДОПОМІЖНИЙ ДИСК".

Вказати типовий тип встановлення. Стандартним є "source".

Встановіть значення "package", щоб типово використовувати засноване на пакунках встановлення.

За допомогою цього параметра можна зробити виведені дані придатнішими для обробки комп'ютером, якщо для цієї обробки використовуються інші програми. Див. "ПРИДАТНЕ ДО ЧИТАННЯ КОМП'ЮТЕРОМ ВИВЕДЕННЯ" нижче.
Змінити обсяг пам'яті, який надаватиметься для базової системи. Збільште це значення, якщо для виконання virt-dib не вистачає пам'яті.

Типові значення можна визначити за допомогою такої команди:

 guestfish get-memsize
    
Додати вказані параметри до mkfs(1), щоб мати змогу скоригувати параметри створення кореневої файлової системи; параметри передаються драйверу mfks(1), а не самій mfks(1). Зауважте, що для зміни типу файлової системи використовується --fs-type.

Вам слід скористатися --mkfs-options не більше одного разу. Щоб передати декілька параметрів, відокремте їх пробілами. Приклад:

 virt-dib ... --mkfs-options '-O якийсь_параметр -I щось_ще'
    
Увімкнути чи вимкнути доступ до мережі для гостьової системи під час встановлення.

Типово увімкнено. Скористайтеся параметром --no-network, щоб вимкнути доступ.

У мережі працюватимуть лише вихідні з'єднання, а також буде декілька інших незначних обмежень. Див. "МЕРЕЖА" in virt-rescue(1).

Це не вплине на доступність мережі для гостьової системи після її завантаження, оскільки така доступність керується вашим гіпервізором або хмарним середовищем і не має нічого спільного з virt-dib.

Якщо ви використаєте параметр --no-network, змінній середовища "DIB_OFFLINE" буде надано значення 1, що сигналізуватиме елементам про те, що їм слід використовувати лише кешовані ресурси, якщо вони доступні. Також слід зауважити, що, на відміну від "diskimage-builder", де елементи все ще можуть отримувати доступ до мережі навіть із "DIB_OFFLINE=", у virt-dib мережа буде зовсім недоступною.

Встановити назву для файла із виведеним образом. Типовою є "image".

Відповідно до вибраної назви, у поточному каталозі буде таке:

$NAME.ext
Для кожного з форматів виведення назву файла буде взято з назви образу-результату, а суфікс назви залежатиме від формату. Приклад: $NAME.qcow2, $NAME.raw тощо.

Не можна застосовувати у режимі диска у пам'яті (ramdisk), див. "ЗБИРАННЯ ДИСКА У ПАМ'ЯТІ".

$NAME.d
Каталог, що містить будь-які файли, створені елементами, наприклад каталог dib-manifests (створено елементом "manifests"), диски у пам'яті та ядра у режимі диску у пам'яті тощо.
$NAME.ext.checksum
Якщо вказано --checksum, буде створено файли для усіх підтримуваних типів контрольних сум; приклади: $NAME.ext.md5, $NAME.ext.sha256 тощо.

Не можна застосовувати у режимі диска у пам'яті (ramdisk), див. "ЗБИРАННЯ ДИСКА У ПАМ'ЯТІ".

Не вилучати файли з виведеними даними, якщо під час збирання станеться помилка. Цими файлами можна скористатися для діагностики помилок у запущених скриптах.

Типовою є поведінка, коли файли результатів буде вилучено, якщо станеться помилка у virt-dib (або, наприклад, помилка у одному зі скриптів, які запускає ця програма).

Вказати для використання інший інтерпретатор Python. Частину "diskimage-builder" реалізовано мовою Python, тому інтерпретатор є обов'язковим.

Значенням "PYTHON" може бути або повна назва виконуваного файла (наприклад python2, пошук якого буде виконано у каталогах змінної $PATH), або шлях повністю (наприклад /usr/bin/python2). Якщо не вказано, типовим значенням буде python.

Не виводити звичайних повідомлень щодо поступу.
Передати параметри --qemu-img-options до програми qemu-img(1) для коригування формату виведення даних. Перелік доступних параметрів залежить від формату виведення (див. --formats) і встановленої версії програми qemu-img.

Вам слід скористатися --qemu-img-options не більше одного разу. Щоб передати декілька параметрів, відокремте їх комами. Приклад:

 virt-dib ... --qemu-img-options cluster_size=512,preallocation=metadata ...
    
Встановити режим збирання диска у пам’яті.

Див. "ЗБИРАННЯ ДИСКА У ПАМ'ЯТІ".

Встановити назву для додаткового елемента, який буде додано у режимі збирання диска у пам'яті. Типовою є назва "ramdisk".

Див. "ЗБИРАННЯ ДИСКА У ПАМ'ЯТІ".

Встановити мітку для кореневої файлової системи у створеному образі.

Будь ласка, зауважте, що у деяких файлових системах обмеження на мітки може бути іншим. Наприклад, у файлових системах "ext2/3/4" мітки не можуть бути довшими за 16 символів, а у "xfs" найбільшою довжиною мітки є 12 символів.

Типове значення залежить від типу файлової системи для кореневого розділу (див. --fs-type): на "xfs" — це "img-rootfs", а на будь-якій іншій файловій системі — "cloudimg-rootfs".

Вибір розміру диска-результату, де розмір можна вказати за допомогою типових записів, зокрема "32G" (32 гігабайти) тощо. Типовим є розмір "5G".

Щоб вказати розмір у байтах, додайте до числа малу літеру b, наприклад "--size 10737418240b".

Див. також virt-resize(1) щодо зміни розмірів розділів на наявному образі диска.

Пропустити включення елемента "base".
Увімкнути використання скриптами N ≥ 2 віртуальних процесорів.
Не стискати отримані образи qcow2. Типово, програма стискає такі образи.
Увімкнути показ діагностичних повідомлень.
Показати дані щодо версії і завершити роботу.
Увімкнути трасування викликів програмного інтерфейсу libguestfs.

ЗМІННІ СЕРЕДОВИЩА

На відміну від "diskimage-builder", середовище основної системи не успадковується у базовій системі під час запуску більшості елементів (тобто усіх, окрім елементів у фазі "extra-data.d").

Щоб встановити змінні середовища для виконання елементів, слід повідомити virt-dib, що слід використовувати ці змінні, за допомогою параметра --envvar. Такий параметр надасть змогу вибірково експортувати змінні середовища під час виконання елементі. Це також пріоритетний шлях передавання змінних середовища елементам.

І ще раз: якщо вам потрібно, щоб змінна середовища "MYVAR" (і її вміст) були доступні елементам, вам слід або віддати команду

 export MYVAR   # яким би не було її значення
 virt-dib ... --envvar MYVAR ...

або

 virt-dib ... --envvar MYVAR=її_значення ...

ДОПОМІЖНИЙ ДИСК

Virt-dib виконує більшість елементів у власній базовій системі, отже, не на основній системі. Через це, елементи не можуть кешувати ресурси безпосередньо на основній системі.

Щоб усунути цю незручність, у virt-dib передбачено можливість використання допоміжного диска, на якому можна зберігати кешовані ресурси, зокрема образи дисків, пакунки дистрибутивів тощо. Хоча це означає, що для кешування буде доступним менше місця, принаймні, це надає змогу обмежити простір у основній системі для кешів без потреби у виконанні цього завдання засобами самих елементів.

У поточній версії або цей диск має містити лише один розділ, або має використовуватися лише перший розділ з диска. Диск із другим варіантом конфігурації доволі просто створити за допомогою guestfish(1) ось так:

 guestfish -N filename.img=fs:ext4:10G exit

У результаті виконання наведеної вище команди буде створено образ диска із назвою filename.img об'ємом у 10 ГБ з одним розділом типу ext4; див. "ОБРАЗИ ПРИГОТОВАНИХ ДИСКІВ" in guestfish(1).

Рекомендованим розміром диска є ≥ 10 ГБ, оскільки елементи кешуватимуть образи дисків, пакунки дистрибутивів тощо. Як і розмір будь-якого образу диска, розмір допоміжного диска можна змінити за допомогою virt-resize(1), якщо раптом він стане замалим.

Доступ до диска може здійснюватися у спосіб, який є подібним до способу доступу до будь-яких інших образів дисків, наприклад, за допомогою інших інструментів libguestfs, зокрема guestfish(1):

 guestfish -a filename.img -m /dev/sda1

Якщо за допомогою --drive не вказано жодного допоміжного диска, усі ресурси, кешовані під час запуску virt-dib, буде відкинуто.

РЕСУРСИ НА ДИСКУ

У допоміжному диску можна шукати такі ресурси:

/home
Цей каталог задається за допомогою змінної середовища "HOME" під час збирання. У ньому, здебільшого, міститься кеш образів (збережений до /home/.cache/image-create) та усі інші ресурси у домашньому каталозі користувача, який запускає різні інструменти.
/virt-dib-*.log
Це журнали елементів, які виконуються у базовій системі libguestfs, тобто усі фази, окрім "extra-data.d".

ЗБИРАННЯ ДИСКА У ПАМ'ЯТІ

Virt-dib може також емулювати "ramdisk-image-create", вторинний режим роботи "diskimage-builder". Замість використання якогось інструмента із іншою назвою, virt-dib надає простий доступ до режиму за допомогою параметра --ramdisk.

У цьому режимі:

  • додається елемент ramdisk (див. --ramdisk-element)
  • образу не створюється (отже, --formats буде проігноровано)
  • $NAME.d (див. --name) міститиме initrd, kernel, тощо.

ТИМЧАСОВИЙ КАТАЛОГ

Virt-dib використовує стандартний каталог для тимчасових файлів, який використовується libguestfs, див. "ЗМІННІ СЕРЕДОВИЩА" in guestfs(3).

Типово, цим каталогом є /tmp (типове значення для "TMPDIR"). У деяких системах для цього каталогу може використовуватися файлова система tmpfs. Таким чином, типовим максимальним розміром для нього є половина фізичного розміру оперативної пам'яті. Якщо під час роботи virt-dib перевищить це обмеження, програма може повиснути або завершити роботу передчасно із повідомленням про помилку. Усунути цю проблему можна, вказавши для "TMPDIR" тимчасовий каталог. Приклад:

 mkdir local-tmp
 env TMPDIR=$PWD/local-tmp virt-dib ...
 rm -rf local-tmp

ДОДАТКОВІ ЗАЛЕЖНОСТІ

Оскільки virt-dib запускає більшість елементів у власній базовій системі, усі інструменти та бібліотеки, які використовуються елементами, що запускаються поза межами гостьової системи (типово "root.d", "block-device.d" та "cleanup.d") мають бути і у базовій системі. Якщо їх не буде, скрипти не зможуть працювати і типово повідомлять про помилку "команду не знайдено".

Для інструментів і бібліотек, які містяться у пакунках дистрибутивів, простим рішенням цієї проблеми буде віддання наказу libguestfs включити додаткові пакунки до базової системи. Зробити це можна, наприклад, створення файла із додатковими пакунками:

 # echo wget > /usr/lib64/guestfs/supermin.d/dib-my-extra

Шлях до каталогу supermin.d, звичайно ж, залежить від дистрибутива. У додаткових файлах може бути список із багатьма пакунками, кожен з яких слід вказувати окремому рядку. Докладніший опис можна знайти у підручнику з supermin(1).

ПОРІВНЯННЯ ІЗ DISKIMAGE-BUILDER

Призначенням virt-dib є бути безпечним замінником програми "diskimage-builder" і її режиму "ramdisk-image-create". Помітні для користувача відмінності полягають ось у чому:

  • аргументи командного рядка; деякі з аргументів збігаються із аргументами "diskimage-builder", але деякі є іншими:

     disk-image-create             virt-dib
     -----------------             --------
     -a ARCH                       --arch АРХІТЕКТУРА
     --image-size РОЗМІР           --size РОЗМІР
     --max-online-resize РОЗМІР    doable using --mkfs-options
     -n                            --skip-base
     -o НАЗВА ОБРАЗУ               --name НАЗВА ОБРАЗУ
     -p ПАКУНКИ                    --extra-packages ПАКУНКИ
     -t ФОРМАТИ                    --formats ФОРМАТИ
     -x                            --debug 1
     -x -x                         --debug 2
     -x -x [-x ...]                --debug 3/4/etc
        
  • розташування файлів-результатів, які не є образами (зокрема дисків у пам'яті і ядер)
  • спосіб зберігання деяких кешованих ресурсів: використання допоміжного диска, а не диска, на якому запущено virt-dib
  • потреба у визначення розміру диска-результату, тоді як програма "diskimage-builder" автоматично обчислює оптимальний розмір
  • обробка змінних середовища, див. "ЗМІННІ СЕРЕДОВИЩА".

    До того ж, окрім власних змінних середовища libguestfs (див. "ЗМІННІ СЕРЕДОВИЩА" in guestfs(3)), virt-dib не виконує читання жодних інших змінних середовища. Це означає, що зміни у параметрах і поведінці програми визначаються лише переданими їй аргументами рядка команди.

  • потрібно, щоб додаткові інструменти на деяких фазах поза chroot були доступні у базовій системі, див. "ДОДАТКОВІ ЗАЛЕЖНОСТІ".

Робота самих елементів не повинна зазнати змін; причиною відмінностей у поведінці можуть бути помилкові припущення у коді самих елементів або некоректна емуляція virt-dib.

Відомі вади:

(нічого)

ПРИДАТНЕ ДО ЧИТАННЯ КОМП'ЮТЕРОМ ВИВЕДЕННЯ

Для виведення даних у зручному для машинної обробки форматі можна скористатися параметром --machine-readable. Додавання цього параметра робить зручним використання virt-dib з інших програм, графічних інтерфейсів тощо.

Скористайтеся цим параметром окремо, щоб опитати систему щодо можливостей виконуваного файла virt-dib. Типово виведені дані виглядатимуть якось так:

 $ virt-dib --machine-readable
 virt-dib
 output:qcow2
 output:tar
 output:raw
 output:vhd

Виводиться список можливостей, по одній на рядок, і програма завершує роботу зі станом 0.

"output:" є вказівкою на формати виведення (параметр рядка команди --formats), підтримку яких передбачено у цьому виконуваному файлі.

Можна вказати рядок форматування для керування виведенням, див. "РОЗШИРЕНЕ ПРИДАТНЕ ДО ЧИТАННЯ КОМП'ЮТЕРОМ ВИВЕДЕННЯ" in guestfs(3).

ТЕСТУВАННЯ

Перевірку працездатності virt-dib було виконано для "diskimage-builder" (та його елементів) ≥ 0.1.43. Час від часу виконується також перевірка для "tripleo-image-elements" та "sahara-image-elements".

Попередні версії також можуть працювати, але цього не можна гарантувати.

СТАН ВИХОДУ

Ця програма повертає значення 0 у разі успішного завершення і ненульове значення, якщо сталася помилка.

ТАКОЖ ПЕРЕГЛЯНЬТЕ

guestfs(3), guestfish(1), virt-resize(1), http://libguestfs.org/.

АВТОР

Pino Toscano ("ptoscano at redhat dot com")

АВТОРСЬКІ ПРАВА

© Red Hat Inc., 2015

LICENSE

BUGS

To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools

To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools

When reporting a bug, please supply:

  • The version of libguestfs.
  • Where you got libguestfs (eg. which Linux distro, compiled from source, etc)
  • Describe the bug accurately and give a way to reproduce it.
  • Run libguestfs-test-tool(1) and paste the complete, unedited output into the bug report.
2021-03-31 libguestfs-1.44.2