dshimizu/blog

アルファ版

オフラインのKVMゲスト仮想マシンを直接操作するツール

KVMのゲスト仮想マシンを外部からメンテナンスをする際に便利な libguestfs というツールを知った。
といってもゲスト仮想マシンが外部から操作可能な状態、sshvirsh consoleでログインできる状態ならそこまでお世話になることはない。
何らかの理由でゲスト仮想マシンにログインできなくなり、ホストOS上からゲスト仮想マシンのファイルを直接参照したり編集したりしたいとか、rescueモードでログインしたいといったときに役立つ。

上記はRHEL6のドキュメントのものだがCentOSにも同様のツールは存在する。

libguestfsの使い方

インストール

環境

  • OS: CentOS6

パッケージがあるのでインストールは簡単。

$ sudo yum install libguestfs libguestfs-tools

使い方

※操作する対象のゲスト仮想マシンを停止しておく必要がある。

ゲスト仮想マシン内のファイルを直接参照したい場合

virt-catというコマンドを実行する。
例えばguestvm01というゲスト仮想マシン/etc/fstabというファイルの中身を見たい場合はguestvm01を停止した状態で以下を実行する。
-dオプションはドメイン(ゲスト仮想マシン)を指定するための引数。

$ sudo virt-cat -d guestvm01 /etc/fstab
ゲスト仮想マシン内のファイルを直接編集したい場合

virt-editというコマンドを実行する。
例えばguestvm01というゲスト仮想マシン/etc/fstabというファイルの中身を編集したい場合はguestvm01を停止した状態で以下を実行する。
-dオプションはドメイン(ゲスト仮想マシン)を指定するための引数。

$ sudo virt-edit -d guestvm01 /etc/fstab
ゲスト仮想マシン内のファイルの一覧を参照したい場合

virt-lsというコマンドを実行する。
例えばguestvm01というゲスト仮想マシン/var/log以下のファイルの一覧を見たい場合はguestvm01を停止した状態で以下を実行する。
-dオプションはドメイン(ゲスト仮想マシン)を指定するための引数。

$ sudo virt-ls -d guestvm01 /var/log
ゲスト仮想マシンにレスキューモードでログインしたい場合

virt-rescueというコマンドを実行する。
例えばguestvm01というゲスト仮想マシンにログインしたい場合、guestvm01を停止した状態で以下を実行する。

$ sudo virt-rescue guestvm01

しばらく待っているとレスキューシェルが起動して以下のようなプロンプトが表示されるので後はこの状態で必要な操作を実行する。

><rescue>

まとめ

KVMのメンテナンスを行うための libguestfs というツールを知ったので、いくつかのオペレーションコマンドの使い方を簡単に記載した。
上記以外にもいくつかコマンドが存在するので必要に応じて使っていこうと思う。

参考