2015サーバ屋日記2002年創業のインフラ屋さんです。サーバーの販売からWEBサービス系のクラスタシステム構築が得意です。AWS、GCP、オンプレ実績あります。2015年10月29日木曜日マイKVM環境を晒しておきます。environment.皆さん、こんにちは。最近、寒暖差が激しいので、お体には気をつけてくださいね。Jessie用のKVM環境をご紹介します。Machineの略で、Linuxのカーネルで実装された仮想マシンハイパーバイザーのことです。一般的には、ハイパーバイザー自体を指すよりも、それを用いた仮想マシンの方式のことを指す場合も多いかと思います。弊社ではKVMによる仮想環境を用い、各種サーバプログラム、WEBクラスターなどの検証を行っています。最近のLinuxディストリビューションでは、すでに簡単な操作で仮想マシンを立ち上げることが可能です。kvmが最初にバニラカーネルに組み込まれたlinux-2.6.20の頃から自家製スクリプトでkvm仮想マシンを利用しており、それが使い易く、興味を持ってくれる人もいるかもしれないのでここに公開する次第です。仮想マシンの抽象化ライブラリであるlibvirtを介さずGUIなども無いので、比較的仕組みが理解しやすくカスタマイズが簡単であることがメリットかと考えています。カーネルの最新機能や最新のqemuに追従することもたやすくできます。それでですね、ものはここにおいてあります。allするを行えばオッケーです。busyboxとkernelのコンパイル時にmenuconfig画面が表示されますが、通常はそのままExitしてください。何か思うところがあってカスタマイズしたい場合は、そこでカスタマイズを行ってください。仮想マシンの実行は、/kvm/sbin/kvmスクリプトで行います。domainソケットを通してのqemuプロセスの制御です。v001という仮想マシンを起動してみます。v001が生きているかどうかは、次のように確認できます。次にv002を起動し、状態を確認してみます。稼働中の仮想マシンの一覧は、以下のように確認できます。conのカラムはコンソールソケット、monのカラムはモニターソケット、imgのカラムはVMのイメージファイルの状態を表しています。uとなっていますが、これはコンソール、モニターの両ソケットが接続可能で、イメージファイルが使用中(VMが稼働中)であることを表しています。今度は、v001のコンソールに接続してみます。コンソールに接続するとログインプロンプトが表示されるのでroot/rootでログインします。rootのパスワードはMakefileにベタ書きしてあり、イメージtemplate作成時に設定されます。コンソール接続を終了するには"Ctrl+]"をタイプします。テンプレートイメージ作成時には、/root/.ssh/authorized_keysもコピーしていますので、ホストのマシンと同じ鍵でsshログインすることが可能です。v001のIPアドレスはinitrdの中で172.16.1.1を決め打ちで設定しています。v002の場合は172.16.1.2、v250の場合は172.16.1.250が割り当てられ、v250を上限にしてあります。これらのホスト名、IPは、セットアップ時にホストの/etc/hostsに追記してあります。ゲストマシンからは、ホストマシンのNATを介して外部のネットワークと通信が可能です。同じホスト上の仮想マシン間で通信することも可能です。別ホストからは、直接仮想マシンにアクセスできないようになっていますので、別ホスト上の仮想マシンとは通信できません。したい場合は、ブリッジとvlanの設定を工夫することで、通信可能になるでしょう。仮想マシンを停止したいときは、仮想マシンにログインしpoweroffを実行するか、以下のようにshutdownコマンドを発行します。listコマンドで見ると、停止しているv001は以下のように見えます。v001のイメージを完全に消したいときは、仮想マシンが停止した状態で、/kvm/data/v001.imgを消してください。だいたい使い方は以上になります。