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.
Цей параметр є обов'язковим, оскільки virt-dib має надати його елементам (оскільки деякі з них можуть використовувати скрипти у каталозі). Сама ж програма virt-dib не використовує цей каталог бібліотеки безпосередньо.
У поточній версії цей параметр виконує лише встановлення змінної середовища "ARCH" для елементів, а елементи вже створюють образ для потрібної користувачу архітектури.
Цей рівень діагностики відрізняється від рівня, який встановлюється -x і -v, він збільшує обсяг діагностичної інформації, яка виводиться. Зокрема, він встановлює "DIB_DEBUG_TRACE", усі значення рівня > 0 уможливлюють трасування у виконуваних скриптах.
Використовується лише тоді, коли серед форматів є "docker", і є обов'язковим у цьому випадку.
Див. "ДОПОМІЖНИЙ ДИСК".
Якщо ви працюєте із образами дисків гостьових систем у форматі raw із ненадійних джерел, вам слід завжди вказувати назву формату.
Цей параметр використовується, лише якщо вказано --drive.
Див. "ДОПОМІЖНИЙ ДИСК".
Очевидно, варто додати шлях до власних елементів "diskimage-builder", оскільки більшість інших елементів покладатимуться на ці дані.
Робота цього параметра залежить від виконуваного файла "install-packages", який визначається елементами керування пакунками.
Цей параметр може бути використано декілька разів, декілька пакунків у аргументах слід відокремлювати комами.
Див. "ЗМІННІ СЕРЕДОВИЩА" нижче, щоб дізнатися більше про взаємодію і використання змінних середовища.
Цим параметром можна скористатися у декілька способів:
Може бути корисним для передавання змінної середовища без експортування у середовище, де запущено virt-dib.
Це може бути корисним, якщо якийсь скрипт погано працює з virt-dib, наприклад, якщо скриптові справді потрібне середовище "diskimage-builder".
Підтримувані формати:
Будь ласка, зауважте, що виконання цієї дії зазвичай потребує вмикання служби docker, інакше його не вдасться виконати. Крім того, docker працює з використанням sudo(8), отже, переконайтеся, що користувач має право запускати принаймні docker.
Будь ласка, зверніть увагу на те, що версія "vhd-util" повинна бути зібраною із латкою, яка вмикає підтримку підкоманди "convert", і бути придатною до завантаження. Латку можна знайти тут: https://github.com/emonty/vhd-util/blob/master/debian/patches/citrix.
Див. також "guestfs_filesystem_available" in guestfs(3)
Будь ласка, зауважте, що більшість ресурсів, які отримуватимуться на фазах, відмінних від "extra-data.d", кешуватимуться на допоміжному диску, вказаному за допомогою --drive; див. також "ДОПОМІЖНИЙ ДИСК".
Встановіть значення "package", щоб типово використовувати засноване на пакунках встановлення.
Типові значення можна визначити за допомогою такої команди:
guestfish get-memsize
Вам слід скористатися --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 мережа буде зовсім недоступною.
Відповідно до вибраної назви, у поточному каталозі буде таке:
Не можна застосовувати у режимі диска у пам'яті (ramdisk), див. "ЗБИРАННЯ ДИСКА У ПАМ'ЯТІ".
Не можна застосовувати у режимі диска у пам'яті (ramdisk), див. "ЗБИРАННЯ ДИСКА У ПАМ'ЯТІ".
Типовою є поведінка, коли файли результатів буде вилучено, якщо станеться помилка у virt-dib (або, наприклад, помилка у одному зі скриптів, які запускає ця програма).
Значенням "PYTHON" може бути або повна назва виконуваного файла (наприклад python2, пошук якого буде виконано у каталогах змінної $PATH), або шлях повністю (наприклад /usr/bin/python2). Якщо не вказано, типовим значенням буде python.
Вам слід скористатися --qemu-img-options не більше одного разу. Щоб передати декілька параметрів, відокремте їх комами. Приклад:
virt-dib ... --qemu-img-options cluster_size=512,preallocation=metadata ...
Див. "ЗБИРАННЯ ДИСКА У ПАМ'ЯТІ".
Див. "ЗБИРАННЯ ДИСКА У ПАМ'ЯТІ".
Будь ласка, зауважте, що у деяких файлових системах обмеження на мітки може бути іншим. Наприклад, у файлових системах "ext2/3/4" мітки не можуть бути довшими за 16 символів, а у "xfs" найбільшою довжиною мітки є 12 символів.
Типове значення залежить від типу файлової системи для кореневого розділу (див. --fs-type): на "xfs" — це "img-rootfs", а на будь-якій іншій файловій системі — "cloudimg-rootfs".
Щоб вказати розмір у байтах, додайте до числа малу літеру b, наприклад "--size 10737418240b".
Див. також virt-resize(1) щодо зміни розмірів розділів на наявному образі диска.
На відміну від "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, буде відкинуто.
У допоміжному диску можна шукати такі ресурси:
Virt-dib може також емулювати "ramdisk-image-create", вторинний режим роботи "diskimage-builder". Замість використання якогось інструмента із іншою назвою, virt-dib надає простий доступ до режиму за допомогою параметра --ramdisk.
У цьому режимі:
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).
Призначенням virt-dib є бути безпечним замінником програми "diskimage-builder" і її режиму "ramdisk-image-create". Помітні для користувача відмінності полягають ось у чому:
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
До того ж, окрім власних змінних середовища libguestfs (див. "ЗМІННІ СЕРЕДОВИЩА" in guestfs(3)), virt-dib не виконує читання жодних інших змінних середовища. Це означає, що зміни у параметрах і поведінці програми визначаються лише переданими їй аргументами рядка команди.
Робота самих елементів не повинна зазнати змін; причиною відмінностей у поведінці можуть бути помилкові припущення у коді самих елементів або некоректна емуляція 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), підтримку яких передбачено у цьому виконуваному файлі.
It is possible to specify a format string for controlling the output; see "ADVANCED MACHINE READABLE OUTPUT" 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
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:
2019-02-07 | libguestfs-1.40.2 |