インフラエンジニア勉強会 hbstudy #17に行ってきました
インフラエンジニア勉強会 hbstudy #17に行ってきました。
今回は、株式会社SRA 長谷川さんの発表で、『エンジニアなら知っておきたい「仮想マシン」のしくみ 』でした。
事前配布資料
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
個人的に486以前からある特権命令については理解しているので話は理解しやす内容でしたが、皆さんいかがでしたでしょうか。
個人的メモ
気になった点だけメモしておきます。
- 仮想化するなら新しいハードウェア(NPT/EPTに対応したCPU)を使用するべき
- virtioについて。リングバッファで追い越しが起きると今の実装では異常終了する。
- Fusion I/Oは爆速ストレージだが、KVMの性能がでないらしい。Virtio-blkあたりがボトルネックになってるっぽい。
- virtio-blkはマルチスレッドI/OやI/O乱発が苦手な模様。現状の実装はリングが1つだけ利用され、I/O要求は128個まで同時受け付け可能。
NPT/EPTが実装されているCPUについては、IntelだとNehalem世代、AMDだとBarcelona世代以降のCPUにあたります。
リングバッファで追い越しでの異常終了ついては、個人的な感想としては、virtio=悪ではなく、異常終了する可能性があるとして、monitなどで監視し、異常終了した後に自動起動するなどの運用で乗り切ってしまうのが吉なんじゃないかと思いました。
そのことについて長谷川さんも後からTwitterでつぶやいて居られましたので、メモしておきます。
本当は伏せておくつもりだったけど質問が出たので話した virtio のリングのポインタ追い抜きの件ですが、追い抜きが発生すると「安全のためにqemu-kvmがexit(n);します」。それはそのゲストVM自体が停止することを意味します。
BtoCなサービスなら場合によってはe1000等を強要するのもありでしょう。大したコードじゃないのでプロセスが落ちないように手元で対策してもいいでしょう。ただそもそも「使う気のないvirtioデバイスは定義するな」という意図でした。
攻撃するためには細工されたデバイスドライバが必要になります。既存ドライバを書換などで攻撃コードは簡単にできてしまいます。とはいえVM自分自身を自爆させるのが精一杯で別に他のVMやプロセスへの直接的な影響はありません。rootが必要で精々haltみたいなもん。
とはいえVMプロセスがいなくなるのは管理者側から見て想定されないケースの可能性があると思います。なので、ISPやSaaSでサービスされる方は、現状、こういう罠でユーザ自身がqemu-kvmを落とす可能性があるということを覚えておくといい
ストレージについて最後に少しZFSの話がでてきました。
デブサミ2010の時にオラクルの中嶋さんも仰られていましたが、仮想化においてストレージは非常に重要になってきます。
ハイパーバイザーについては、VMwareではなくXenやKVMなどでも可能ですが、ストレージに関しては徐々に出てきつつあるものの、現状では決定的なものがまだ無いのがないので、仕事として使うのであればDELL EqualLogicなどのプロプライエタリなストレージを使うのが良いのではないかと思います。
そんな感じで。