Help us understand the problem. What is going on with this article?

guestfish (libguestfs-tools)を使う

More than 3 years have passed since last update.

libguestfs: http://libguestfs.org/
ディスクイメージを直接編集できる。QCOW2以外にもVMDKなど多数のフォーマットに対応している。

  • cloud-initの設定をしたい
  • yum.confにproxyの設定をしておきたい
  • 気になるあの子のVMにバックドアを埋め込みたい

といった場合に有用。
また、ディスクが溢れてOSが死んだとか、VMがぶっ壊れたとか、そういう時にも有用。
ディスクイメージからのデータの吸い出しや不要ファイルの削除により、データの保護や迅速な復旧が期待できる。

インストール

yum install libguestfs-tools # or apt-get install libguestfs-tools

Ubuntuでは途中でsupermin-applianceのインストールのためにncursesの赤い画面が出る。
<Yes>で良いと思うが、びっくりして思わず<No>を選んだ場合でも、インストール後に

sudo update-guestfs-appliance

とすればOK。

ちなみに、結構な数の依存パッケージがインストールされる。libvirtとかqemuとかいう文字が見えたりしても、インストール後にlibvirtdとdnsmasqがデーモン起動していたとしてもビビらないこと。つまり、一時的に小さいLinuxカーネルのVMを作成し、そのVMに操作対象のディスクイメージをSCSIで認識させて編集するという仕組み。psするとqemuが起動していることが確認できる。

ただ、そういうわけなので、KVMホストで直接guestfishを使うのは避けたほうが良いだろう。

使い方

ディスクイメージを取得

qemuユーザーでVMが起動するので、qemuユーザーが見えるところにイメージを置く。/tmpとか。

cd /tmp
wget hoge.com/test.qcow2

guestfishを起動

EDITOR環境変数でedit時のエディタを指定できる。指定しないとviが使われる。ゆとりには辛い。

sudo guestfish --rw -i -a test.qcow2 EDITOR=vim

VMが起動するので、シェルが使えるようになるまで少し時間がかかる。

guestfishシェル

><fs>

このシェルで使用可能なコマンドは山ほどあるが、ls/cat/edit/copy-in/copy-outなどを最低限覚えておけばよさそう。他にもla/touch/rm/llなど見覚えのあるコマンドもある。これらのコマンドはguestfishの引数に付けることもできる。

sudo guestfish --rw -i -a test.qcow2 edit /etc/cloud/cloud.cfg

guestfishラッパー

guestfishのコマンドを直接使わなくても、便利なラッパーコマンドが多数用意されている(virt-ls/virt-resque/virt-edit)。man virt-edit曰くvirt-editguestfish --rw -i -d domname edit /fileとほぼ同義とのこと。
他にもそれはそれはたくさんの機能と使用可能なコマンドがある。こんなコマンドないかなーとかこんなことしたいなーって時には、下記のドキュメントを探してみるべし。

逆引き

逆引き: http://libguestfs.org/guestfs-recipes.1.html
FAQ: http://libguestfs.org/guestfs-faq.1.html
ラッパー: http://libguestfs.org/ (右下)
マジかよ: https://rwmj.wordpress.com/2013/03/13/guestfish-now-supports-502-commands/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした