2012年11月25日日曜日

KVM (Kernel-based Virtual Machine) の migration を行う際に、開ける必要のあるファイアウォールのポート番号

一番初めに答えから言いますと、KVM (Kernel-based Virtual Machine) の migration を行う際に、開ける必要のあるファイアウォールのポート番号は、「49152-49215」です。

この投稿では、CentOS 6.3 (x86_64) + GNOME (GUI) にて、ファイアウォールのポートを開ける手順を説明します。

GNOME (GUI) ではなく、iptables を CUI で手作業で設定されている方は、「49125-49215」を空けるように CUI で手作業設定を変更して下さい。(この投稿では、主に GUI の設定手順を説明します。CUI の設定手順はこの文章の補足をご参照ください)

  1. GNOME でファイアウォール設定画面を起動します。

    「(GNOME の) システム」→「設定」→「ファイアウォール」

    図1.「ファイアウォール設定(GUI) を起動する」

  2. GNOME でファイアウォール設定画面の起動時に、警告メッセージが表示されます。

    「CUI で手作業でファイアウォール (iptables) の設定をしている場合は、この GUI のファイアウォールの設定画面は使わずに、手作業で設定を行なって下さい。」という意味です。

    図2.「ファイアウォール設定(GUI)画面起動時の警告メッセージ」

    ここでは、「閉じる」を押します。

  3. 左側で「その他のポート」をクリックします。右側にポートが「49152-49215」でプロトコルが「TCP」の行が存在するどうかを探します。

    以下の画面の例ではすでに存在しているので、「49152-49215」の「TCP」のポートはすでに開かれている状態です。これ以下の作業は不要です。

    図3.「ファイアウォール設定(GUI)画面」

  4. 左側で「その他のポート」をクリックします。右側にポートが「49152-49215」でプロトコルが「TCP」の行が存在しない場合は、ポートが「49152-49215」でプロトコルが「TCP」の行を追加する必要があります。
    1. 「追加」ボタン (※ 図3を参照) をクリックします。
    2. 「ユーザー定義」のチェックボックスをオンにします (※ 図4を参照)。
    3. 「ポート」の欄には「49152-49215」と入力します (※ 図4を参照)。
    4. 「プロトコル」は「TCP」を選択します (※ 図4を参照)。

    図4.ファイアウォールの空きポート追加の画面

    「OK (※ 図4を参照)」→「適用 (※ 図3を参照)」→「(警告画面の) はい」の順番にクリックします。

補足 その1 「/etc/sysconfig/iptables」を直接手動で編集する場合

手作業で修正を行う場合は、「vi /etc/sysconfig/iptables」などで iptables のファイルを開き、

-A INPUT -m state --state NEW -m tcp -p tcp --dport 49152:49215 -j ACCEPT

という行を追加します。以下、追加した例です。

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 49152:49215 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

追加し終えたら、保存して vi を終了します。

iptables ファイルに加えた変更を有効にするために、iptables サービスを一旦停止して、再起動します。

[root@pc111 ~]# service iptables stop
iptables: ファイアウォールルールを消去中: [ OK ]
iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ]
iptables: モジュールを取り外し中: [ OK ]
[root@pc111 ~]# service iptables start
iptables: ファイアウォールルールを適用中: [ OK ]
iptables: 追加のモジュールを読み込み中:nf_conntrack_netbios[ OK ]
[root@pc111 ~]#

以上で、手動で iptables ファイルを編集する方法は終了です。

参考

2012年11月11日日曜日

KVM (Kernel-based Virtual Machine) のゲストOS (guest OS) を、仮想マシンマネージャーでマイグレーションを実行すると「No such file or directory」のエラーが発生する場合の対処

質問

KVM (Kernel-based Virtual Machine) のゲストOS (guest OS) を、仮想マシンマネージャーでマイグレーションを実行すると「No such file or directory」のエラーが発生する場合があります。その場合の対処はどのようになっていますか?

回答

このファイルは、仮想ハードディスクのファイルです。

dd コマンドにて、そのファイルをダミーで作成します (= 内容は全く無関係のファイルを作成)。

ここでは、pc111(ホストOS)上の「pc162」というゲストOS(仮想マシン) を、pc121(ホストOS) にマイグレーションする場合を例に説明します。

具体的には、「pc111というホストOS上の、『pc162』というゲストOSの仮想ハードディスクファイルの『pc162.img』を、pc121というホストOSに作成する」場合を例に説明します。

  1. 「コピー『元』ホストOSのマシン」にて、コピー元のオリジナルの仮想ハードディスクファイルのファイルサイズを確認します。

    KVM (Kernel-based Virtual Machine) の仮想ハードディスクファイルはデフォルトでは、「/var/lib/libvirt/images/」ディレクトリ内に存在します。

    [root@pc111 ~]# cd /var/lib/libvirt/images

    「ls -al」を実行して、ファイルサイズを確認します。ここでは例として「pc162.img」のファイルサイズを確認します。

    [root@pc111 images]# ls -al
    合計 608174148
    drwx--x--x. 2 root root 4096 8月 24 03:31 2012 .
    drwxr-xr-x. 9 root root 4096 9月 19 07:07 2012 ..
    -rwxr-xr-x. 1 qemu qemu 128849018880 11月 11 21:21 2012 pc154.img
    -rwxr-xr-x. 1 qemu qemu 128849018880 11月 11 21:19 2012 pc155.img
    -rwxr-xr-x. 1 qemu qemu 128849018880 11月 11 21:21 2012 pc156.img
    -rwxr-xr-x. 1 qemu qemu 128849018880 11月 11 21:20 2012 pc157.img
    -rw-------. 1 qemu qemu 42949672960 11月 11 21:21 2012 pc162.img
    -rw-------. 1 root root 42949672960 9月 6 14:11 2012 pc163.img
    -rw-r--r--. 1 root root 21474836480 9月 6 23:17 2012 pc171.img
    [root@pc111 images]#

    「pc162.img」のファイルサイズは「42949672960」バイトです。これは「40」GB と同じ意味です。

  2. 「コピー『先』ホストOSのマシン」にて、dd コマンドを利用して、ダミーのファイルを作成します。「/var/lib/libvirt/images/pc162.img」というファイルを、40GB のファイルサイズで作成する場合の例は以下の通りです。

    まずは、「/var/lib/libvirt/images/pc162.img」というファイルが既に存在しているかを確認します。

    [root@pc121 ~]# cd /var/lib/libvirt/images
    [root@pc121 images]# ls
    [root@pc121 images]#

    ls コマンドを実行しても、「pc162.img」というファイルは表示されませんでした。

    次に、dd コマンドで「pc162.img」というファイルを作成します。

    [root@pc121 images]# dd if=/dev/zero of=/var/lib/libvirt/images/pc162.img bs=1G count=40

    上のとおりに入力して「Enter」キーを押すと、dd コマンドが実行されます。時間がかかるので待ちます。

  3. dd コマンドの実行が終了した時の画面表示の例です。

    以下の画面では 40GB ではなく、43GB と表示されていますが、正しく 40GB のファイルが作成されているので心配する必要はありません。

    [root@pc121 images]# dd if=/dev/zero of=/var/lib/libvirt/images/pc162.img bs=1G count=40
    40+0 records in
    40+0 records out
    42949672960 bytes (43 GB) copied, 444.256 s, 96.7 MB/s
    [root@pc121 images]#
  4. これで、仮想マシンマネージャーで「オフラインでマイグレーション」を実行すると、(時間はかかりますが) マイグレーションが実行できるようになります。

KVM(Kernel-based Virtual Machine) のゲストOS (guest OS) を仮想マシンマネージャーで起動する手順

1.はじめに

KVM(Kernel-based Virtual Machine) のゲストOS (guest OS) を仮想マシンマネージャーで起動する手順をここでは説明します。

手順の説明の際に利用した環境は以下のとおりです。

ホスト OS (host OS)CentOS 6.3 (x86_64)
ホスト OS (host OS) の hostnamepc111
ホスト OS (host OS) の X-Window の種類GNOME
ゲスト OS (guest OS)Windows 7 Professional (64bit)
ゲスト OS (guest OS) の hostnamepc157

このブログの投稿では、「pc111」上で、仮想マシンの「pc157」を起動する場合を例に説明します。

2.準備

以下の手順を実行する前に、あらかじめ、pc111 の CentOS を起動してログインをしておきます。

3.実際の手順

  1. CentOS にログイン済みの状態で、仮想マシンマネージャーを起動します。

    「アプリケーション」→「システムツール」→「仮想マシンマネージャ」

  2. 以下は、仮想マシンマネージャーが起動した直後の画面です。
  3. ここでは例として、「pc157」という仮想マシン (ゲストOS、guest OS) を起動します。

    「pc157」を右クリックして、「実行」を左クリックします。

  4. 「pc157」という仮想マシン (ゲストOS、guest OS) の電源がオンになりました。

    仮想マシンマネージャーの画面上は「pc157」は「停止中」から「実行中」に表示が変わっています。

  5. 「pc157」という仮想マシン (ゲストOS、guest OS) の画面を表示したい場合は、「pc157」を右クリックして「開く」を左クリックします。
  6. 「pc157」という仮想マシン (ゲストOS、guest OS) の画面が表示されます。以下はその表示例です。

    「pc157」起動中の画面(その1)

  7. 「pc157」起動中の画面(その2)です。
  8. 「pc157」起動中の画面(その3)です。