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