読者です 読者をやめる 読者になる 読者になる

F@N Ad-Tech Blog

株式会社ファンコミュニケーションズ nend・nex8のエンジニア・技術ブログ

KVM virt-cloneによる仮想マシンの複製

KVM 仮想化

こんにちは、ADN事業部のt_oookaです。 スマートフォン向けアドネットワークサービスnend(ネンド)のインフラを担当 させていただいています。

今回は、初回ということで検証作業等でいつもお世話になっているKVMについて 触れてみようと思います。

仮想マシンの作成

さしあたりサーバ(物理)に「CentOS6.3」がインストールされており、仮想化関連の パッケージがインストール済みの状態を前提に進めていきます。

# virsh list --all

Id    Name                           State

現時点では、仮想マシンが作成されていない状態ですので、最初にテンプレート となる仮想マシンを作成します。

# virt-install                                               \ --name centos63                                              \ --hvm                                                        \ --os-type=Linux                                              \ --os-variant=rhel6                                           \ --ram 1024                                                   \ --vcpu=1                                                     \ --graphics none                                              \ --disk=/var/lib/libvirt/images/centos63,format=qcow2,size=5  \ --network bridge=virbr0                                      \ --location http://ftp.riken.jp/Linux/centos/6.3/os/x86_64/   \ --extra-args='console=tty0 console=ttyS0,115200n8' この後、テキストモードでのOSインストールとなるので、適宜設定を 行います。

・ホスト名の設定 centos63

・ネットワークの設定 eth0 ipaddress : 192.168.122.2 netmask   : 255.255.255.0 default gateway : 192.168.122.1

# virsh list --all

Id    Name                           State

1     centos63                       running

ホストから仮想マシンのコンソールへ接続する場合は以下のようにします。

virsh console centos63

また、sshで接続する場合は、以下の通りです。

ssh 192.168.122.2

仮想マシンの複製

ここまでで、一旦はテンプレートなる仮想マシンの作成が完了したので、 今度は、この仮想マシン(centos63)をテンプレートとして仮想マシンを 複製してみます。

まず、複製する前に複製元となる仮想マシンを停止します。

virsh shutdown centos63

仮想マシンが停止していることを確認します。

# virsh list --all

Id    Name                           State

-     centos63                       shut off

仮想マシンが停止していることが確認できたので、次は、仮想マシンを複製します。

# virt-clone                            \ --original centos63                     \ --name guest01                          \ --file /var/lib/libvirt/images/guest01

仮想マシンの複製が行われたかどうかを確認します。

# virsh list --all

Id    Name                           State

-     centos63                       shut off -     guest01                        shut off

仮想マシンの複製が行われているようなので、さっそく複製を行った 仮想マシンを起動します。

virsh start guest01

複製を行った仮想マシンの起動を確認します。

# virsh list --all

Id    Name                           State

2     guest01                        running -     centos63                       shut off

なお、このままでは複製を行った仮想マシンについて

・ホスト名が「centos63」となっている ・eth0が認識されない

状況なので、複製を行った仮想マシンへコンソール接続を 行い、以下のファイルを修正します。

・ホスト名の修正 /etc/hosts /etc/sysconfig/network

・ネットワークインタフェース(eth0)の修正 /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/udev/rules.d/70-persistent-net.rules

virsh console guest01

※ 以下は、複製を行った仮想マシンでの操作となります。

vi /etc/hosts

vi /etc/sysconfig/network

vi /etc/sysconfig/network-scripts/ifcfg-eth0

vi /etc/udev/rules.d/70-persistent-net.rules

※ 設定の変更を反映させるため、一旦再起動します。

shutdown -r now

ホスト名の確認

hostname

ネットワークインタフェース(eth0)の確認

ifconfig eth0

今回は、仮想マシンの作成及び複製について簡単に手順を記載 いたしました。

コマンドでの操作となりますが、かなり容易に仮想マシンの 作成・複製が行えます。

ただ、複製する仮想マシンが多くなると、複製した仮想マシンに 都度コンソール接続して設定を変更する方法では時間ばかりが かかってしまいますので、このあたりの操作を効率化する方法を 検討してみたいと思います。