21.6. virt-rescue: レスキューシェル

このセクションでは、レスキューシェルについての情報を提供します。

21.6.1. はじめに

このセクションでは、仮想マシンのレスキュー CD のようなものと捉えることができる virt-rescue について説明します。レスキューシェルでゲスト仮想マシンを起動するため、エラー修正などのメンテナンスを行ってゲスト仮想マシンを修復することができます。
virt-rescue と guestfish には機能的に重複している部分があります。両者の使い方の違いを区別しておくことは大切です。virt-rescue は、通常の Linux ファイルシステムツールを使って特別な変更をインタラクティブに行う場合に使用します。とくに問題が発生したゲスト仮想マシンを修復する場合などに適しています。virt-rescue をスクリプト化することはできません。
一方 guestfish は型通りのコマンド一式 (libguestfs API) を使って、スクリプト化によって構造化した変更を行う場合に便利です。また、guestfish はインタラクティブに使用することもできます。

21.6.2. virt-rescue の実行

ゲスト仮想マシンで virt-rescue を使用する前に、そのゲスト仮想マシンが実行されていないことを確認してください。ゲスト仮想マシンが実行しているとディスクを破損させることになります。ゲスト仮想マシンがライブでないことを確認してから、以下を入力します。
$ virt-rescue -d GuestName
(上記の GuestName には libvirt が認識できるゲスト名を入力します) または、
$ virt-rescue -a /path/to/disk/image
(上記のパスは任意のファイル、論理ボリューム、LUN などいずれでも構いません) ゲスト仮想マシンのディスクが含まれます。
virt-rescue によってレスキュー仮想マシンが起動するため、その出力スクロールが表示されます。最終的には、以下が表示されます。
Welcome to virt-rescue, the libguestfs rescue shell.

 Note: The contents of / are the rescue appliance.
 You have to mount the guest virtual machine's partitions under /sysroot
 before you can examine them.

 bash: cannot set terminal process group (-1): Inappropriate ioctl for device
 bash: no job control in this shell
 ><rescue>
シェルプロンプトはここでは通常の bash シェルになるため、使用できる通常の Red Hat Enterprise Linux コマンド数が少なくなります。たとえば、以下を入力できます。
><rescue> fdisk -l /dev/vda
上記のコマンドはディスクパーティションを一覧表示します。ファイルシステムをマウントするには、/sysroot の下にマウントすることをお勧めします。このディレクトリーは、レスキューマシン内にあるユーザーが何でもマウントできる空ディレクトリーになります。/ の下にあるファイル群はレスキュー仮想マシン自体のファイルになることに注意してください。
><rescue> mount /dev/vda1 /sysroot/
EXT4-fs (vda1): mounted filesystem with ordered data mode. Opts: (null)
><rescue> ls -l /sysroot/grub/
 total 324
 -rw-r--r--. 1 root root     63 Sep 16 18:14 device.map
 -rw-r--r--. 1 root root  13200 Sep 16 18:14 e2fs_stage1_5
 -rw-r--r--. 1 root root  12512 Sep 16 18:14 fat_stage1_5
 -rw-r--r--. 1 root root  11744 Sep 16 18:14 ffs_stage1_5
 -rw-------. 1 root root   1503 Oct 15 11:19 grub.conf
 [...]
ゲスト仮想マシンの修復が完了したら、exit を入力するか、または Ctrl+d でシェルを終了します。
virt-rescue にはコマンドラインのオプションが多数あります。最もよく使用されるオプションを示します。
  • --ro: ゲスト仮想マシン上で読み取り専用モードで動作します。変更は保存されません。ゲスト仮想マシンを実験的に使用する場合にこのモードを使用できます。シェルを終了すると、変更はすべて破棄されます。
  • --network: レスキューシェルからのネットワークアクセスを可能にします。RPM や他のファイルをゲスト仮想マシンにダウンロードする場合など必要に応じて使用します。