KVM(Kernel based Virtual Machine)を語れ 2
■ このスレッドは過去ログ倉庫に格納されています
KVMなんて使うからこんな残念なことになるんだよ。
あほだろ CentOS5から6に乗り換えたのを契機にvirshを使うようにしたんだけど、
ゲストのCPU定義の仕方がよくわからん…。
qemu-kvm直接実行の時の-cpu=hostは、virshのXMLではどう書けばいい?
Windows8 32bit版のインストールDVDが起動できなくて困っている…。 >>404
<cpu mode='host-passthrough'/> にしたら、-cpu hostで起動できた!
けど、起動できないのは相変わらず…。64bit版のインストールDVDは起動できるからさらに謎。 よくわからん…。
困っている…。
相変わらず…。
さらに謎。
>>404,406
お前ら、優しいなw >>407
KVMは意味不明なバグがまだ数千以上
存在するから使うの辞めたほうがいいよ
開発者自身もわかってないし ビデオドライバによって、画面の描写の一部分が変になるんだけど
(ゲストOSがWindowsなんだけど、チェックボックスで設定を変更するタイプの
メニューがうまく表示されない。一部のアプリケーションのメニューの操作が出来ない)
これは自分のPC構成による相性の問題なのかな。それともKVM自体の設定でどうにかできる
ものなんですかね?ドライバ形式を変えたらなくなるけど、重くなったりするからな。 ゲストのwindowsのドライバがちゃんと当たってないとか? 画面の描写はKVMと関係ないんじゃ?
VNCやspiceなんかの仕事でしょ PCIパススルーについて質問です。
B75チップセットのマザーで、libvirtを使ったPT1&PT2のパススルーがうまくいきません。
PT2の一枚だけPCに挿した状態であれば virsh start hostname で問題なく起動できるのですが
PT1とPT2の二枚を挿した状態で同じことをしようとすると、以下のようにエラーで起動できません。
# virsh start hostname
エラー: ドメイン hostname の起動に失敗しました
エラー: 内部エラー PCI デバイス 0000:06:01.0 をリセットできません: 内部エラー 0000:06:02.0 を持つバス上のアクティブな 0000:06:01.0 デバイス、バスのリセットをしていません
事前に nondev-dettach をすれば起動できるのですが、ゲストPC(Win7)上でパススルーされたデバイスを
使おうとするとデバイスマネージャー上で認識されているにも関わらず、オープンに失敗します。
# virsh nodedev-dettach pci_0000_06_01_0
# virsh nodedev-dettach pci_0000_06_02_0
# virsh start hostname
ドメイン hostname が起動されました ホストはCentOS 6.3で、公式リポジトリに登録されているlibvirt 0.9.10以外にも
本家最新版の1.0.1ソースからコンパイルた物も試してみましたが、変わりませんでした。
libvirtを使わず、qemu-kvmのオプション指定で直接起動した場合はPT1&PT2の二枚構成でも
問題なく起動できているので、構成的にはクリアできていると思います。
# /usr/libexec/qemu-kvm -version
QEMU PC emulator version 0.12.1 (qemu-kvm-0.12.1.2), Copyright (c) 2003-2008 Fabrice Bellard
# lspci
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a4)
06:01.0 Multimedia controller: Xilinx Corporation Device 211a (rev 01)
06:02.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)
# lspci -t
-[0000:00]-+-00.0
+-1e.0-[06]--+-01.0
\-02.0
どうにかしてlibvirtで管理したいのですが、この問題を解決する方法はありますでしょうか?
libvirtでPT1やPT2の二枚挿しを正常に起動できているという方もいらっしゃいましたら教えてください。 B75ってVT-d使えないんじゃなかったっけ
CPUもK付きやi3以下は使えない筈だし下手したら全取っ替えかな? ASRockのマザーではB75でVT-d使えてるよ VT-dはノースブリッジの機能だからCPUに内蔵された現在はチップセットは関係ない
CPUとBIOSが対応してるかどうかだけが問題になる
Intelのサイトを見るとQ77以外はVT-d ×とか書いてあって混乱させられるけどな >>420
PCIなんかはサウス管轄になってるからチップセットにも関係してくる
しかもBIOSによっては両方対応してないとどっちも使えないとかが
あるからかなりややこしい >421
いずれにせよB75チップセットで問題になることはない。Q77マザー並に安牌。 >>420
その辺のレジスタもデータシートを見ればわかるけど、ノースブリッジ側にあるよ
が、デバイス自体にも対応が必要らしいんで若干不正確だった
Intel(R) 7 Series / C216 Chipset Family Platform Controller Hub (PCH) Datasheetより
> 5.29.2 Intel(R) VT-d Features Supported
> ・ The following devices and functions support FLR in the PCH:
> - High Definition Audio (Device 27: Function 0)
> - SATA Host Controller 1 (Device 31: Function 2)
> - SATA Host Controller 2 (Device 31: Function 5)
> - USB2 (EHCI) Host Controller 1 (Device 29: Function 0)
> - USB2 (EHCI) Host Controller 2 (Device 26: Function 0)
> - GbE Lan Host Controller (Device 25: Function 0)
> ・ Interrupt virtualization support for IOxAPIC
> ・ Virtualization support for HPETs
SKUごとの差異があるとは記述されてないのでどちらにしろどれでも問題はないようだ 若干どころかPCIバスの向こう側にも対応が必要だったらノースブリッジだけが
対応すればいいなんて到底言えないと思うんだが >>416-417にも書いてますが、今回ハマってる組み合わせ(PTx二枚挿し+libvirt)以外では
パススルーも普通に使えています。 ということは
PT1枚+libvirt や PT2枚 libvirtなし だと動いてる? ここの人はvt-dでPCI透過させて、ゲストOSでTV見たりしてるの?
すごいね >>426
そういうことになります。
PTxとは書いていますが、PT2+PT3+libvirtの組み合わせであれば
パススルーでゲストが認識できるところまでは確認しています。
またPT1&PT2が挿さっていると、libvirtで片方だけアタッチして起動しようとしても同じく失敗します。
以上のことから思うに、レガシーPCI配下に複数デバイスがぶら下がってると
libvirtがそれらのデバイスの割り当てに失敗するようです。 新しいカーネルならもしや、と思ってUbuntu 12.10で試してみたけどダメだった・・・
# uname -a
Linux hostname 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:32:08 UTC 2012 i686 i686 i686 GNU/Linux
# kvm --version
QEMU emulator version 1.2.0 (qemu-kvm-1.2.0+noroms-0ubuntu2, Debian), Copyright (c) 2003-2008 Fabrice Bellard
# virsh --version
0.9.13
皆さんレガシーPCIに二枚以上デバイスぶら下げて、あまつさえlibvirt使ってみたりしないんですか??? libvirtが同一デバイスを上手くハンドルできないんじゃ疑惑 でした
libvirt が起動している qemu のコマンドライン引数と
素でうまくいくときの qemu のコマンドライン引数を
くらべてみたいお >>433
PT2+SAA7130キャプチャボード+libvirtという組み合わせも試してみてダメだったので、PT1やPT2がというより
レガシーPCIに複数のデバイスがぶら下がってること自体が原因のような気がします(PCIeと違って共有バスだから?)。
本当に上記が理由だとしたら比較的簡単に再現できると思います。しかしその割に、他で報告を聞かないのも変な気はしますが・・
私は最初PCIe→PCIブリッジチップを介しているのがいけないのかと思って、H67からB75に乗り換えたのですが
再現の仕方が同じなので、問題はそこではなさそうです。他にはZ68でも同じ状況でした。
残念ながらソースは読めない人なので、qemuに直接渡す場合とlibvirtで実行する場合とで
設定晒してみます。流石にUUIDとゲストの名前は(厨二過ぎる設定な為)書き換えてますが、ご容赦ください。
qemu-kvmを直接起動する場合
ttp://www1.axfc.net/uploader/so/2756620.txt
libvirt経由で実行する場合
ttp://www1.axfc.net/uploader/so/2756615.txt >>435
/var/log/ の下に libvirt のログない?
debian なら /var/log/libvirt/qemu/<仮想マシン名>.log とかなんだけど... >>435
お前さ、何故libvirtdのデバッグログをうpしないの?
何で初心者ですみたいに、ソース読めない人なので
なんでも聞いていいですよね?解決してくださいって
調子に乗ってるの?
お前ってさ、qemu:commandlineに利用しているなら、直接引数
渡せば起動できるのわかってて、嫌がらせとか本当に
たちの悪い糞野郎だよな。 spice-guest-tools-0.3.exe
来てた kvm のホストマシンで ZFS on Linux を使って作った zpool に,
kvm のゲストマシンからアクセスすることってできる? そもそもzpoolって、他のホストがアクセスできるような代物じゃないと
おもうんですが、違うの? ホストで /dev/sdb を zpool に追加して,/dev/sdb をゲストに接続しておいて,
ゲスト上で
$ mount -t zfs /dev/sdb1 /mnt
みたいないことできないかなと思って質問しました.
(ほんとはゲスト上では /dev/sdb1 っていう名前じゃなくて違う名前だと思うけど便宜上こう書いてます) ZFSはFreeBSDで使ってて、ZFS on Linuxは使ってないけど・・・
zpoolは、一つか複数のディスクを一つのpoolにまとめる。
zpoolに参加してるディスクをダイレクトにいじろうとするのは
そもそもZFSの使い方としておかしいんじゃないかと。
例えば、ホスト上でtankというプールを作ってみる。
zpool create tank /dev/sdb ←tankというpoolを作ってsdbを参加させる
こんなふうにやった後は、/tankにディスクがマウントされている。
この後に/dev/sdbへ直接アクセスするような真似をしたら、
KVMとか関係なく、ZFSを壊すだけでは。
ブロックアクセスしたいならzvolを作るべきだと思う。 >>442
なるほど,zvol でブロックデバイスが作れるんだ.いいこと聞いた.
実は試しに,ゲストマシンに ZFS on Linux を導入してみた.
インストールは簡単にできて zpool も作れた.しかし
ホストとか他のゲストと共有するために sharenfs とか sharesmb を
使おうとしたら,未実装らしい.これだと ZFS on Linux を入れたあんま意味ない気もする.
ホストに導入するのが自分の用途によさそうだが,あんまりホストの
機能が肥大化するのも好きじゃない.悩ましいな. KVMを本運用で使ってる所ってあるの?
安定度が気になる 山ほどあると思うが。
まあチューニングはガンガンにしてるだろうけどね。 チューニング、ガンガンですか
そのあたりのおすすめ本とかありますか 運用が厳しいということは、大規模ってことかね。
うちは殆ど吊るしで使ってるけど、チューニングって例えば何がある? うちもほぼ吊るしだよ。
VMイメージをNFS上に置いてるけど、ちょっとそろそろ限界。
ホストもNFSサーバもNIC帯域も余裕なんだけど、
1つのVMが使えるNFS帯域に何かボトルネックがあるらしく
ゲストのうち、アクセスの多いWebサーバの動作が滞りだした。
もうこの環境は厳しいからiSCSIかなんかで立て直して移行する >1つのVMが使えるNFS帯域に何かボトルネックがあるらしく
自分の環境では1Gbpsまではちゃんと出たので、NFS帯域のボトルネックなんて無いと思うんです。
先にHDDの限界がくるんじゃないかな。
1台のストレージに何台本番が乗ってるの?
単純にHDDのシークタイムがオーバーヘッドになってるように思うのですが。 >>451
KVMホストは5台、ゲストは20台ぐらい。
ある1ゲストだけ飛び抜けて高負荷なんだけど、
いずれにしてもそんなにストレージへのアクセスが頻繁なものではなくて、
そのゲストが高負荷な時でもNFSサーバ自体の負荷は余裕、
他ゲストからのNFSパフォーマンスも落ちない(常時70MB/s程度)。
ので、KVMonNFSそのものがもうキツいのかな…と思ったんだけど、
確かに載せすぎでシークタイムが厳しいのかも。
NFSサーバーは7本のRAID6。 その構成にゲスト20台ならストレージやNFS自体はまだ余裕あるはず。
ゲスト達がどんな動きしてるか解らんので妄想入ってますが。
最初に思いつくのは、そのゲストに当ててるCPUやメモリが足りないとか、
それ以外のDBとかが足引っ張ってる可能性もあるとおもふ。
そのゲストがWindowsの場合はCPU使用率とかメモリ利用率を見て、足りないなら足せばいいいし、
Linuxの場合はロードアベレージは当てにならんから、CPU使用率を見てCPU負荷が高いのか、
IOウェイトが発生してるのかを見れば、原因がどこにあるかが判るはず。
あとは、ストレージのネットワーク速度すかね。 >>452
NFSサーバが余裕なのは、本当に処理負荷がひくいからなのかな。
NFSサーバがリソースを使いきれるようにチューニングされていなくて、NFSクライアントを待たせながらのんびり動いてからかもよ。 >>454
それだとKVMホストのロードアベレージがやたら上がるはずなのよね。 >>455
あがらないだろ。
ioとかnfsのqueueが長くなるだけだから。
nfs しばらく使ってないのではずしてると思うが、概念的にはworkerが足りないときとは処理要求は多いのにcpuの負荷は低くなると思うが、そんなケースがないかと想像してる。 >456
ううん、NSFサーバがNFSクライアントを待たせると、
クライアント側ではCPUのウェイトのパーセンテージが上がって、
それでロードアベレージがあがるんですよ。
クライアントはデータの読み書きをサーバに依頼するけど、
サーバがモタモタしてると、クライアントは自分のHDDの処理が遅いような認識になって、
ロードアベレージがあがるんです。
ロードアベレージって実行待ちプロセスの平均値でしょ、だからそうなるの。 その「1台だけ高負荷なKVMゲスト」の
何の負荷が高いのかから調査して行かないと厳しそうでは。 ・その高負荷ゲスト(Linux)では、とあるWebグループウェアが稼働。DBも同居。ゲストは8CPU/32GB
・高負荷なので臨時にホストをそのゲスト1台で占有使用させてる。ホストは12コア36GB
・高負荷時、ゲスト上でiowait30〜50、ロードアベレージ7程度
・高負荷時、ホスト上でiowait20〜40、ロードアベレージ4〜6程度
・高負荷時でも、他のノードからNFS転送速度を計測すると普通に80MB/sとか出る(無負荷時で90MB/s程度)し、
他ゲストのパフォーマンスにはさほどの低下がみられない
・各物理危機はL2機器で直結
・NFSサーバーはほぼ吊るし設定。CPUもIOもtopで見る限りまったく余裕
こんな状態です。 NFSのマウントオプションはどうなってる?
syncかasyncでかなり違う。
NFSのバージョンも気になるけど、v3以降ならパフォーマンス面の不安はほとんど無いはず。
NFSってかなりオプションあるけど、いくつか押さえておけば基本的に吊るしでおk。
NFSクライアントで
nfsstat -m
NFSサーバで
exportfs -v
だったと思う、ステータスが確認できるお。 高負荷な時の、そのゲストに使用してるNFS転送速度ってのは
調べられないのかな。 そのゲスト上で
dstat -fd
入ってなければyumかrpmで
許可要るだろうけど、あると便利ですよ Xeon E3-1270v2 で CentOS 6.3 の KVM で FreeBSD 9.1 amd64 のインストール
をしようとすると、カネールのロードのところでフリーズしてしまうのだが、
何が原因だろう…?
別メーカーの Xeon E3-1270v2 でも FreeBSD はダメ
Xeon E5-2670 では FreeBSD OK
E3-1270v2 でも Linux 系は問題無くブートする。。 >>459
すまん。テキトウなこと書いてしまった。ただ、load averageはなんか起きてるってのがわかるくらいで、原因の特定にはならないのでほかの指標見た方がよいですよ。 >>463
ゲストに見せるCPUの設定変えてみてもダメなのかな。ゲストのxmlの<model>xxx</model>のとことか >>465
Xeon E5 はデフォルトの cpu64-rhel6 でも SandyBridge でもどっちでもいけるんだけど、
Xeon E3 はどっちもダメです。 >>466
GPUまわりかな。いずれにしてもFreeBSD側でカーネルデバッグをしてみるといいだろう。 >>467
Xeon E3-1270v2 なので、GPU 無しです。
Host で top とか sar でみると、CPU を 100% くってるので、どこかでループしてそうな感じです。 何が原因か分からんね。物理に直接インストールしてみたり、仮想デバイス変えてみたりして地道に切り分けて行くしかないのかな >>469
物理だと問題無いんですよね。あと、KVM 無しの QEMU でも問題無かったです。
Xeon E3-1200v2 の仮想化支援機能に何か問題があるんじゃないかなーと思ってます。。
ひとまず、E5 を使うことで切り抜けたのですが、
他の方々は E3 で問題無く、FreeBSD 9.1 amd64 disk1 の起動できます? >>470
BIOSで何らかのオプションが無効になってるとか?
vなしのE3-1245にSL6.3の環境ですが
怪しい感じも無くインストール、ログインまでいけましたよ ちょっとなかなか高負荷にならず、間空いちゃってすいません。
>>460
rw,relatime,vers=3,rsize=8192,wsize=8192,namlen=255,hard,proto=tcp,timeo=56,retrans=2,sec=sys,
mountaddr=**,mountvers=3,mountport=58074,mountproto=udp,local_lock=none,addr=**
asyncは指定してません。デフォなのでおそらくsyncですね。
>>461
ddで100MBのファイルを5回書き込み、1MBのファイルを500回書き込みとやってみましたが
いずれもキャッシュに載ってしまって200MB/sとかです。
それ以上のサイズは、本稼働中なんでちょっと厳しいw
>>462
readが0〜8000kで平均1000k、writeが0〜5000kで平均1500kといった感じでした。 >473
乙です。
NFSの引数はあまりわかってないですが、
今のところ、見せてもらった情報からは、
NFSがボトルネックのような内容見えてない気がします。
iowaitは気になりますが、コア8つでロードアベレージが
7ってことは、コア単位で言えば、待ちは1つ以下になるし。
使ってるグループウェアの仕様上のボトルネックみたいな
ものはないんでしょうか。同時接続数がいくつまで・・とか、
無駄にiowaitを生じさせるような動作をしてるとか・・・ >>473
NFSのオプションにいくつかイケてない内容があるです
それはクライアント側のマウントオプションだけど、
rsize=8192,wsize=8192 これもっと大きい数字にできる。
うちはrsize=1048576,wsize=1048576
mountproto=udp これ事故る元。
tcpに変えた方がいいです。
syncかasyncかはサーバ側で exportfs -v しないと解らないです。
そこに必ず表記が出ます。 NFSの引数について判らなかったために
随分適当なことを言ってしまったみたいですね、
すみません。
rsize, wsizeは昔は8192にするのは定石だったと思いますが、
今はもっとずっと大きいんですね・・・ NFSは枯れててあまり最新のネタって無いですからね、仕方ないと思います。
適当でも普通に動いちゃうし。
dstatの結果を見る限り、かなりディスクに負荷かかってるんじゃないかと思います。
ランダムアクセスで常時Read/Writeが1〜2MB/sって、そこそこリソース食ってると思う。
ストレージの無負荷のDiskMark値がないとなんとも言えんけど、
HDD2台のRAID1構成のNFSサーバに、KVMゲストからDiskMarkしたときは、
4kランダムで1〜4MB/sくらいでした。
RAID6遅いし、使ってるディスクの仕様が解らんけど、ストレージもある程度酷使されてると予想。 >>475
proto=でなくmountproto=だからあまり問題ないんでは? 何度もありがとう、参考になります。
>>474
メーカーにさんざん調べさせた結果、もうどう叩いてもこちら側の問題ではなく
サーバー側ディスクIOパフォーマンスの問題である、というのが最終回答でした。
実際、仮想化物理ホストのローカルHDDに載せてしまえば、現スペックでも
こんな程度のユーザー数、アクセス数は余裕で裁ける程度なんですよね。
>>475
なるほど、rwsizeは拡大方向で、計測しながら変更してみます。
mountprotoは無指定なのでデフォ値ですね。これもtcpに変えたら
どれくらいパフォーマンスが落ちるかを計測しつつ検討してみます。
ちなみにfstabのマウントオプションは rsize=8192,wsize=8192,timeo=56,hard,nointr です。
で、nfsサーバー側でexportfs -v をしたところ、asyncでした。
<world>(rw,async,wdelay,insecure,no_root_squash,no_subtree_check)
実際nfsサーバー側で見てる限り、iowaitなんか全くないし
その他負荷もさっぱりなんですよね。
深夜の無負荷時にhdparmでも実行してみます。 これは確かにネタが少なくて調べるの大変なんですが、
NFS マウントオプション tcp
これでぐぐったら出てくるよ。(修行中とか言われてリンク貼れなかったorz)
この辺りに書いてあるです。 さくらとかの、VPSってKVMつかっているんでしょ
仮想マシンイメージファイルのダウンロード、バックアップって、許可されていないんだろうか 自分でバックアップとったのをダウンロードして
手元のkvmで動かしたけど、許可必要だったのかー >>482
仮想マシンイメージファイルのレベルで、ダウンロードできるんだ? 仮想マシンイメージのダウンロード、アップロード機能提供したら、
-ちょっとでも価格の安い事業者へユーザーが引っ越しちゃう
-繁忙期以外にも無駄に契約させておく事が出来なくなる
なので、余程自信のあるところ以外はやらないでしょ
一応、Amazonが(Xenだけど)提供してたはず。他は聞いたこと無い >>485
じゃ、自宅のKVMで仮想マシンをつくったのを、
さくらVPSでそのままアップロードしてつかえるのかな? ○さくらのクラウド
×さくらのVPS
同じものだと思っていました。
ちがうってことですね? クラウドの定義ってあるんですか
VPSのことがクラウドだと思っていた ぐぐればすぐわかることをいちいち聞くキチガイは
死んだほうがいいと思うよ。 KVM使ってて、たまにVirtual Machine Manager越しに
This usually means that QEMU or KVM is not installed on your machine, or the KVM kernel modules are not loaded.
って出て新規ゲストが作れなかったり、マイグレーション出来なくなることってない?
調べてもわかんねーんだが。
ログにもたいした内容出てないし。 ホストとゲストに同じディスクの同じパーティションをマウントしてます.
片方でそのパーティションを変更しても,もう片方ではその変更が
同期されないんですけど,同期させるにはなにかオプションとか
必要ですか? 何がどうなってんのか詳しく書かないと解らんです。
どうやってマウントしてるのか、ゲストのOSは何なのか、
何をマウントしてるのか。 >>494
どうも,詳しく書かせてもらいます.
OSはホスト,ゲスト共に Debian squeeze です.
「ホストの /dev/sdf というディスクをホスト,ゲスト両方で使いたい」というのが目的です.
/dev/sdf は3TBのHDDでパーティションは1つのみ,ファイルシステムはext4でフォーマットしてます.
ホストでは普通に
host# mount /dev/sdf1 /mnt
でマウントしていて,中身がきちんと見れます.
ゲストの方は,libvirt で /dev/sdf を disk device として接続しており,
ゲストでは /dev/vdd として認識されています.これで
guest# mount /dev/vdd1 /mnt
とやると普通にマウントができて,最初にマウントした時は両者とも
/mnt 内のファイルは一致していました.
しかし,片方で新しいファイルを作ったり削除しても,もう片方のほうでは
それが反映されません.というのが問題点です.
mount のオプションかなー,とおもって どちらのマウントも sync にして見ましたが,
結果変わらずでした.なにかご意見お願いします. また,/dev/sdf のディスク以外もゲストに接続しているので,
そのディスクでもホスト,ゲスト両方でマウントして,
同様に内容を編集してみましたが,やはり内容の編集は
反映されませんでした.特定のディスクの問題という
わけではないようです.
今までは各ディスクはゲストのみで使うようにしていて,
ゲスト,ホスト両方で使う用途がなかったので気づきませんでした. 連レスすいません.
詳しいバージョンを書いておきます.
デフォルトの sueeze の kvm と libvirt が古かったので,
backports の新しいものをインストールしています.
カーネル: 2.6.32-5-amd64
kvm: QEMU emulator version 1.1.2 (qemu-kvm-1.1.2+dfsg-5~bpo60+1, Debian)
libvirt: 0.9.12 共有想定してないファイルシステムを複数箇所からマウントすると壊れないか? クラスタファイルシステム使わないとダメかと。でもNFS使った方がお手軽かも ■ このスレッドは過去ログ倉庫に格納されています