Scroll to navigation

virt-sparsify(1) Virtualization Support virt-sparsify(1)

НАЗВА

virt-sparsify — зробити диск віртуальної машини розрідженим

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

 virt-sparsify [--параметри] вхідний_диск вихідний_диск
 virt-sparsify [--параметри] --in-place диск

ОПИС

Virt-sparsify — інструмент, який може зробити диск віртуальної машини (або будь-який образ диска) розрідженим, тобто спеціально зменшеним. Це означає, що вільне місце в образі диска можна буде перетворити на вільне місце в основній системі.

Virt-sparsify може знаходити і розріджувати вільне місце у більшості файлових систем (наприклад у ext2/3/4, btrfs, NTFS тощо), а також у фізичних томах LVM.

Крім того, програма virt-sparsify може перетворювати диски з одного формату на інший, наприклад, перетворити образ диска у простому форматі (raw) на розріджений образ у форматі qcow2.

Virt-sparsify може працювати з будь-яким образом диска, не лише з образами віртуальних машин. Втім, якщо у вашій віртуальній машині декілька дисків і використано керування томами, virt-sparsify працюватиме, але не дуже ефективно (http://bugzilla.redhat.com/887826).

ВАЖЛИВЕ ЗАУВАЖЕННЯ ЩОДО РОЗРІДЖЕНИХ ВИВЕДЕНИХ ОБРАЗІВ

Якщо вхідними даними є образ raw, буде виведено розріджені дані raw. Вам слід перевірити розмір виведених даних за допомогою інструмента, який обробляє розріджені дані, наприклад "du -sh". Різниця може бути досить значною:

 $ ls -lh test1.img
 -rw-rw-r--. 1 rjones rjones 100M Aug  8 08:08 test1.img
 $ du -sh test1.img
 3.6M   test1.img

(Порівняйте видимий розмір у 100 МБ зі справжнім розміром у 3,6 МБ)

ВАЖЛИВІ ОБМЕЖЕННЯ

  • До використання цього інструмента віртуальну машину слід зупинити.
  • Virt-sparsify може потребувати для роботи удвічі більшого місця на диску, ніж розмір початкового образу диска (1 тимчасова копія + 1 образ призначення). Ця оцінка є максимальною, і зазвичай потрібно набагато менше місця.

    Якщо ви використовуєте параметр --in-place, значні обсяги місця на диску для тимчасового зберігання даних не знадобляться.

  • Virt-sparsify не може змінювати розміри образів дисків. Для зміни розмірів дисків скористайтеся virt-resize(1).
  • Virt-sparsify не може працювати із зашифрованими дисками. У libguestfs передбачено підтримку самих зашифрованих дисків, але зашифровані диски не може бути розріджено.
  • Virt-sparsify ще не може розріджувати місце між розділами. Зауважте, що це місце часто використовується для критичних даних, зокрема завантажувачів, тому, насправді, воно може бути зовсім не таким зайвим, як може здатися.
  • У режимі копіювання внутрішні знімки qcow2 не копіюються на образ призначення.

Перш ніж розпочати користування цією програмою, вам також варто ознайомитися зі сторінками підручника щодо пов'язаних із нею інструментів, virt-filesystems(1) та virt-df(1).

ПРИКЛАДИ

Типовий приклад використання:

 virt-sparsify вхідний_диск вихідний_диск

Ця команда копіює "вхідний_диск" на диск "вихідний_диск", роблячи результат розрідженим. Диск "вихідний_диск" буде створено або перезаписано, якщо такий диск уже існує. Програма сама визначить формат вхідного диска (наприклад qcow2) і використає той самий формат для вихідного диска.

Для перетворення диска з одного формату на інший скористайтеся параметром --convert:

 virt-sparsify disk.raw --convert qcow2 disk.qcow2

Virt-sparsify намагається занулити і розрідити вільне місце на усіх файлових системах, які вдасться знайти на початковому образі диска. Ви можете наказати програмі ігнорувати (не занулювати вільне місце) певні файлові системи за допомогою такої команди:

 virt-sparsify --ignore /dev/sda1 вхідний_диск вихідний_диск

Щоб отримати список файлових систем на образі диска, скористайтеся командою virt-filesystems(1).

Починаючи з версії virt-sparsify ≥ 1.26, ви можете розріджувати образ диска на місці, ось так:

 virt-sparsify --in-place disk.img

ПАРАМЕТРИ

Показати довідкове повідомлення.
Переконайтеся, чи достатньо вільного місця у каталозі, вказаному за допомогою змінної середовища "TMPDIR" або параметра --tmp, для завершення дії. Це лише оцінка.

Якщо під час перевірки буде виявлено проблему, ви можете піти одним з таких шляхів:

  • ігнорувати її,
  • вивести попередження і продовжити,
  • попередити і почекати, доки користувач натисне клавішу Enter (типова поведінка) або
  • вивести попередження про помилку і завершити роботу.

Цей параметр не можна поєднувати із параметром --in-place.

Використовувати послідовності символів ANSI для розфарбовування повідомлень. Ці послідовності типово використовуються, якщо дані виводяться на термінал tty. Якщо дані, виведені програмою, спрямовуються до файла, послідовності визначення кольорів ANSI буде вимкнено, якщо ви не додасте до команди цей параметр.
Стиснути файл виведених даних. Це працює, лише якщо форматом виведення даних є "qcow2".

Цей параметр не можна поєднувати із параметром --in-place.

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

Підтримуваними і працездатними форматами виведення є такі: "raw", "qcow2", "vdi".

Ви також можете скористатися будь-яким іншим форматом, підтримку якого передбачено у програми qemu-img(1), наприклад "vmdk", але підтримка інших форматів повністю залежить від можливостей qemu.

Зазвичай, варто визначати формат за допомогою --convert, оскільки тоді virt-sparsify не доведеться вгадувати формат вхідних даних.

Скоригувати формат виведення даних можна за допомогою параметрів --compress, -o.

Цей параметр не можна поєднувати із параметром --in-place.

Типово, якщо virt-sparcify попросить вас ввести ключ або пароль, програма не відтворюватиме введені символи на екрані. Якщо ви не боїтеся TEMPEST-нападів, або у вашій кімнаті нікого, окрім вас, немає, ви можете скористатися цим прапорцем, щоб бачити, які саме символи ви вводите.
Вказати формат образу диска вхідних даних. Якщо цей прапорець не вказано, його буде автоматично визначено на основі даних самого образу.

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

Ігнорувати вказану файлову систему.

Якщо не використовується --in-place, вільне місце у файловій системі не буде занулено, але наявні нульові блоки все одно буде розріджено.

Якщо використовується --in-place, файлову систему буде повністю проігноровано.

У другій формі команда призведе до ігнорування вказаної за назвою групи томів. Використовуйте назву групи томів без префікса /dev/, наприклад --ignore vg_foo

Цей параметр можна вказувати декілька разів.

Виконати розрідження на місці замість розрідження копіюванням. Див. розділ "РОЗРІДЖЕННЯ НА МІСЦІ" нижче.
Specify a key for LUKS, to automatically open a LUKS device when using the inspection. "ID" can be either the libguestfs device name, or the UUID of the LUKS device.
Використовувати вказаний "РЯДОК_КЛЮЧА" як пароль.
Прочитати пароль з файла НАЗВА_ФАЙЛА.
Прочитати параметри ключа або пароля із джерела стандартного введення. Типово програма намагається читати паролі від користувача відкриттям /dev/tty.

If there are multiple encrypted devices then you may need to supply multiple keys on stdin, one per line.

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

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

 virt-sparsify --convert qcow2 \
   -o cluster_size=512,preallocation=metadata ...
    

Цей параметр не можна поєднувати із параметром --in-place.

Цей параметр вимикає смужки поступу та інші необов'язкові до виведення дані.
Лише у режимі копіювання, використати вказаний за назвою пристрій або каталог як місце для тимчасової накладки (див. також "TMPDIR" нижче).

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

Якщо як параметр вказано каталог, визначення параметра буде рівнозначним заданню значення змінної середовища "TMPDIR".

Цей параметр не можна поєднувати із параметром --in-place.

Лише у режимі копіювання, спеціалізований параметр --tmp prebuilt:файл (де "prebuilt:" слід записувати буквально) наказує virt-sparsify використовувати як місце зберігання тимчасових даних файл qcow2 "файл".
  • Файл має бути наново форматовано як qcow2, а вхідний диск буде резервним файлом.
  • Якщо ви повторно запускатимете virt-sparsify, вам слід повторно створювати файл перед кожним запуском.
  • Virt-sparsify не вилучає цей файл.

Цей параметр використовується oVirt, де потрібен спеціальним чином форматований тимчасовий файл.

Увімкнути докладний показ повідомлень з метою діагностики.
Показати дані щодо версії і завершити роботу.
Увімкнути трасування викликів програмного інтерфейсу libguestfs.
Занулити вміст вказаного за назвою розділу або логічного тому у гостьовій системі. Усі дані на пристрої буде втрачено, але буде досягнуто чудової розрідженості! Цей параметр можна вказувати в одній команді декілька разів.

РОЗРІДЖЕННЯ НА МІСЦІ

Починаючи з virt-sparsify ≥ 1.26, програма може виконувати розрідження на місці (замість копіювання з вхідного диска до вихідного диска). Таке розрідження є ефективнішим. Втім, за його використання не можна отримати більше місця у основній системі, якщо порівнювати із розрідженням із копіюванням.

Щоб скористатися цим режимом, вкажіть образ диска, який буде змінено на місці:

 virt-sparsify --in-place disk.img

Деякі параметри несумісні із цим режимом: --convert, --compress і -o, оскільки їхнє використання вимагає загальної зміни формату диска; --check-tmpdir, оскільки великі обсяги для зберігання тимчасових даних не потрібні.

Розрідження на місці працює завдяки підтримці відкидання (або обрізання чи скасування отримання пам'яті).

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

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

Існує два способи використання цього параметра.

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

 $ virt-sparsify --machine-readable
 virt-sparsify
 ntfs
 btrfs

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

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

У поточній версії це означає таке:

1.
Повідомлення смужки поступу можна обробляти зі стандартного виведення, шукаючи їх за таким формальним виразом:

 ^[0-9]+/[0-9]+$
    
2.
Програма, яка надсилає виклик, має обробляти повідомлення, надіслані до стандартного виведення, (окрім повідомлень смужки поступу) як повідомлення щодо стану. Ці повідомлення може бути записано до журналу і/або показано користувачеві.
3.
Програма, яка надсилає виклик, має обробляти повідомлення, надіслані до stderr як повідомлення про помилки. Крім того, virt-sparcify завершує роботу із ненульовим кодом стану, якщо станеться критична помилка.

Підтримку параметра --machine-readable передбачено у всіх версіях virt-sparsify.

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

WINDOWS 8

«Швидкий запуск» Windows 8 може заважати роботі virt-sparsify. Див. "ПРИСИПЛЯННЯ WINDOWS ТА ШВИДКИЙ ЗАПУСК WINDOWS 8" in guestfs(3).

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

ТИМЧАСОВИЙ КАТАЛОГ
Розташування каталогу тимчасових даних, який використовуватиметься для потенційно великих тимчасових файлів-накладок.

У virt-sparsify ≥ 1.28 ви можете перевизначити цю змінну середовища за допомогою параметра --tmp.

На диску має бути достатньо вільного місця для найгіршого варіанта для повної копії початкового диска (віртуального розміру). Якщо місця недостатньо, слід встановити для $TMPDIR значення, яке вказує на інший каталог, де достатньо місця.

Типовим значенням є /tmp.

Зауважте, що якщо файловою системою у $TMPDIR є tmpfs (наприклад, якщо файловою системою /tmp є tmpfs, або якщо ви використовуєте "TMPDIR=/dev/shm"), типовим розміром tmpfs є максимальне значення половини фізичної оперативної пам'яті. Якщо virt-sparsify знадобиться більше місця, програма просто «повисне». Якщо ви побоюєтеся такого перебігу подій, або скористайтеся реальним диском, або збільште максимальний розмір точки монтування tmpfs, наприклад так:

 mount -o remount,size=10G /tmp
    

Якщо ви використовуєте параметр --in-place, значні обсяги місця на диску для тимчасового зберігання даних не знадобляться.

Опис інших змінних середовища наведено у розділі "ENVIRONMENT VARIABLES" in guestfs(3).

СТАН ВИХОДУ

Ця програма повертає 0, якщо дію виконано без жодної помилки (це не обов'язково означає, що місце на диску звільнилося).

Ненульовий код виходу вказує на помилку.

Якщо повернуто код виходу 3 і було використано параметр --in-place, це означає, що у libguestfs не передбачено підтримки відкидання зайвого місця на диску, отже, доведеться користуватися режимом копіювання.

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

virt-df(1), virt-filesystems(1), virt-resize(1), virt-rescue(1), guestfs(3), guestfish(1), truncate(1), fallocate(1), qemu-img(1), http://libguestfs.org/.

АВТОР

Richard W.M. Jones http://people.redhat.com/~rjones/

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

Copyright (C) 2011-2020 Red Hat Inc.

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