natural born minority
ま、題名は詐欺っぽくて「ワンライナー書いて移行一瞬だった」ってことが言いたかっただけなんですけどね。
基本的に「世界にはLinuxしか存在しない」はずなので、「環境が用意したい」となれば、Dockerを用意すれば良いし、困ってないのです。
ただ「異界の異形の勢力」であるWindowsなどが絡んでくると、どうしても「(ソフトウェアレベル以上の)プラットフォーム仮想化」を使わざるを得ません。
とはいえ、迷うことはなく
程度だと考えています(そない選択肢も無いですからね)。
で、時間なくて手を抜いてある端末にVirtualBoxなぞ使ってしまったのですが「WindowsサーバがVirtualBoxで動かなかった」というトラブルに見舞われてしまい…。
KVMを使い始めようと思ったのですが…「思ったより仮想イメージを多く作ってた」ので、「コンバートして全引っ越しできないか」をやってみました。
両方「以前からインストールしてた」ので、基本ここの解説はありません。
が、VirtualBox、KVMともにこちらにAsCodeしてあるので、いつでも再現できます。 ( insatll_virtualbox() 、 install_kvm() という関数がそれです)
ただKVMについては、基本「インストール後は仮想マシンは外に公開できない(Host⇔Guestだけで外からGuestを見れない)ので、ブリッジ接続用意しなければ使い物になりません。
なので、
作業が要ります。
sudo apt-get remove -y network-manager
sudo vi /etc/network/interfaces
# 以下を追加
auto ${マシン固有IF名}
iface ${マシン固有IF名} inet manual
auto br0
iface br0 inet static
address ${固定したい自宅ネットのIP}
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_stp off
bridge_ports ${マシン固有IF名}
最近は「ネットワークカードのデバイス命名則が変わっている」ので、eth0とか例に書けないですねw
/etc/network/interfaces を編集し、 sudo systemctl restart networking などして、試行錯誤してる時にどうしてもifupのところで、かならずエラーとなるため、ifup 単体で叩いたところ、
sudo /sbin/ifup -a --read-environment -v
...
Failed to bring up br0.
...
run-parts: /etc/network/if-up.d/ubuntu-fan exited with return code 1
...
となり、さらに /etc/network/if-up.d/ubuntu-fan を見てみると、どうやら /usr/sbin/fanctl が存在しない様子…。
なので、このファイルが含まれるパッケージをインストールしたところ、このエラーは出なくなりました。
sudo apt-get install ubuntu-fan
必須なら依存性で解決しておいて欲しいですけど…バグって言っちゃうといちゃもんかなー?
VirtualBoxとKVMの(デフォルトで作った)イメージの違いは、
VirtualBoxイメージのファイル
~/VirtualBox VMs/[環境名] に保存される(フォルダ名に半スペやめてw)[環境名].vbox,[環境名].vbox-prevな設定ファイル と [環境名].vdi なHDDイメージファイルで構成される
vdix,hddなど「作成時に選んだ形式」で保存されるkvmイメージのファイル
/var/lib/libvirt/images に保存される[環境名].qcow2 のファイル一つに保存されるqcow2 形式だが選択可(それにより拡張子変わる)で、変換すべきは「ハードディスクの中身」である「HDDイメージファイル」です。それが変換したい。
でも、おあつらえ向きに qemu-utilsをインストールした時に入るqemu-imgコマンドが「世の大体の仮想HDDイメージファイルに対応している」ので、これを使わせてもらいます。
for i in $(ls ~/VirtualBox\ VMs/*/*.vdi)
do
sudo qemu-img convert -O qcow2 $i /var/lib/libvirt/images/`basename ${i%.*}`.qcow2
done
qemu-img convert サブコマンドに「出力形式にqcow2」を指定して出力しています。
-f [format] オプションで、入力ファイルの形式を指定できますが、指定しなくば「自動判別」なので、上記ではそうしました。(実際には*.hddなファイルも混ざっていたりしましたが、未指定で変換できました)
HDDイメージファイルは変換できましたが、VMの設定(*.vboxの情報)は入ってないため、そこは設定しなければいけません。
virt-manager を実行し「Virtual Machine Manager」を起動します。
左上の「新しい仮想マシンの作成」ボタンをクリックします。

開いた「新しい仮想マシン」画面で、既存のディスクイメージをインポートを選び、進みます。

「既存のストレージのパスを指定してください」に先ほど変換した*.qcow2のファイルを指定します。
あとは、画面にしたがい環境を設定し完了まで行きます。
起動画面が開いたら、起動->シャットダウンまで行って「そのイメージが動くこと」を確認します。
この手順は、「元のイメージ一つずつ」に必要なので面倒くさいのですが、「マシンの設定を見なおそう」と思ってたので、あえてやりました。
CLIで作成もできるようなので、本気をだせば*vboxファイル(XMLですしね)を解析して、変換・登録もできそうです。
qemuの解説などを眺めることも多かったので「出来るっぽい」くらいのことはうっすらわかっていても「やらないとわからない」もので。
今回は備忘録ですが、これにより「わりとカジュアルに仮想化プラットフォームを行き来できる」とわかったので、いろいろ試すハードルが下がったかなと。
blog comments powered by Disqus