2019/06/17(月) 05:47:11
2019年6月
      
345678
9101112131415
16171819202122
23242526272829
最近の更新
ぶろぐぅ
06/02
CUSTOMIZE(LY3P)
06/02
CUSTOMIZE(LY3P)
06/02
CUSTOMIZE(LY3P)
06/02
ぶろぐぅ
06/01


雷禅サーバー構築記(KVMとqemu編)

初回投稿:2019/03/23 22:36:57 最終更新:2019/04/05 00:46:59

KVM周りの最後の話になります。
 
ちょっと自分の備忘録も兼ねてまずはKVMのおさらいをします。
KVMによる仮想化によって大きく出てくるキーワードは以下の3つで、それぞれの役割についてもこんな感じです。
  • KVM(Kernel-based Virtual Machine) :
    Linux自体をハイパーバイザにする仮想マシンソフトウェア。
    具体的な構成としてはKVM Kernel Moduleとqemu-kvm が存在し、前者がCPU、後者がメモリとI/Oの仮想化を担当する。
  • qemu :
    これも仮想マシンソフトウェア。ただ、基本的にCPUも含めてPC構成要素を全てソフトウェアで仮想化する。
    WindowsノートにLinuxを入れて、その上でWindowsをゲストで動かせばLinuxもWindowsも動かせてラッキーみたいな甘い考えでXenで試したらあまりの遅さに閉口してqemuにしてみた所、Xenよりはまともに動いてスゲーと思った記憶があります。KVMと絡んでいい感じに成長した模様。
  • libvirt :
    仮想化における各種制御をAPI化したライブラリ。
    別にこれはKVMの為だけではなくこれを使えばXen, VirtualBox, VMwareも制御できる。
    これのCUIであるvirshさえ覚えておけば、統一した操作感でいろいろな仮想化基盤を制御できるという感じ。
で、現在のqemuなのですが、昔は確かqemuというコマンドだったはずだったのが、上記の絡みもあってかqemu-system-x86_64なんてえらく長い名前に変わってます。

おさらい終わったので本題。
ゲスト起動に際しては、qemuとvirsh(libvirt)どちらでも行える訳です。
qemuはqemu独自の起動方法、virshではlibvirtとして統一化された起動方法で。
今回は統一感のあるvirshベースで行こうと決めたのですが、大きな違いは
  • qemu :
    コマンドであるqemu-system-x86_64の後ろにつらつらパラメータを記述しまくるタイプ。
    とんでもなく長くなるパラメータをいちいち試行の為にゼロから打つのは厳しい & 可読性の為、基本は起動用のShellを書くことになる。
  • virsh :
    qemuに相当するパラメータをXMLで用意しておき、これを事前にlibvirtに登録した上で動かすタイプ。
    virsh start macosみたいな感じで簡単に起動できる。
という感じとなります。
今回MacOSをゲスト起動する為に多大な参考となったOSX-KVMもそうなのですが、メインはqemuであってvirsh側(xml設定ファイル)にはあまり力を入れていない模様。
このサイト以外の海外の方もやっぱり設定周りの会話はqemuベースでvirshは殆ど無い。
しかもqmeu, virsh共にパラメータ自体の細かい設定記述が全然情報としてWebに流れてない。情報収集が断片的となり大分キツかったです。

一応動くかわかりませんが、お互いの記述内容を参考までに載せて一旦KVM編は終わりとしておきます。
とはいえこういう感じでバンと貼ってくれてるサイトもほとんど無いのよね…
※注意 : qemu側はvirsh化以降一切触っていないので、virsh側の定義とは一致していない部分も多いです

qemu側(OSX-KVMのboot-macOS-HS.shのカスタマイズ版)
MY_OPTIONS="+aes,+xsave,+avx,+xsaveopt,avx2,+smep"

qemu-system-x86_64 -enable-kvm -m 4096 -cpu Penryn,kvm=on,vendor=GenuineIntel,+invtsc,vmware-cpuid-freq=on,$MY_OPTIONS
	  -machine pc-q35-2.9 
	  -boot menu=on 
	  -smp 4,cores=2 
	  -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" 
	  -drive if=pflash,format=raw,readonly,file=OVMF_CODE.fd 
	  -drive if=pflash,format=raw,file=OVMF_VARS.fd 
	  -smbios type=2 
	  -device ich9-intel-hda -device hda-duplex 
	  -device ide-drive,bus=ide.2,drive=Clover 
	  -drive id=Clover,if=none,snapshot=on,format=qcow2,file=./HighSierra/Clover.qcow2 
	  -device ide-drive,bus=ide.1,drive=MacHDD 
	  -drive id=MacHDD,if=none,file=./mac_hdd.img,format=qcow2 
	  -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -device e1000-82545em,netdev=net0,id=net0,mac=52:54:00:c9:18:27 
	  -device vfio-pci,host=08:00.0,bus=pcie.0,multifunction=on,x-vga=on,romfile=./HighSierra/vbios.rom 
	  -device vfio-pci,host=08:00.1 
	  -device vfio-pci,host=09:00.3 
	  -vga none 
	  -nographic
virsh(XML設定ファイル)

  macos
  2aca0dd6-cec9-4717-9ab2-0b7b13d111c3
  14680064
  14680064
  
    
  
  8
  1
  
    
    
    
    
    
    
    
    
    
    
  
  
    hvm
    /etc/libvirt/qemu/macos/OVMF_CODE.fd
    /etc/libvirt/qemu/macos/OVMF_VARS.fd
    
  
  
    
    
      
    
  
  
    
  
  
  destroy
  restart
  restart
  
    /usr/bin/qemu-system-x86_64
    
      
      
      
      
まぁ、こんな感じでvirshの方がXMLタグ形式という事もあって行が多くなるのでビックリするのと、qemuと同じことをしようとしても違う書き方になっているところが疲れたポイントです…
ちゃんと見ると以外に対して変わりないという事は分かってはきます。

もう一つ気づくまですごく悩まされていたのが、virshのXMLファイルはlibvirtに登録(virsh define xxx.xml)し、起動させた段階でXMLファイルの内容が書き換えられしまう事。
タグ外側にある
<address bus="0x06" domain="0x0000" function="0x0" slot="0x00" type="pci"></address>
のようなaddressタグやNICのmac addressですが、書かなくても良いやつです。勝手に補完されます。
最初これの意味と何を設定したらいいのか分からずに悩まされたのですが、諦めて書かずに動かしたらどうなるかやってみたら勝手に書いてくれた…と。
一応ゲスト稼働中に仮想的にそのデバイスをどのスロットに刺したことにするかの定義みたいです。
なので、どうしても何を書いていいか分からないパラメータは一旦書かないとどうなるか見たほうが早いかもしれません。

あと、qemu→virshへのパラメータ変換に悩むものは、<qemu:commandline>の中にqemuのパラメータのまま書けます。
一部怒られる事もありますが、怒られた内容を見れば大体virsh側の記述で書けるようになります。

これ、スラスラ書ける人いるんだろうか…

ということでKVM編は最後はすごく長くなっちゃいましたがここまでにします。
次はゲストOSでmacOSを入れるに対してのネタ話を。


コメント
お名前
コメント
 
画像の文字を入力し、チェックボックスをチェックした上で送信ボタンを押して下さい。
見辛い場合は横のリロードボタンで変更出来ます。
コメントは登録されていません。

このページのトラックバックURL : https://e-tune-mt.net/hcms/index.php/tb/_/2182

トラックバック
トラックバックは登録されていません。

このページは0.173secで生成/表示されました
Ver.20160813