
=head1 НАЗВА

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

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

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

 virt-sparsify [--параметри] --in-place диск

=head1 ОПИС

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

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

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

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

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

Якщо вхідними даними є образ raw, буде виведено розріджені дані raw. B<Вам слід перевірити розмір виведених даних за допомогою інструмента, який обробляє розріджені дані>, наприклад C<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

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

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

=over 4

=item *

До використання цього інструмента віртуальну машину I<слід зупинити>.

=item *

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

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

=item *

Virt-sparsify не може змінювати розміри образів дисків. Для зміни розмірів дисків скористайтеся L<virt-resize(1)>.

=item *

Virt-sparsify не може працювати із зашифрованими дисками. У libguestfs передбачено підтримку самих зашифрованих дисків, але зашифровані диски не може бути розріджено.

=item *

Virt-sparsify ще не може розріджувати місце між розділами. Зауважте, що це місце часто використовується для критичних даних, зокрема завантажувачів, тому, насправді, воно може бути зовсім не таким зайвим, як може здатися.

=item *

У режимі копіювання внутрішні знімки qcow2 не копіюються на образ призначення.

=back

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

=head1 ПРИКЛАДИ

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

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

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

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

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

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

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

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

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

 virt-sparsify --in-place disk.img

=head1 ПАРАМЕТРИ

=over 4

=item B<--help>

Показати довідкове повідомлення.

=item B<--check-tmpdir> B<ignore>

=item B<--check-tmpdir> B<continue>

=item B<--check-tmpdir> B<warn>

=item B<--check-tmpdir> B<fail>

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

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

=over 4

=item *

B<ігнорувати> її,

=item *

вивести попередження і B<продовжити>,

=item *

B<попередити> і почекати, доки користувач натисне клавішу Enter (типова поведінка) або

=item *

B<вивести попередження про помилку> і завершити роботу.

=back

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

=item B<--colors>

=item B<--colours>

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

=item B<--compress>

Стиснути файл виведених даних. Це працює, I<лише> якщо форматом виведення даних є C<qcow2>.

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

=item B<--convert> raw

=item B<--convert> qcow2

=item B<--convert> [інші формати]

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

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

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

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

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

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

=item B<--echo-keys>

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

=item B<--format> raw

=item B<--format> qcow2

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

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

=item B<--ignore> файлова_система

=item B<--ignore> група_томів

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

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

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

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

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

=item B<--in-place>

Виконати розрідження на місці замість розрідження копіюванням. Див. розділ L</РОЗРІДЖЕННЯ НА МІСЦІ> нижче.

__INCLUDE:key-option.pod__

__INCLUDE:keys-from-stdin-option.pod__

=item B<--machine-readable>

=item B<--machine-readable>=формат

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

=item B<-o> параметр[,параметр,...]

Передати параметри I<-o> до програми L<qemu-img(1)> для коригування формату виведення даних.  Перелік доступних параметрів залежить від формату виведення (див. I<--convert>) і встановленої версії програми qemu-img.

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

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

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

=item B<-q>

=item B<--quiet>

Цей параметр вимикає смужки поступу та інші необов'язкові до виведення дані.

=item B<--tmp> блоковий_пристрій

=item B<--tmp> каталог

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

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

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

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

=item B<--tmp> prebuilt:файл

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

=over 4

=item *

Файл B<має> бути наново форматовано як qcow2, а вхідний диск буде резервним файлом.

=item *

Якщо ви повторно запускатимете virt-sparsify, вам B<слід> повторно створювати файл перед кожним запуском.

=item *

Virt-sparsify не вилучає цей файл.

=back

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

=item B<-v>

=item B<--verbose>

Увімкнути докладний показ повідомлень з метою діагностики.

=item B<-V>

=item B<--version>

Показати дані щодо версії і завершити роботу.

=item B<--wrap>

Wrap error, warning, and informative messages.  This is the default when the output is a tty.  If the output of the program is redirected to a file, wrapping is disabled unless you use this option.

=item B<-x>

Увімкнути трасування викликів програмного інтерфейсу libguestfs.

=item B<--zero> розділ

=item B<--zero> логічний_том

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

=back

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

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

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

 virt-sparsify --in-place disk.img

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

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

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

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

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

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

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

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

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

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

=over 4

=item 1.

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

 ^[0-9]+/[0-9]+$

=item 2.

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

=item 3.

Програма, яка надсилає виклик, має обробляти повідомлення, надіслані до stderr як повідомлення про помилки. Крім того, virt-sparcify завершує роботу із ненульовим кодом стану, якщо станеться критична помилка.

=back

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

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

=head1 WINDOWS 8

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

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

=over 4

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

Розташування каталогу тимчасових даних, який використовуватиметься для потенційно великих тимчасових файлів-накладок.

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

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

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

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

 mount -o remount,size=10G /tmp

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

=back

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

=head1 СТАН ВИХОДУ

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

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

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

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

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

=head1 АВТОР

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

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

Copyright (C) 2011-2020 Red Hat Inc.

