virt-resize(1)

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

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

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

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

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

ПРИКЛАДИ

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

     virt-filesystems --long -h --all -a старий_диск

     truncate -r старий_диск новий_диск
     truncate -s +5G новий_диск

     # Зауважте, що «/dev/sda2» є розділом у у файлі «старий_диск».
     virt-resize --expand /dev/sda2 старий_диск новий_диск

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

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

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

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

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

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

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

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

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

     # virsh dumpxml guestname | xpath -e /domain/devices/disk/source
     Found 1 nodes:
     -- NODE --
     <source dev="/dev/vg/lv_guest" />

3. Визначте поточні розміри
    Скористайтеся програмою 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 ГБ).

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

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

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

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

     # lvcreate -L 10G -n lv_name vg_name

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

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

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

     # virt-resize indisk outdisk

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7. Зміна розмірів логічних томів та інших сховищ у гостьовій системі
    (Це завдання можна виконати без завантаження гостьової системи за допомогою guestfish(1))

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

  ЗМЕНШЕННЯ РОЗМІРІВ ДИСКА ВІРТУАЛЬНОЇ МАШИНИ
Зменшення розмірів є дещо складнішим завданням за збільшення. У цьому розділі наведено лише загальний огляд.

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

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

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

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

  ІГНОРУВАННЯ І ВИЛУЧЕННЯ РОЗДІЛІВ
Крім того, virt-resize надає вам зручний спосіб ігнорувати або вилучати розділи при копіюванні з диска вхідних даних на диск вихідних даних. Ігнорування розділу пришвидшує копіювання там, де вам все одно що станеться із наявним вмістом розділу. Вилучення розділу вилучає його повністю, але зауважте, що це також призводить до перенумерування усіх розділів після вилучено, що може призвести до неможливості завантаження деяких гостьових систем.

  QCOW2 І НЕРОЗРІДЖЕНІ ФОРМАТИ RAW
Якщо дисх вхідних даних записано у форматі qcow2, ймовірно, варто записати вихідні дані теж у форматі qcow2. Крім того, virt-resize може перетворювати дані з одного формату на інший «на льоту». Формат виведених даних просто визначається форматом порожнього контейнера для виведення даних, який ви надасте. Таким чином, щоб записати виведені дані у форматі qcow2, скористайтеся такою командою:

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

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

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

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

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

  ЛОГІЧНІ РОЗДІЛИ
Розміри логічних розділів (тобто /dev/sda5+ на дисках із таблицею розділів DOS) не може бути змінено.

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

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

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

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

ПАРАМЕТРИ

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

--align-first auto
--align-first never
--align-first always
    Вирівняти перший розділ, щоб підвищити швидкодію (див. параметр --alignment).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

--LV-expand ЛОГІЧНИЙ_ТОМ
    Цій команді передається логічний том і, як останній крок, вона розширює цей том так, щоб він зайняв усе вільне місце, яке доступне у групі томів. Типовим використанням, якщо припускати, що ви працюєте із гостьовою системою Linux із єдиним фізичним томом PV /dev/sda2 і кореневим пристроєм із назвою /dev/vg_guest/lv_root, є:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

--resize РОЗДІЛ=РОЗМІР
    Змінити розмір вказаного за назвою розділу (розширити або стиснути його) так, щоб він мав вказаний розмір.

    "РОЗМІР" можна вказати як значення за модулем із додаванням суфікса 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 розширить безпосередній вміст розділу, якщо програмі відомий спосіб виконати таке розширення (див. --expand вище).

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

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

--resize-force РОЗДІЛ=РОЗМІР
    Це те саме, що і --resize, але із можливістю зменшувати розміри будь-яких розділів. Загалом, це означає, що ви можете втратити якісь дані, які зберігалися наприкінці зменшуваного розділу, але, можливо, ви цим не переймаєтеся (наприклад, якщо зменшуєте розмір невикористаного розділу або можете легко відтворити вміст розділу, зокрема розділу резервної пам'яті на диску).

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

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

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

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

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

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

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

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

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

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

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

--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.

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

ПРИДАТНЕ ДО ЧИТАННЯ КОМП'ЮТЕРОМ ВИВЕДЕННЯ
Для виведення даних у зручному для машинної обробки форматі можна скористатися параметром --machine-readable. Додавання цього параметра робить зручним використання virt-resize з інших програм, графічних інтерфейсів тощо.

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

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

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

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

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

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

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

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

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

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

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

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

ПРИМІТКИ

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

  ЗАВАНТАЖЕННЯ ГОСТЬОВОЇ СИСТЕМИ ЗУПИНЯЄТЬСЯ НА «GRUB»
Якщо гостьова система Linux не завантажується після зміни розміру, і завантаження зупиняється після виведення слова "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, скористайтеся virt-rescue(1).

  ЗМІНА РОЗМІРІВ ЗАВАНТАЖУВАЛЬНИХ РОЗДІЛІВ WINDOWS
У Windows Vista і новіших версіях компанія Microsoft перейшла до використання окремого розділу завантаження. У віртуальних машинах із цими операційними системами, типово, /dev/sda1 є розділом завантаження, а /dev/sda2 є основним диском (C:). Зміна розмірів першого розділу (розділу завантаження) спричиняє помилку завантажувача 0xC0000225. Зміна розмірів другого розділу (тобто диска C:) має працювати.

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

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

  СИНІЙ ЕКРАН СМЕРТІ UNMOUNTABLE_BOOT_VOLUME У WINDOWS
Після приготування системи гостьової операційної системи Windows із наступною зміною її розміру за допомогою virt-resize ви можете отримати непридатну до завантаження систему, яка показуватиме синій екран смерті із помилкою "UNMOUNTABLE_BOOT_VOLUME". Цю помилку спричинено наявністю рядка "ExtendOemPartition=1" у файлі sysprep.inf. Якщо вилучити цей рядок до обробки sysprep, проблема зникає.

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

  РОЗРІДЖЕНЕ КОПІЮВАННЯ
Вам слід створити новий, заповнений нулями образ диска призначення, який використовуватиме virt-resize.

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

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

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

  "unknown/unavailable method for expanding the TYPE filesystem on DEVICE/LV"
Virt-resize було наказано розширити розділ або логічний том, на якому міститься файлова система типу "TYPE", але програмі недоступний або невідомий спосіб розширення цієї файлової системи.

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

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

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

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

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

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

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

In both cases, virt-resize will not expand the mentioned filesystem; the result (unless --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.

АЛЬТЕРНАТИВНІ ІНСТРУМЕНТИ
Існує декілька пропрієтарних інструментів для зміни розмірів розділів. Тут ми не будемо згадувати назви жодного з таких інструментів.

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

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

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

СТАН ВИХОДУ
Ця програма повертає значення 0 у разі успішного завершення і ненульове значення, якщо сталася помилка.

ТАКОЖ ПЕРЕГЛЯНЬТЕ
virt-filesystems(1), virt-df(1), guestfs(3), guestfish(1), lvm(8), pvresize(8), lvresize(8), resize2fs(8), ntfsresize(8), btrfs(8), xfs_growfs(8), resize.f2fs(8), virsh(1), parted(8), truncate(1), fallocate(1), grub(8), grub-install(8), virt-rescue(1), virt-sparsify(1), virt-alignment-scan(1), http://libguestfs.org/.

АВТОР
Richard W.M. Jones http://people.redhat.com/~rjones/

АВТОРСЬКІ ПРАВА
Copyright (C) 2010-2025 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.