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 /domain/devices/disk/source
Знайдено 1 вузли:
-- 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,
ймовірно,
варто
записати
вихідні
дані теж у
форматі 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).
Virt-resize вирівнює
розділи на
позиції,
кратні до 128
секторів
(див.
параметр
--alignment).
Зазвичай,
це означає,
що розділи
не буде
вирівняно
за давньою
геометрією
CHS
(циліндр-голівка-сектор).
Втім,
геометрія CHS
не має
сенсу для
дисків, які
вироблено
після
ранніх 1990-х, і
зовсім не
має сенсу
для
віртуальних
жорстких
дисків.
Вирівнювання
розділів
за
циліндрами
не є
вимогою
жодної
сучасної
операційної
системи.
Якщо
гостьова
система 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 Vista і
новіших
версіях
компанія Microsoft
перейшла
до
використання
окремого
розділу
завантаження.
У
віртуальних
машинах із
цими
операційними
системами,
типово,
/dev/sda1 є
розділом
завантаження,
а
/dev/sda2 є
основним
диском (C:).
Зміна
розмірів
першого
розділу
(розділу
завантаження)
спричиняє
помилку
завантажувача
0xC0000225. Зміна
розмірів
другого
розділу
(тобто
диска C:) має
працювати.
Диск Windows, на
якому
використовується
NTFS, має бути
коректним,
перш ніж virt-resize
зможе ним
скористатися.
Якщо
спроба
виконати
дію ntfsresize
завершиться
повідомленням
про
помилку,
спробуйте
завантажити
початкову
віртуальну
машину і
запустіть
"chkdsk /f" для
усіх
розділів NTFS,
потім
завершіть
роботу
віртуальної
машини у
штатний
спосіб.
Докладнішу
інформацію
наведено
тут:
https://bugzilla.redhat.com/show_bug.cgi?id=975753
Після
зміни
розмірів Windows
може
ініціювати
тривалу
обробку chkdsk
при
першому
завантаженні,
якщо було
розширено
розділи NTFS.
Це усього
лише для
забезпечення
надійного
зберігання
даних, і
(якщо не
буде
знайдено
помилок) ви
можете
бути
спокійні.
Після
приготування
системи
гостьової
операційної
системи Windows
із
наступною
зміною її
розміру за
допомогою
virt-resize ви можете
отримати
непридатну
до
завантаження
систему,
яка
показуватиме
синій
екран
смерті із
помилкою
"UNMOUNTABLE_BOOT_VOLUME". Цю
помилку
спричинено
наявністю
рядка "ExtendOemPartition=1"
у файлі sysprep.inf.
Якщо
вилучити
цей рядок
до обробки
sysprep, проблема
зникає.
«Швидкий
запуск» Windows 8
може
заважати virt-resize
змінювати
розмір
розділів NTFS.
Див.
"ПРИСИПЛЯННЯ
WINDOWS ТА
ШВИДКИЙ
ЗАПУСК WINDOWS 8" in
guestfs(3).
Вам слід
створити
новий,
заповнений
нулями
образ
диска
призначення,
який
використовуватиме
virt-resize.
Virt-resize типово
виконує
розріджене
копіювання.
Це означає,
що
програма
не копіює
ті блоки з
початкового
диска, які
заповнено
лише
нулями. Це
підвищує
швидкість
та
ефективність
роботи, але
може
призвести
до
некоректних
результатів,
якщо на
образі
диска
призначення
є
незанулені
дані.
В
основному,
така
проблема
виникає,
якщо
образом
призначення
є розділ
основної
системи
(наприклад,
"virt-resize source.img /dev/sda4"),
оскільки
звичайні
інструменти
поділу
диска на
розділи
лишають
недоторканними
усі дані,
які раніше
зберігалися
на диску.
Якщо ви
змушені
використатися
образ
призначення,
на якому
вже
зберігалися
дані, вам
слід
скористатися
параметром
--no-sparse.
Зауважте,
що це
значно
уповільнить
роботу
програми.
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/
© Red Hat Inc., 2010–2012
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.