QEMU KVMのRBDを有効にする for Cinder+Ceph

Cinder+Ceph を構築する際に、最も困った点が libvirtd のエラーログで、とても見当違いなログで原因が全然違いましたー!ということが何度かありました。

中でも、Debian WheezyのKVMがRBD対応していなかった、という境地にたどり着くまで非常に精神と時間を投入したので記しておきたいと思います。



libvirtdのエラー

前回の構築手順において、Cinderボリュームの作成まではわりと簡単に成功するのですが、VMへのアタッチで引っかかることがあります。
アタッチの処理の流れは大雑把にこんな感じです。

  • Novaがlibvirtd用のXMLを作成
  • libvirtdがXMLを使ってqemu-kvmにアタッチリクエスト
  • qemu-kvm が成否を返す

  • 失敗する場合は様々な原因が考えられるのですが、どのような原因にしろ libvirtd がこのようなエラーログを吐くため、本来の原因に考えがたどり着き辛い内容となっています。

    ・・・コマンドが無ぇ!で一括りにしてんじゃねぇよと。前回書いた、CephAuth+libvirtdの鍵の不一致でもこのようなログになり、非常にわかりづらいです。


    QEMU KVMのRBD有効化

    KVMがRBD有効か確かめる

    私の場合Debianで構築しており、どーーーしてもアタッチできなくて苦しみましたが、やけになってRBDにOSイメージを作ってみようとすると、RBDフォーマット非対応です とエラーが出たため、

    qemu-kvm が –disable-rbd 状態だったことに気づけました。
    もっとスマートな確認方法があるかもしれませんが、とりあえずこれで・・・

    リビルド準備

    簡単にリビルド手順を記載しておきます。

    QEMUのリビルド

    QEMU KVMのリビルド

    動作確認

    /usr/bin/kvm が新しくなったところで、nova boot でVMを新規に作成し、nova volume-attach してみてください。成功したら、Horizonからも試してみて完了です。


    リンク

  • これにハマった時のTweet
  • #679686 – missing symvers/libvers (or soversion) for new librbd1 – Debian Bug report logs

  • ・・・という感じで、RBD対応されればいいですね、と。



    OpenStackの構築で苦しんだわけですが、この問題を解決するのにOpenStackを利用したというのが面白く。

    Debianのqemu-kvmに当たりをつけたタイミングで、Debian の qemu-kvm source の configure や rules を眺めたのは当然ですが、TL上でUbuntuでは普通にアタッチできたと聞いて、UbuntuのQEMUパッケージも確認したりしたわけです。その時のUbuntuは、目の前のOpenStack上で起動して、仮想環境で試したという・・・おぉ、Ubuntu qemu-kvm は rbd 使えそうじゃないか!と。

    そんなわけで最大の難所を越えてそろそろ実際に本番稼働しそうですが、
    まだまだ構築メモが溜まっていてなかなか書き切れそうにありません!