guestfs-release-notes-1.38(1) | Virtualization Support | guestfs-release-notes-1.38(1) |
guestfs-release-notes - нотатки щодо випусків libguestfs
Ці нотатки щодо випуску стосуються лише відмінностей від попереднього стабільного випуску (1.36.0). Докладний журнал змін є частиною журналу змін сховища git. Його також наведено у файлі ChangeLog, який є частиною архіву tar із кодом бібліотеки.
Нові інструменти
Virt-builder-repository — новий інструмент, який надає кінцевим користувачам змогу створювати і оновлювати сховища virt-builder (Cédric Bosdonnat).
Virt-rescue (хоча це і не новий інструмент) було суттєво переписано, реалізовано керування завданнями, параметри -m та -i, клавіші скасовування тощо.
Нові можливості у наявних інструментах
Поліпшено планувальник virt-builder. У новій версії програма вибирає швидші та ефективніші плани збирання для складних випадків, особливо якщо тимчасовий каталог або каталог виведення даних перебувають на сховищі даних у мережі.
Нові шаблони virt-builder для Fedora (починаючи з Fedora 26) матимуть просте компонування розділів і використовуватимуть GPT.
Скрипти першого завантаження virt-customize у гостьових системах, де використовується systemd, тепер встановлюються до "multi-user.target", а не до "default.target", отже запускаються лише тоді, коли система завантажується у звичайному режимі.
Virt-customize тепер встановлює випадковий /etc/machine-id для гостьових систем Linux, якщо такий ще не встановлено.
Virt-df тепер правильно працює у файлових системах із розміром блоку, меншим за 1 кБ (Nikolay Ivanets).
Virt-dib містить подальші поліпшення у сумісності з diskimage-builder (Pino Toscano).
Virt-sysprep вилучає "DHCP_HOSTNAME" з файлів ifcfg-*.
Virt-sysprep тепер працює і в Oracle Linux (Jamie Iles).
Virt-resize тепер правильно копіює атрибути розділів GPT з джерела до призначення (Cédric Bosdonnat).
Реалізовано або поліпшено доповнення за tab у bash для таких програм: virt-win-reg, virt-v2v-copy-to-local.
virt-v2v і virt-p2v
Virt-v2v тепер може читати файли VMX VMware безпосередньо або з локального диска, сховища NFS, або за допомогою SSH з гіпервізору ESXi.
Virt-v2v тепер може використовувати VDDK як джерело вхідних даних.
Обидві програми, virt-v2v і virt-p2v, тепер можуть передавати дані щодо виробника процесора, моделі і топології початкової системи. Втім, на жаль, не усі гіпервізори поточних версій здатні надати або використати ці дані (Tomáš Golembiovský).
У virt-v2v реалізовано підтримку шифрованих гостьових систем (Pino Toscano).
Virt-v2v тепер може працювати зі знімками VMware. Зауважте, що знімки мають бути згорнутими — програма не перетворює ланцюжок знімків у ланцюжок знімків.
Virt-v2v тепер встановлює блокові пристрої virtio Windows 10 / Windows Server 2016 належним чином (Pavel Butsykin, Kun Wei).
У virt-v2v реалізовано встановлення драйверів virtio-rng, balloon та pvpanic та належне налаштовування цих драйверів у метаданих гіпервізору призначення для гіпервізорів, у яких передбачено підтримку цього (Tomáš Golembiovský).
У virt-v2v реалізовано встановлення застарілих і сучасних ключів virtio у реєстрі Windows (Ladi Prosek).
У virt-p2v реалізовано збереження (у певних випадках) часового поясу у годиннику реального часу (RTC).
Тепер virt-p2v поєднує декілька команд scp до сервера перетворення у одну команду, щоб зменшує час, потрібний на перетворення.
У virt-v2v реалізовано виявлення спеціалізованих ядер Linux лише для паравіртуалізації у Xen належним чином (Laszlo Ersek).
У virt-v2v -o glance реалізовано підтримку створення належних властивостей для гостьових систем UEFI (Pino Toscano).
Тепер virt-v2v -o null уникає буферизації гостьової системи до тимчасового файла. Замість цього, виконується запис до «нульового блокового пристрою» qemu. Це пришвидшує роботу і знижує потребу у використанні місця на диску.
У virt-v2v -o rhv реалізовано підтримку типу гостьової системи Windows 2016 Server.
У virt-v2v -i libvirtxml реалізовано підтримку відкриття мережевих дисків за допомогою http або https.
У virt-v2v реалізовано попереджання щодо транзитних пристроїв у основній системі (Pino Toscano).
Розширено можливості виведення virt-v2v --machine-readable так, щоб було включено факти "vcenter-https", "xen-ssh" і "in-place" (Pino Toscano).
Прив’язки до мов програмування
Усунено декілька витоків пам'яті та інших проблем із пошкодженням даних у прив'язках до Java (Pino Toscano).
Відкинуто підтримку у Perl %guestfs_introspection.
Перевірка
Підтримку інспектування було переписано на OCaml і включено у фонову службу. Це значно пришвидшує інспектування, збільшує його стійкість та поліпшує можливості із його розширення у майбутньому.
Краща підтримка піктограм гостьових систем ALT Linux (Pino Toscano).
Краща підтримка NeoKylin (Qingzheng Zhang).
Уможливлено роботу з операційними системами, подібними до Void Linux, у яких "VERSION_ID" не включено до /etc/os-release (Pino Toscano).
Додано підтримку Microsoft MS-DOS (Daniel Berrangé).
Архітектури і платформи
Декілька виправлень для архітектури S/390. Libguestfs і усі інструменти тепер можна зібрати і запустити на цій архітектурі.
Інше
Програмний інтерфейс libguestfs тепер є безпечним щодо потоків обробки (хоча ще не є паралелізованим). Ви можете викликати інтерфейс для одного дескриптора із декількох потоків без потреби у блокуванні.
Було виявлено декілька вразливостей у програмі icoutils "wrestool", яку libguestfs запускала для створення піктограм гостьових систем Windows. Рекомендуємо використовувати лише найсвіжішу версію "wrestool".
Нові програмні інтерфейси
Інші зміни у програмному інтерфейсі
Програмні інтерфейси, реалізовані у фоновій службі, тепер можна писати на C або OCaml. Декілька програмних інтерфейсів було переписано на OCaml, хоча ми і не плануємо переписувати цією мовою усі інтерфейси.
Тепер ви отримуватимете зрозуміле повідомлення про помилку, якщо спробуєте додати забагато дисків до базової системи, замість доволі розпливчастого повідомлення про помилку від qemu.
У деяких програмних інтерфейсах випадково можна було скористатися "/dev/urandom" як «пристроєм» вхідних даних. Приклад: "g.copy_device_to_device("/dev/urandom", "/dev/sda")". Код було змінено таким чином, щоб не можна було так робити.
Усі програмні інтерфейси для інспектування компакт-дисків із засобом для встановлення визнано застарілими. Для виконання цього завдання слід використовувати libosinfo.
Для збирання libguestfs нової версії потрібен компілятор OCaml ≥ 4.01. Параметр "./configure --disable-ocaml" лишається працездатним, але використовується лише для вимикання прив'язок до мови OCaml.
Додано файл "RELEASES" зі списком дат усіх випусків libguestfs. Цей файл слід оновлювати під час кожного випуску.
Було вилучено документацію, яку створює "gtk-doc". Тепер використання "./configure --enable-gtk-doc" не має жодних наслідків.
Для функції XDR та rpcgen тепер використовується libtirpc. Зауважте, що для glibc вона вважається застарілою і у більшості дистрибутивів Linux ці залежності викинуто, тому для більшості користувачів ця залежність буде додатковою (Martin Kletzander).
Тепер для crypt(3) використовується libxcrypt. Ця бібліотека є обов'язковою, якщо використовується glibc ≥ 2.27.
Тепер для роботи потрібен "ocaml-hivex".
Тепер обов'язковою є libvirt ≥ 1.2.20.
Тепер для тестів, які слід запускати від імені користувача root, передбачено нову ціль, "make check-root" (аналогічно до "make check-slow").
Перевірка щодо часу "./configure" для "__attribute__((cleanup))" тепер працює і у випадку крос-компіляції (Yann E. Morin).
Файли "AUTHORS" і "p2v/about-authors.c" тепер створюються із одного джерела.
Можна використовувати і GnuPG v1, і v2.
Для визначення типового значення "LIBGUESTFS_PATH" може бути використано "./configure --with-guestfs-path". Крім того, трохи змінено спосіб, у який виконується пошук за шляхом, для того, щоб виконати пошук усіх типів базових систем у кожному з елементів шляху окремо (Pavel Butsykin).
Змінну "GUESTFSD_EXT_CMD", яка використовувалася для позначення зовнішніх команд у фоновій службі, вилучено. Її спочатку використовували для збирання у SUSE, але там тепер вона не використовується.
Виведені дані "./configure" тепер візуально групуються за заголовками, відповідними до виконуваної дії, що спрощує пошук потрібних даних (Pino Toscano).
Залежності OCaml тепер створюються з одного скрипту, замість декількох трохи різних фрагментів Makefile.
"./configure --with-distro=ідентифікатор" можна скористатися для перевизначення автоматичного визначення дистрибутива Linux під час збирання (Pino Toscano).
Реалізовано підтримку qemu ≥ 2.10 (яка не є обов'язковою). Це додає обов'язкове блокування для дисків, libguestfs вимикає таке блокування за певних обставин, коли відомо, що це є безпечним (Lars Seipel, Peter Krempa, Daniel Berrangé, Pino Toscano, Fam Zheng, Yongkui Guo, Václav Kadlčík).
Найвикористовуваніший код пересунуто до підкаталогу common/, а спільний код OCaml тепер зберігається у каталогах common/ml* (наприклад, common/visit і common/mlvisit містять бібліотеку visitor мовами C та OCaml, відповідно). Каталог mllib вилучено і замінено каталогом common/mltools.
Реалізовано невибагливу до ресурсів прив'язку OCaml для PCRE, див. common/mlpcre. Використання бібліотеки OCaml "Str" здебільшого замінено на PCRE.
Додано більше викликів до "udev_settle" для поліпшення стабільності коду поділу на розділи (Dawid Zamirski).
Реалізовано запуск "udev_settle" з параметром --exit-if-exists, який пришвидшує виконання команди (Pavel Butsykin).
Реалізовано виявлення нових місць зберігання major(3), minor(3), makedev(3).
Дії тепер може бути визнано застарілими без пропозицій щодо заміни для програмних інтерфейсів, подібних до "guestfs_wait_ready", які слід просто вилучити з коду клієнта.
Реалізовано використання обгортки "set_nonblocking_flag" gnulib замість виклику fcntl(2) з "O_NONBLOCK" (Eric Blake). Те саме для "set_cloexec_flag".
Усунено виток пам'яті у версії XFS "guestfs_vfs_minimum_size" (Pino Toscano).
Перевірки valgrind тепер працюють для виконуваного файла virt-p2v.
Тепер у коді і документації використовується одинарні лапки Unicode ("‘’") замість '' і `'. Те саме стосується "’s" замість "'s".
Функцію "is_zero" було реалізовано заново із суттєвим пришвидшенням (Eric Blake).
У модулі безпосередньої обробки вилучено підтримку virtio-blk. Тепер єдиним підтримуваним способом додавання дисків є virtio-scsi.
Рядковий параметр і повернуті типи засобу створення раціоналізовано так, щоб було лише два типи ("String", "StringList") з багатьма підтипами, наприклад "FileIn" став "String (FileIn, ...)".
Тепер можна використовувати формати образу диска базово системи, відмінні від простого (raw) (Pavel Butsykin).
Декілька поліпшень у автоматичному збиранні шаблонів Debian для virt-builder (Pino Toscano). Уможливлено послідовну консоль для цих шаблонів (Florian Klink).
У фоновій службі замість створення приватної копії lvm.conf і внесення змін до неї (наприклад для фільтрів) створюється порожній файл, оскільки LVM розуміє, що означає «усе типове» (Alasdair Kergon, Zdenek Kabelac).
Модуль "direct" тепер може запускати запити QMP щодо виконуваного файла QEMU, що розширює типи інформації, які можна виявляти. Крім того, код для надсилання запитів до QEMU зроблено стійкішим для обробки декількох паралельних запитів до різних версій QEMU.
Прив'язки Augeas до OCaml зібрано у common/mlaugeas. Згідно з довготерміновим планом їх має бути вилучено з метою використання загальносистемного ocaml-augeas, коли він стане широкодоступним у дистрибутивах (Pino Toscano).
Усі модулі OCaml (файли "*.ml") тепер повинні мати файл інтерфейсу ("*.mli"). Якщо ці модулі нічого не експортують, файл інтерфейсу буде порожнім, окрім коментарів.
У коді використовуються певні особливості OCaml ≥ 4.01, зокрема заміна «{ поле = поле }» на «{ поле }».
Інструмент virt-builder "make-template" тепер використовує параметр "virt-install --transient", отже, тепер немає потреби у чищенні залишків доменів після аварійного завершення роботи. Це також заощаджує запуски kickstart та virt-install, зміни щодо чого внесено до git із довідковою метою.
/dev/shm тепер створюється у базовій системі (Nicolas Hicher).
У докладному режимі на гостьових системах Fedora virt-customize тепер використовує "dnf --verbose", що дає змогу отримати докладніші діагностичні дані.
У класах введення і виведення virt-v2v тепер міститься метод "#precheck", який використовується для виконання перевірки середовища до того, як буде розпочато перетворення.
Virt-p2v уможливлює діагностику miniexpect. Дані виводяться до stderr (у virt-p2v).
Перевірки щодо вільного місця virt-v2v тепер є ліберальнішими, особливо для невеликих гостьових систем (Pino Toscano).
guestfs-examples(1), guestfs-faq(1), guestfs-performance(1), guestfs-recipes(1), guestfs-testing(1), guestfs(3), guestfish(1), http://libguestfs.org/
Richard W.M. Jones
Copyright (C) 2009-2020 Red Hat Inc.
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:
2021-01-05 | libguestfs-1.44.0 |