File: virt-rescue.pod

package info (click to toggle)
libguestfs 1%3A1.44.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 118,932 kB
  • sloc: ansic: 458,017; ml: 51,424; sh: 13,191; java: 9,578; makefile: 7,931; cs: 6,328; haskell: 5,674; python: 3,871; perl: 3,528; erlang: 2,446; xml: 1,347; ruby: 350; pascal: 257; javascript: 157; lex: 135; yacc: 128; cpp: 10
file content (535 lines) | stat: -rw-r--r-- 25,446 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535

=head1 НАЗВА

virt-rescue — запуск оболонки відновлення у віртуальній машині

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

 virt-rescue [--параметри] -d назва_домену

 virt-rescue [--параметри] -a диск.img [-a диск.img ...] [-i]

Старий стиль:

 virt-rescue [--параметри] назва_домену

 virt-rescue [--параметри] диск.img [диск.img ...]

=head1 ОПИС

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

Ви можете запускати virt-rescue для будь-якої віртуальної машини, відомої
libvirt, або безпосередньо для образів дисків:

 virt-rescue -d Назва_гостьової_системи -i

 virt-rescue --ro -a /шлях/до/диск.img -i

 virt-rescue -a /dev/sdc

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

При роботі з virt-rescue над віртуальною машиною або образом диска ви
матимете справу із інтерактивною командною оболонкою bash, у якій можна
скористатися багатьма звичайними командами Linux. Те, що зберігатиметься у
F</> (F</bin>, F</lib> тощо) є рятівною базовою системою. Для роботи з
файловими системами віртуальної машини вам слід їх змонтувати. Для
монтування файлових систем передбачено порожній каталог із назвою
F</sysroot>.

Щоб автоматично змонтувати файлові системи віртуальної машини до
F</sysroot>, скористайтеся параметром I<-i>. У відповідь програма використає
засоби інспектування libguestfs для виявлення файлових систем і монтування
їх до належних каталогів. Ви також можете змонтувати окремі файлові системи
за допомогою параметра  I<-m>.

Іншим способом монтування є отримання списку логічних томів (за допомогою
L<lvs(8)>) і розділів (за допомогою L<parted(8)>) і монтування їх вручну:

 ><rescue> lvs
 LV      VG        Attr   LSize   Origin Snap%  Move Log Copy%  Convert
 lv_root vg_f15x32 -wi-a-   8.83G
 lv_swap vg_f15x32 -wi-a- 992.00M
 ><rescue> mount /dev/vg_f15x32/lv_root /sysroot
 ><rescue> mount /dev/vda1 /sysroot/boot
 ><rescue> ls /sysroot

Іншою програмою для побудови списку доступних файлових систем є
L<virt-filesystems(1)>.

Для запуску програм у гостьовій системі Linux (наприклад, програми grub) вам
слід спочатку змінити кореневий каталог на /sysroot:

 ><rescue> chroot /sysroot

=head2 ПРИМІТКИ

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

Ви можете наказати virt-rescue створити для вас тестовий диск. Це корисно
для тестування інструментів Linux (див. I<--scratch>).

Для роботи virt-rescue не потрібні права користувача root. Вам знадобляться
права доступу root, лише якщо вам потрібні права root для відкриття образу
диска.

Цю програму було розроблено для швидкої інтерактивної роботи з віртуальною
машиною. Для структурованішого доступу до образу диска віртуальної машини
варто використовувати L<guestfs(3)>. Структурованою командною оболонкою для
внесення змін до гостьової системи за певним сценарієм є L<guestfish(1)>.

=head1 ПАРАМЕТРИ

=over 4

=item B<--help>

Показати коротку довідку.

=item B<-a> ФАЙЛ

=item B<--add> ФАЙЛ

Додати I<ФАЙЛ>, який має бути образом диска з віртуальної машини. Якщо у
віртуальній машині декілька блокових пристроїв, вам слід вказати їх усі за
допомогою окремих записів параметра I<-a>.

Формат образу диска визначається автоматично. Щоб перевизначити його і
примусово використати певний формат, скористайтеся параметром
I<--format=..>.

=item B<-a> адреса

=item B<--add> адреса

Додати віддалений диск. Див. L<guestfish(1)/ДОДАВАННЯ ВІДДАЛЕНОГО СХОВИЩА>.

=item B<--append> ПАРАМЕТРИ_ЯДРА

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

__INCLUDE:blocksize-option.pod__

=item B<-c> адреса

=item B<--connect> адреса

Якщо використовується libvirt, встановити з’єднання з вказаним I<URI>. Якщо
пропущено, з’єднання буде встановлено з типовим гіпервізором libvirt.

Якщо вказати блокові пристрої гостьових систем безпосередньо (I<-a>),
libvirt не буде використовуватися взагалі.

=item B<-d> гість

=item B<--domain> гість

Додати всі диски з вказаної гостьової системи libvirt. UUID доменів можна
використовувати замість назв.

=item B<-e none>

Вимкнути клавішу екранування.

=item B<-e> КЛАВІША

Встановлює для керівних клавіш вказану послідовність натискання
клавіш. Типовою є C<^]>. Для визначення керівних клавіш ви можете
скористатися такими рядками:

=over 4

=item C<^x>

Клавіша Ctrl + клавіша C<x>.

=item C<none>

I<-e none> означає «без клавіші екранування», екранування вимкнено.

=back

Див. L</КЛАВІША ЕКРАНУВАННЯ> нижче, щоб дізнатися більше.

=item B<--format=raw|qcow2|..>

=item B<--format>

Типовим значенням для параметра I<-a> є автоматичне визначення формату
образу диска. Використання цього параметра примусово визначає значення
параметрів I<-a> формату диска у наступному рядку команди. Використання
параметра I<--format> без аргументу перемикає програму у режим автоматичного
визначення у наступних параметрах I<-a>.

Приклад:

 virt-rescue --format=raw -a диск.img

примусове встановлення формату без обробки (без автоматичного визначення)
для F<disk.img>.

 virt-rescue --format=raw -a диск.img --format -a інший.img

примусове встановлення формату без обробки (без автоматичного визначення)
для F<diskimg> і повернення до автоматичного визначення для F<another.img>.

Якщо ви користуєтеся ненадійними образами гостьових систем у необробленому
форматі, вам слід скористатися цим параметром для визначення формату
диска. Таким чином можна уникнути можливих проблем з захистом для
сформованих зловмисниками гостьових систем (CVE-2010-3851).

=item B<-i>

=item B<--inspector>

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

Файлові системи у середовищі порятунку системи монтуються до F</sysroot>.

=item B<--memsize> МБ

Змінити обсяг пам'яті, який надається системі для порятунку. Типове значення
встановлюється libguestfs і є малим, але достатнім для запуску інструментів
для роботи із системою. Певні програми можуть потребувати додаткового обсягу
пам'яті. Значення слід вказувати у мегабайтах.

=item B<-m> пристрій[:точка_монтування[:параметри[:тип_файлової_системи]]]

=item B<--mount> пристрій[:точка_монтування[:параметри[:тип_файлової_системи]]]

Змонтувати вказаний за назвою розділ або логічний том до вказаної точки
монтування B<у гостьовій системі> (немає нічого спільного із точками
монтування у основній системі).

Якщо точку монтування не вказано, типовим значенням є F</>. Вам слід
змонтувати щось до F</>.

Файлові системи у середовищі порятунку системи монтуються до F</sysroot>.

Третьою (і нечасто використовуваною) частиною параметра монтування є список
параметрів монтування, які використовуються для того, щоб змонтувати
підлеглу файлову систему. Якщо такий список не буде задано, параметрами
монтування вважатиметься або порожній рядок, або C<ro> (другий варіант
використовується, якщо використано прапорець I<--ro>). Заданням параметрів
монтування ви перевизначаєте типовий варіант. Ймовірно, єдиним випадком,
коли вам може знадобитися це, є випадок вмикання списків керування доступом
(ACL) і/або розширених атрибутів, якщо у файловій системі передбачено їхню
підтримку:

 -m /dev/sda1:/:acl,user_xattr

Четвертою частиною параметра є назва драйвера файлової системи, якою слід
скористатися, зокрема C<ext3> або C<ntfs>. У визначенні цієї частини
параметра рідко виникає потреба, але вона може бути корисною, якщо для
файлової системи можна скористатися декількома драйверами (приклад: C<ext2>
і C<ext3>), або libguestfs визначає файлову систему помилково.

=item B<--network>

Уможливити для користувача QEMU роботу у мережі у гостьовій
системі. Див. L</МЕРЕЖА>.

=item B<-r>

=item B<--ro>

Відкрити образ у режимі лише читання.

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

Див. також L<guestfish(1)/OPENING DISKS FOR READ AND WRITE>.

=item B<--scratch>

=item B<--scratch=N>

Використання параметра I<--scratch> призводить до додавання великого
тестового диска до базової системи для порятунку віртуальних машин. Запис
I<--scratch=N> призводить до додавання C<N> тестових дисків. Тестові диски
автоматично вилучаються, якщо virt-rescue завершує роботу.

Ви також можете поєднувати параметри I<-a>, I<-d> і I<--scratch>. Тестові
диски додаються до базової системи у порядку, у якому їх було вказано у
рядку команди.

=item B<--selinux>

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

=item B<--smp> N

Увімкнути N E<ge> 2 віртуальних процесорів у базовій системі для порятунку.

=item B<--suggest>

Цей параметр використовувався у застарілих версіях virt-rescue для надання
пропозицій команд, якими ви могли б скористатися для монтування файлових
систем до F</sysroot>. У сучасних версіях virt-rescue простіше скористатися
параметром I<-i>.

Цей параметр неявно використовує I<--ro> і є безпечним для використання,
навіть якщо гостьова система працює або запущено інший екземпляр
virt-rescue.

=item B<-v>

=item B<--verbose>

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

=item B<-V>

=item B<--version>

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

=item B<-w>

=item B<--rw>

Змінює дію параметрів I<-a>, I<-d> і I<-m> таким чином, що диски додаються і
монтуються у режимі читання і запису.

Див. L<guestfish(1)/OPENING DISKS FOR READ AND WRITE>.

=item B<-x>

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

=back

=head1 ПАРАМЕТРИ КОМАНДНОГО РЯДКА У ФОРМАТІ ПОПЕРЕДНІХ ВЕРСІЙ

У попередніх версіях virt-rescue можна було скомандувати ось так:

 virt-rescue disk.img [disk.img ...]

або

 virt-rescue назва_гостьової_системи

тоді як у цій версії вам слід скористатися I<-a> або I<-d>, відповідно, щоб
уникнути помилок у випадках, коли назва образу диска може збігатися із
назвою гостьової системи.

З міркувань зворотної сумісності передбачено підтримку запису параметрів у
застарілому форматі.

=head1 МЕРЕЖА

Додавання параметра I<--network> вмикає для користувача мережу QEMU у
базовій системі для порятунку. Існують певні відмінності між звичайною
роботою у мережі і роботою у мережі для користувача:

=over 4

=item луна-імпульс не працює

Оскільки протокол ICMP ECHO_REQUEST загалом вимагає прав доступу root для
надсилання пакетів луна-імпульсів, і оскільки virt-rescue повинна мати
можливість бути запущеною не від імені root, мережа для користувача у QEMU
не може емулювати роботу команди L<ping(8)>. Команда ping зможе визначати
адреси, але не зможе надсилати або отримувати будь-які пакети. Це не
означає, що працювати у мережі буде неможливо.

=item не можна отримувати з'єднання

У режимі мережі для користувача QEMU не можна отримувати вхідні з'єднання.

=item встановлення з'єднань TCP

Базова система virt-rescue має бути невеликою за розміром, тому до неї не
включено багато інструментів для роботи у мережі. Зокрема, у ній немає
програми L<telnet(1)>. Ви можете встановити TCP-з'єднання з командної
оболонки за допомогою магічної команди
F</dev/tcp/E<lt>назва_вузлаE<gt>/E<lt>портE<gt>>:

 exec 3<>/dev/tcp/redhat.com/80
 echo "GET /" >&3
 cat <&3

Докладніше про це тут: L<bash(1)>.

=back

=head1 КЛАВІША ЕКРАНУВАННЯ

У virt-rescue передбачено підтримку різноманітних клавіатурних комбінацій із
клавішею екранування, які вводяться натисканням C<^]> (клавіші Ctrl і
клавіші C<]>).

Змінити клавішу екранування можна за допомогою параметра I<-e> рядка команди
(див. вище). Повністю вимкнути клавішу екранування можна за допомогою
параметра I<-e none>. У решті цього розділу ми припускаємо, що працює типова
клавіша екранування.

Можна використовувати такі клавіші:

=over 4

=item C<^] ?>

=item C<^] h>

Виводить коротке довідкове повідомлення щодо керівних послідовностей.

=item C<^] i>

Виводить короткі дані інспектування libguestfs для гостьової
системи. Працюватиме, лише якщо вами було використано I<-i> у рядку команди
virt-rescue.

=item C<^] q>

=item C<^] x>

Негайно завершити роботу virt-rescue.

=item C<^] s>

Синхронізувати файлові системи.

=item C<^] u>

Демонтувати усі файлові системи, окрім кореневих файлових систем (базової
системи).

=item C<^] z>

Призупинити роботу virt-rescue (подібно до натискання C<^Z>, але стосується
virt-rescue, а не програми, яка працює у оболонці порятунку системи).

=item C<^] ^]>

Надсилає сам символ C<^]> (ASCII 0x1d) крізь оболонку порятунку системи.

=back

=head1 ПЕРЕХОПЛЕННЯ ДАМПІВ ЯДРА

Якщо ви працюєте з якоюсь програмою у virt-rescue, і програма (B<не>
virt-rescue) завершує роботу у аварійному режимі, перехопити дамп ядра
програми поза virt-rescue для подальшого аналізу є доволі складним
завданням. У цьому розділі описано один спосіб, у який можна досягти
виконання цього завдання.

=over 4

=item 1.

Створіть тестовий диск для дампів ядра:

 truncate -s 4G /tmp/corefiles
 virt-format --partition=mbr --filesystem=ext2 -a /tmp/corefiles
 virt-filesystems -a /tmp/corefiles --all --long -h

=item 2.

Під час запуску virt-rescue долучіть диск для файлів дампів останнім:

 virt-rescue --rw [-a ...] -a /tmp/corefiles

B<NB.> Якщо ви використовуєте параметр I<--ro>, virt-rescue без додаткових
питань не записуватиме ніяких файлів дампів ядра до F</tmp/corefiles>.

=item 3.

У virt-rescue змонтуйте диск для файлів дампів ядра. Не забудьте замінити
F</dev/sdb1> записом із індексом останнього диска. Наприклад, якщо диск
файлів дампів ядра є останнім із чотирьох дисків, вам слід використовувати
F</dev/sdd1>.

 ><rescue> mkdir /tmp/mnt
 ><rescue> mount /dev/sdb1 /tmp/mnt

=item 4.

Увімкніть дампи ядра у ядрі відновлення:

 ><rescue> echo '/tmp/mnt/core.%p' > /proc/sys/kernel/core_pattern
 ><rescue> ulimit -Hc unlimited
 ><rescue> ulimit -Sc unlimited

=item 5.

Запустіть програму, яка аварійно завершує роботу, записуючи дамп ядра. Дамп
ядра буде записано до F</tmp/mnt/core.I<PID>>.

 ><rescue> ls -l /tmp/mnt
 total 1628
 -rw------- 1 root root 1941504 Dec  7 13:13 core.130
 drwx------ 2 root root   16384 Dec  7 13:00 lost+found

=item 6.

Перш ніж завершувати роботу virt-rescue, демонтуйте (або принаймні
синхронізуйте) диски:

 ><rescue> umount /tmp/mnt
 ><rescue> exit

=item 7.

Поза межами virt-rescue файли дампів ядра можна вилучити з диска за
допомогою L<guestfish(1)>. Приклад:

 guestfish --ro -a /tmp/corefiles -m /dev/sda1
 ><fs> ll /
 ><fs> download /core.NNN /tmp/core.NNN

=back

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

На роботу virt-rescue впливають декілька змінних середовища. Повний список
змінних наведено у розділі L<guestfs(3)/ЗМІННІ СЕРЕДОВИЩА>.

=head1 ФАЙЛИ

=over 4

=item $XDG_CONFIG_HOME/libguestfs/libguestfs-tools.conf

=item $HOME/.libguestfs-tools.rc

=item $XDG_CONFIG_DIRS/libguestfs/libguestfs-tools.conf

=item /etc/libguestfs-tools.conf

Цей файл налаштувань керує типовим режимом — лише читання чи читання і запис
(I<--ro> або I<--rw>).

Див. L<libguestfs-tools.conf(5)>.

=back

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

L<guestfs(3)>, L<guestfish(1)>, L<virt-cat(1)>, L<virt-edit(1)>,
L<virt-filesystems(1)>, L<libguestfs-tools.conf(5)>,
L<http://libguestfs.org/>.

=head1 АВТОР

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

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

Copyright (C) 2009-2020 Red Hat Inc.