
=head1 НАЗВА

virt-resize — програма для зміни розмірів дисків віртуальної машини

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

 virt-resize [--resize /dev/sdaN=[+/-]<розмір>[%]]
   [--expand /dev/sdaN] [--shrink /dev/sdaN]
   [--ignore /dev/sdaN] [--delete /dev/sdaN] [...] вхідний_диск вихідний_диск

=head1 ОПИС

Virt-resize — програма, за допомогою якої можна змінити розміри диска
віртуальної машини, зробивши його більшим або меншим чи змінивши розміри
розділів, які містяться на диску, або вилучивши їх.

Virt-resize B<не може> змінювати розмір образів дисків «на
місці». Virt-resize B<не слід> використовувати для активних віртуальних
машин — щоб отримати належний результат, перш ніж змінювати розміри дисків,
зупиніть роботу віртуальної машини.

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

=head1 ПРИКЛАДИ

=over 4

=item 1.

У цьому прикладі ми візьмемо C<старий_диск>, змінимо його розміри і запишемо
як C<новий_диск>, розширивши один із розділів гостьової системи на додаткові
5 ГБ:

 virt-filesystems --long -h --all -a старий_диск
 
 truncate -r старий_диск новий_диск
 truncate -s +5G новий_диск
 
 # Зауважте, що «/dev/sda2» є розділом у у файлі «старий_диск».
 virt-resize --expand /dev/sda2 старий_диск новий_диск

=item 2.

Те саме, що і вище, але зі збільшенням розділу /boot на 200 МБ, з наданням
решти місця для /dev/sda2:

 virt-resize --resize /dev/sda1=+200M --expand /dev/sda2 \
   старий_диск новий_диск

=item 3.

Як у першому прикладі, але із розширенням логічного тому на останньому
кроці. Саме цю команду типово використовують для гостьових систем Linux, де
використовується LVM:

 virt-resize --expand /dev/sda2 --LV-expand /dev/vg_guest/lv_root \
   старий_диск новий_диск

=item 4.

Як у першому прикладі, але дані буде виведено у форматі qcow2, а не у
простому (raw) форматі:

 qemu-img create -f qcow2 -o preallocation=metadata newdisk.qcow2 15G
 virt-resize --expand /dev/sda2 olddisk newdisk.qcow2

=back

=head1 ДОКЛАДНІШЕ ЩОДО ВИКОРИСТАННЯ

=head2 РОЗШИРЕННЯ ДИСКА ВІРТУАЛЬНОЇ МАШИНИ

=over 4

=item 1. Припиніть роботу віртуальної машини

=item 2. Встановіть розташування образу диска із вхідними даними

Встановіть розташування образу диска із вхідними даними (тобто файла або
пристрою у основній системі, де містяться дані диска гостьової
системи). Якщо гостьовою системою керує libvirt, ви можете скористатися для
визначення назви образу диска командою C<virsh dumpxml>, ось так:

 # virsh dumpxml guestname | xpath /domain/devices/disk/source
 Знайдено 1 вузли:
 -- NODE --
 <source dev="/dev/vg/lv_guest" />

=item 3. Визначте поточні розміри

Скористайтеся програмою L<virt-filesystems(1)> для перегляду списку поточних
розділів і їхніх розмірів:

 # virt-filesystems --long --parts --blkdevs -h -a /dev/vg/lv_guest
 Name       Type       Size  Parent
 /dev/sda1  partition  101M  /dev/sda
 /dev/sda2  partition  7.9G  /dev/sda
 /dev/sda   device     8.0G  -

(У цьому прикладі маємо справу з віртуальною машиною з диском у 8 ГБ, який
ми хочемо розширити до 10 ГБ).

=item 4. Створіть диск для виведення даних

Virt-resize не може виконувати внесення змін до дисків «на місці». У вашій
системі має бути достатньо місця для зберігання диска-результату зі зміненим
розміром.

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

 # rm -f outdisk
 # truncate -s 10G outdisk

Або скористайтеся L<lvcreate(1)> для створення логічного тому:

 # lvcreate -L 10G -n lv_name vg_name

Або скористайтеся L<virsh(1)> vol-create-as для створення тому сховища даних
libvirt:

 # virsh pool-list
 # virsh vol-create-as poolname newvol 10G

=item 5. Зміна розміру

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

 # virt-resize indisk outdisk

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

Реалістичнішим буде варіант, коли вам потрібно розширити наявні розділи на
образі диска передаванням додаткових параметрів (повний список параметрів
наведено у розділі L</ПАРАМЕТРИ> нижче).

L</--expand> є найкориснішим параметром. За його допомогою можна розширити
вказаний за назвою розділ на диску так, щоб він зайняв усе зайве місце:

 # virt-resize --expand /dev/sda2 indisk outdisk

(У цьому випадку наприкінці диска I<не> створюватиметься додаткових
розділів, оскільки невикористаного місця просто не буде).

L</--resize> — ще один широковживаний параметр. Наступна команда збільшить
розмір /dev/sda1 на 200 МБ і розширить /dev/sda2 так, щоб той заповнив решту
доступного місця:

 # virt-resize --resize /dev/sda1=+200M --expand /dev/sda2 \
     indisk outdisk

Якщо на розширюваному розділі у образі міститься файлова система або
фізичний том LVM, тоді, якщо virt-resize відомий спосіб, програма змінить
розміри вмісту так, як це роблять виклики команд L<pvresize(8)>,
L<resize2fs(8)>, L<ntfsresize(8)>, L<btrfs(8)>, L<xfs_growfs(8)> або
L<resize.f2fs(8)>. Втім, virt-resize не відомі способи зміни розмірів деяких
файлових систем, тому вам доведеться якось змінювати їхні розміри після
завантаження гостьової системи.

 # virt-resize --expand /dev/sda2 nbd://example.com outdisk

Диском із вхідними даними може бути адреса, якщо як джерело слід використати
віддалений диск. Формат адреси є сумісним із
guestfish. Див. L<guestfish(1)/ДОДАВАННЯ ВІДДАЛЕНОГО СХОВИЩА>.

Інші параметри описано нижче.

=item 6. Перевірка

Виконайте належне тестування нового образу диска, I<перш ніж> витирати
старий.

Якщо ви користуєтеся libvirt, внесіть зміни до XML так, щоб він вказував на
новий диск:

 # virsh edit назва_гостьової_системи

Змініть E<lt>source ...E<gt>,
див. L<http://libvirt.org/formatdomain.html#elementsDisks>

Далі, запустіть домен з новим диском, розмір якого було змінено:

 # virsh start назва_гостьової_системи

і перевірте, чи все лишається працездатним. Див. також додаткові зауваження
у розділі L</ПРИМІТКИ> нижче.

=item 7. Зміна розмірів логічних томів та інших сховищ у гостьовій системі

(Це завдання можна виконати без завантаження гостьової системи за допомогою
L<guestfish(1)>)

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

=back

=head2 ЗМЕНШЕННЯ РОЗМІРІВ ДИСКА ВІРТУАЛЬНОЇ МАШИНИ

Зменшення розмірів є дещо складнішим завданням за збільшення. У цьому
розділі наведено лише загальний огляд.

По-перше, virt-resize не робитиме спроб стиснути будь-який вміст розділу
(фізичні томи, файлові системи). Користувачеві слід подбати про зменшення
розмірів вмісту до передавання диска на обробку до virt-resize, і
virt-resize перевірить, чи було стиснено вміст належним чином.

(Зменшення розмірів також можна виконати без завантаження системи за
допомогою L<guestfish(1)>)

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

Потім запустіть virt-resize із відповідними параметрами I<--shrink> і/або
I<--resize>.

=head2 ІГНОРУВАННЯ І ВИЛУЧЕННЯ РОЗДІЛІВ

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

=head2 QCOW2 І НЕРОЗРІДЖЕНІ ФОРМАТИ RAW

Якщо дисх вхідних даних записано у форматі qcow2, ймовірно, варто записати
вихідні дані теж у форматі qcow2. Крім того, virt-resize може перетворювати
дані з одного формату на інший «на льоту». Формат виведених даних просто
визначається форматом порожнього контейнера для виведення даних, який ви
надасте. Таким чином, щоб записати виведені дані у форматі qcow2,
скористайтеся такою командою:

 qemu-img create -f qcow2 -o preallocation=metadata outdisk [розмір]

замість команди truncate.

Так само, щоб отримати дані у нерозрідженому простому форматі (raw)
скористайтеся такою командою:

 fallocate -l розмір вихідний_диск

(у застарілих системах, де немає команди L<fallocate(1)>, скористайтеся
командою C<dd if=/dev/zero of=outdisk bs=1M count=..>)

=head2 ЛОГІЧНІ РОЗДІЛИ

Розміри логічних розділів (тобто F</dev/sda5+> на дисках із таблицею
розділів DOS) не може бути змінено.

Щоб розібратися у тому, що відбувається, по-перше, слід пам'ятати, що один
із чотирьох розділів F</dev/sda1-4> матиме тип розділу MBR C<05> або
C<0f>. Такий розділ називається B<розширеним розділом>. Для перегляду типу
розділу MBR скористайтеся L<virt-filesystems(1)>.

Логічні розділи містяться у розширеному розділі.

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

Вказати логічний розділ (F</dev/sda5+>) у рядку команди не можна. Якщо ви це
зробите, програма повідомить про помилку.

=head1 ПАРАМЕТРИ

=over 4

=item B<--help>

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

=item B<--align-first> B<auto>

=item B<--align-first> B<never>

=item B<--align-first> B<always>

Вирівняти перший розділ, щоб підвищити швидкодію (див. параметр
I<--alignment>).

Типовою поведінкою є використання параметра I<--align-first auto>, який
вирівнює лише перший розділ, якщо це безпечно робити. Тобто, лише якщо
програмі достеменно відомо, як виправити завантажувач автоматично, і, у
поточній версії, лише для гостьових систем Windows.

I<--align-first never> означає, що пересування першого розділу ніколи не
відбуватиметься. Це найбезпечніший варіант. Скористайтеся ним, якщо після
зміни розмірів гостьова система відмовляється завантажуватися.

I<--align-first always> означає, що завжди відбуватиметься вирівнювання
першого розділу (якщо його треба вирівнювати). Для деяких гостьових систем
це може завадити роботи завантажувача, зробивши гостьову систему непридатною
до завантаження.

=item B<--alignment> N

Встановити вирівнювання розділів на межу C<N> секторів. Типовою у
virt-resize E<lt> 1.13.19 було межа у 64 сектори. Після цієї версії типове
значення було змінено на 128 секторів.

Якщо припускати розмір сектора у гостьовій системі у 512 байтів, ось
придатні значення для цього параметра:

=over 4

=item I<--alignment 1> (512 байтів)

Розділи буде розташовано поруч один із одним якомога ближче, але буде не
вирівняно. У деяких випадках це може призвести до жахливої втрати
швидкодії. Докладніший опис можна знайти на сторінці підручника щодо
L<virt-alignment-scan(1)>.

=item I<--alignment 8> (4K)

Це мінімальне прийнятне вирівнювання для придатного значення швидкодії на
сучасних основних системах.

=item I<--alignment 128> (64K)

Таке вирівнювання надасть змогу скористатися непоганою швидкодією, якщо
основна система зберігається на високоякісних носіях для мережі.

=item I<--alignment 2048> (1M)

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

=back

=item B<--colors>

=item B<--colours>

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

=item B<-d>

=item B<--debug>

(Застарілий: використовуйте замість нього I<-v>)

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

=item B<--delete> РОЗДІЛ

Вилучити вказаний за назвою розділ. Точнішим визначенням цієї дії буде «не
копіювати», оскільки virt-resize не вносить зміни до початкового образу
диска.

Зауважте, що коли ви вилучаєте розділ, вилучаються і усі дані, які
зберігалися на ньому. Більше того, у результаті усі розділи за вилученим
I<перенумеровуються>, що може призвести до неможливості завантаження
гостьової системи.

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

=item B<--expand> РОЗДІЛ

Розширити вказаний за назвою розділ так, щоб він зайняв усе вільне місце
(місце, яке лишатиметься вільним після усіх інших вказаних вами змін у
розмірах).

Якщо virt-resize відомий спосіб, програма розширить безпосередній вміст
розділу. Наприклад, якщо розділ є фізичним томом LVM, програма розширить
фізичний том так, щоб він зайняв усе місце (подібно до виклику
L<pvresize(8)>). Якщо спосіб розширення виявиться невідомим virt-resize,
програма не чіпатиме вмісту розділу.

У поточній версії virt-resize може змінювати розміри таких файлових систем:

=over 4

=item *

Файлових систем ext2, ext3 і ext4.

=item *

Файлових систем NTFS, якщо libguestfs було зібрано з підтримкою NTFS.

Роботу файлової системи під час її останнього використання має бути
завершено у штатному режимі. Крім того, L<ntfsresize(8)> позначає файлові
системи зі зміненими розмірами як такі, що потребують перевірки, отже під
час першого наступного запуску Windows на розділі зі зміненим розміром буде
виконано перевірку диска.

=item *

Фізичні томи LVM. Зазвичай, virt-resize не змінює розміри вмісту фізичних
томів, втім, див. параметр I<--LV-expand>. Користувач також може змінити
розміри логічних томів бажаним чином після завантаження системи.

=item *

Файлові системи btrfs, якщо libguestfs було зібрано із підтримкою btrfs.

=item *

Файлові системи XFS, якщо libguestfs було зібрано із підтримкою XFS.

=item *

Розділи резервної пам'яті на диску Linux.

Будь ласка, зауважте, що libguestfs I<знищує> наявний вміст розділу
резервної пам'яті на диску, відтворюючи його за допомогою C<mkswap>, тому
такі розділи не слід використовувати, якщо гостьова система присипляється.

=item *

Файлові системи f2fs, якщо libguestfs було зібрано із підтримкою f2fs.

=back

Зауважте, що параметри I<--expand> і I<--shrink> не можна використовувати у
одній і тій самій команді.

=item B<--format> B<raw>

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

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

Зауважте, що цей параметр I<не> впливає на формат виведених
даних. Див. L</QCOW2 І НЕРОЗРІДЖЕНІ ФОРМАТИ RAW>.

=item B<--ignore> РОЗДІЛ

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

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

=item B<--LV-expand> ЛОГІЧНИЙ_ТОМ

Цій команді передається логічний том і, як останній крок, вона розширює цей
том так, щоб він зайняв усе вільне місце, яке доступне у групі
томів. Типовим використанням, якщо припускати, що ви працюєте із гостьовою
системою Linux із єдиним фізичним томом PV F</dev/sda2> і кореневим
пристроєм із назвою F</dev/vg_guest/lv_root>, є:

 virt-resize indisk outdisk \
   --expand /dev/sda2 --LV-expand /dev/vg_guest/lv_root

Ця команда спершу розширить розділ (і фізичний том), а потім розширить
кореневий пристрій так, що він займе усе наявне зайве місце на фізичному
томі.

Розмір вмісту логічного тому також буде змінено, якщо virt-resize відомий
спосіб, як це зробити. Ви можете заборонити virt-resize змінювати розміри
вмісту за допомогою параметра I<--no-expand-content>.

Скористайтеся L<virt-filesystems(1)> для отримання списку файлових систем у
гостьовій системі.

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

=item B<--machine-readable>

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

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

=item B<-n>

=item B<--dry-run>

Вивести резюме щодо дій, але не виконувати ці дії.

=item B<--no-copy-boot-loader>

Типово, virt-resize копіює деякі сектори на початку диска (аж до початку
першого розділу). Найчастіше, у цих секторах міститься Master Boot Record
(MBR) та завантажувач. Вони потрібні для того, щоб гостьова система
завантажувалася належним чином.

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

=item B<--no-extra-partition>

Типово, virt-resize створює додатковий розділ, якщо буде виявлено зайве
невикористане місце після усіх змін розмірів. Скористайтеся цим параметром
для того, щоб запобігти створенню цього додаткового розділу. Якщо ви так
зробите, зайве місце буде недоступним, аж доки ви не запустите fdisk, parted
або якийсь інший інструмент поділу на розділи у гостьовій системі.

Зауважте, що якщо зайвого місця виявиться менше за 10 МБ, додатковий розділ
не створюватиметься.

=item B<--no-expand-content>

Типово, virt-resize намагатиметься розширити безпосередній вміст розділів,
якщо програмі відомий спосіб виконати таке розширення (див. параметр
I<--expand> вище).

Якщо ви вкажете параметр I<--no-expand-content>, virt-resize не виконуватиме
таких спроб.

=item B<--no-sparse>

Вимкнути розріджене копіювання. Див. L</РОЗРІДЖЕНЕ КОПІЮВАННЯ> нижче.

=item B<--ntfsresize-force>

Передавання параметра I<--force> до L<ntfsresize(8)> уможливить зміну
розмірів, навіть якщо диск NTFS буде позначено як такий, що потребує
перевірки коректності. Вам доведеться скористатися цим параметром, якщо ви
хочете змінити розміри гостьової системи Windows без потреби у завантаженні
Windows кожного разу між командами зміни розмірів.

=item B<--output-format> B<raw>

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

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

Зауважте, що цей параметр I<не створює> образ диска у визначеному
форматі. Цей параметр призначено лише для того, щоб libguestfs не намагалася
вгадати формат. Створити диск у належному форматі маєте ви
самі. Див. L</QCOW2 І НЕРОЗРІДЖЕНІ ФОРМАТИ RAW>.

=item B<-q>

=item B<--quiet>

Не виводити резюме.

=item B<--resize> РОЗДІЛ=РОЗМІР

Змінити розмір вказаного за назвою розділу (розширити або стиснути його)
так, щоб він мав вказаний розмір.

C<РОЗМІР> можна вказати як значення за модулем із додаванням суфікса b/K/M/G
на позначення байтів, кілобайтів, мегабайтів або гігабайтів, або як відсоток
від поточного розміру, або як відносну частку. Приклад:

 --resize /dev/sda2=10G

 --resize /dev/sda4=90%

 --resize /dev/sda2=+1G

 --resize /dev/sda2=-200M

 --resize /dev/sda1=+128K

 --resize /dev/sda1=+10%

 --resize /dev/sda1=-10%

Ви можете збільшити розмір будь-якого розділу. Virt-resize розширить
безпосередній вміст розділу, якщо програмі відомий спосіб виконати таке
розширення (див. I<--expand> вище).

I<Зменшити> розмір розділів, які містять файлові системи або фізичні томи,
можна лише якщо ці файлові системи або фізичні томи вже зменшено у розмірах
всередині розділу. Virt-resize виконає перевірку виконання цієї умови до
того, як розпочне обробку даних. Якщо умову не виконано, програма повідомить
про помилку (див. також I<--resize-force>).

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

=item B<--resize-force> РОЗДІЛ=РОЗМІР

Це те саме, що і I<--resize>, але із можливістю зменшувати розміри будь-яких
розділів. Загалом, це означає, що ви можете втратити якісь дані, які
зберігалися наприкінці зменшуваного розділу, але, можливо, ви цим не
переймаєтеся (наприклад, якщо зменшуєте розмір невикористаного розділу або
можете легко відтворити вміст розділу, зокрема розділу резервної пам'яті на
диску).

Див. також опис параметра I<--ignore>.

=item B<--shrink> РОЗДІЛ

Зменшити вказаний за назвою розділ у розмірах так, щоб увесь образ диска
вмістився у образ призначення. Вказаний за назвою розділ B<має> містити
файлову систему або фізичний том, які вже було зменшено у розмірах за
допомогою іншого засобу (наприклад L<guestfish(1)> або інших
програм). Virt-resize виконає перевірку виконання цієї умови і повідомить
про помилку, якщо попереднього зменшення файлової системи або фізичного тому
не виконано.

Об'єм, на який має бути зменшено увесь диск (після виконання усіх інших дій,
вказаних користувачем), називається «дефіцитом». Наприклад, просте
копіювання (якщо не виконується жодних інших дій) з образу диска у 5 ГБ на
образ диска у 4 ГБ дає дефіцит у 1 ГБ. У цьому випадку virt-resize
повідомить про помилку, якщо користувач не вказав такий розділ для
стискання, на якому є понад гігабайт вільного місця.

Зауважте, що параметри I<--expand> і I<--shrink> не можна використовувати у
одній і тій самій команді.

=item B<--unknown-filesystems> B<ignore>

=item B<--unknown-filesystems> B<warn>

=item B<--unknown-filesystems> B<error>

Налаштувати поведінку virt-resize, якщо програмі надійшла команда розширити
файлову систему, а у libguestfs не передбачено її підтримки і virt-resize не
знає способу, як розширити вміст файлової системи.

Використання параметра I<--unknown-filesystems ignore> призведе до того, що
virt-resize без додаткових повідомлень ігноруватиме такі файлові системи і
нічого не виводитиме щодо них.

Використання параметра I<--unknown-filesystems warn> (типове поведінка)
призводитиме до того, що virt-resize попереджатиме про кожну файлову
систему, яку не може бути розширено, але продовжуватиме зміну розмірів
розділів на диску.

Використання параметра I<--unknown-filesystems error> призведе до того, що
virt-resize повідомлятиме про помилку, якщо виявить файлову систему, розміри
якої не можна збільшити.

Див. також L</"unknown/unavailable method for expanding the TYPE filesystem
on DEVICE/LV">.

=item B<-v>

=item B<--verbose>

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

=item B<-V>

=item B<--version>

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

=item B<-x>

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

=back

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

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

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

По-перше, можна скористатися ним без інших параметрів для того, щоб
дізнатися про можливості виконуваного файла virt-resize. Типові виведені
дані виглядатимуть так:

 $ virt-resize --machine-readable
 virt-resize
 ntfsresize-force
 32bitok
 ntfs
 btrfs

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

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

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

=over 4

=item 1.

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

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

=item 2.

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

=item 3.

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

=back

У версіях програми до 1.13.9 не передбачено використання параметра
I<--machine-readable>. Якщо цей параметр буде використано для такої версії,
програма поверне повідомлення про помилку.

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

=head1 ПРИМІТКИ

=head2 «Розділ 1 не закінчується на межі циліндра.»

Virt-resize вирівнює розділи на позиції, кратні до 128 секторів
(див. параметр I<--alignment>). Зазвичай, це означає, що розділи не буде
вирівняно за давньою геометрією CHS (циліндр-голівка-сектор). Втім,
геометрія CHS не має сенсу для дисків, які вироблено після ранніх 1990-х, і
зовсім не має сенсу для віртуальних жорстких дисків. Вирівнювання розділів
за циліндрами не є вимогою жодної сучасної операційної системи.

=head2 ЗАВАНТАЖЕННЯ ГОСТЬОВОЇ СИСТЕМИ ЗУПИНЯЄТЬСЯ НА «GRUB»

Якщо гостьова система Linux не завантажується після зміни розміру, і
завантаження зупиняється після виведення слова C<GRUB> до консолі, спробуйте
перевстановити grub.

 guestfish -i -a newdisk
 ><fs> cat /boot/grub/device.map
 # check the contents of this file are sensible or
 # edit the file if necessary
 ><fs> grub-install / /dev/vda
 ><fs> exit

Для гнучкішого переналаштовування гостьової системи, зокрема випадків, коли
вам потрібно вказати інші параметри grub-install, скористайтеся
L<virt-rescue(1)>.

=head2 ЗМІНА РОЗМІРІВ ЗАВАНТАЖУВАЛЬНИХ РОЗДІЛІВ WINDOWS

У Windows Vista і новіших версіях компанія Microsoft перейшла до
використання окремого розділу завантаження. У віртуальних машинах із цими
операційними системами, типово, F</dev/sda1> є розділом завантаження, а
F</dev/sda2> є основним диском (C:). Зміна розмірів першого розділу (розділу
завантаження) спричиняє помилку завантажувача C<0xC0000225>. Зміна розмірів
другого розділу (тобто диска C:) має працювати.

=head2 WINDOWS CHKDSK

Диск Windows, на якому використовується NTFS, має бути коректним, перш ніж
virt-resize зможе ним скористатися. Якщо спроба виконати дію ntfsresize
завершиться повідомленням про помилку, спробуйте завантажити початкову
віртуальну машину і запустіть C<chkdsk /f> для усіх розділів NTFS, потім
завершіть роботу віртуальної машини у штатний спосіб. Докладнішу інформацію
наведено тут: L<https://bugzilla.redhat.com/show_bug.cgi?id=975753>

I<Після зміни розмірів> Windows може ініціювати тривалу обробку chkdsk при
першому завантаженні, якщо було розширено розділи NTFS. Це усього лише для
забезпечення надійного зберігання даних, і (якщо не буде знайдено помилок)
ви можете бути спокійні.

=head2 СИНІЙ ЕКРАН СМЕРТІ UNMOUNTABLE_BOOT_VOLUME У WINDOWS

Після приготування системи гостьової операційної системи Windows із
наступною зміною її розміру за допомогою virt-resize ви можете отримати
непридатну до завантаження систему, яка показуватиме синій екран смерті із
помилкою C<UNMOUNTABLE_BOOT_VOLUME>. Цю помилку спричинено наявністю рядка
C<ExtendOemPartition=1> у файлі sysprep.inf. Якщо вилучити цей рядок до
обробки sysprep, проблема зникає.

=head2 WINDOWS 8

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

=head2 РОЗРІДЖЕНЕ КОПІЮВАННЯ

Вам слід створити новий, заповнений нулями образ диска призначення, який
використовуватиме virt-resize.

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

В основному, така проблема виникає, якщо образом призначення є розділ
основної системи (наприклад, S<C<virt-resize source.img /dev/sda4>>),
оскільки звичайні інструменти поділу диска на розділи лишають недоторканними
усі дані, які раніше зберігалися на диску.

Якщо ви змушені використатися образ призначення, на якому вже зберігалися
дані, вам слід скористатися параметром I<--no-sparse>. Зауважте, що це
значно уповільнить роботу програми.

=head2 "unknown/unavailable method for expanding the TYPE filesystem on DEVICE/LV"

Virt-resize було наказано розширити розділ або логічний том, на якому
міститься файлова система типу C<TYPE>, але програмі недоступний або
невідомий спосіб розширення цієї файлової системи.

Причиною може бути будь-що із наведеного нижче:

=over 4

=item 1.

Відповідна файлова система недоступна у libguestfs, оскільки у основній
системі немає належного пакунка із інструментами для роботи з цією файловою
системою. Таке, зазвичай, трапляється із файловими системами C<btrfs>,
C<ntfs>, C<xfs> та C<f2fs>.

Спробуйте такі команди:

 virt-resize --machine-readable
 guestfish -a /dev/null run : available
 guestfish -a /dev/null run : filesystem_available TYPE

У цьому випадку достатньо встановити належні пакунки із підтримкою файлових
систем. Наприклад, достатньо встановити C<libguestfs-xfs> у Red Hat
Enterprise Linux, CentOS, Debian, Ubuntu та дистрибутивах, які від них
походять, щоб можна було працювати із файловою системою C<xfs>.

=item 2.

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

У цьому випадку нічого не поробиш: virt-resize не зможе розширити файлову
систему цього типу.

=back

In both cases, virt-resize will not expand the mentioned filesystem; the
result (unless I<--unknown-filesystems error> is specified)  is that the
partitions containing such filesystems will be actually bigger as requested,
but the filesystems will still be usable at their older sizes.

=head1 АЛЬТЕРНАТИВНІ ІНСТРУМЕНТИ

Існує декілька пропрієтарних інструментів для зміни розмірів розділів. Тут
ми не будемо згадувати назви жодного з таких інструментів.

L<parted(8)> і її графічний інтерфейс, gparted, можуть виконувати певні типи
дій із зміни розміру образів дисків. Ці програми можуть змінювати розмір і
пересувати розділи, але не слід вважати, що вони можуть виконувати будь-які
дії із вмістом розділів, і, звичайно ж, вони не можуть працювати з LVM.

L<guestfish(1)> може виконувати усі ті дії, які може виконувати virt-resize,
і набагато більше, але на суттєво нижчому рівні. Ймовірно, вам доведеться
вручну обчислювати відступи у секторах, робити те, що за означенням має
робити virt-resize. Якщо хочете дізнатися, які команди у guestfish запускає
virt-resize, скористайтеся параметром I<--debug>.

До складу L<dracut(8)> включено модуль із назвою C<dracut-modules-growroot>,
яким можна скористатися для збільшення розмірів кореневого розділу під час
першого завантаження гостьової системи. Документацію з цього модуля наведено
у пов'язаному із ним файлі README.

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

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

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

L<virt-filesystems(1)>, L<virt-df(1)>, L<guestfs(3)>, L<guestfish(1)>,
L<lvm(8)>, L<pvresize(8)>, L<lvresize(8)>, L<resize2fs(8)>,
L<ntfsresize(8)>, L<btrfs(8)>, L<xfs_growfs(8)>, L<resize.f2fs(8)>,
L<virsh(1)>, L<parted(8)>, L<truncate(1)>, L<fallocate(1)>, L<grub(8)>,
L<grub-install(8)>, L<virt-rescue(1)>, L<virt-sparsify(1)>,
L<virt-alignment-scan(1)>, L<http://libguestfs.org/>.

=head1 АВТОР

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

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

© Red Hat Inc., 2010–2012

