LoginSignup
19
16

More than 5 years have passed since last update.

guestfish (libguestfs-tools)を使う

Last updated at Posted at 2015-04-08

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/

19
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
16