このウィキの読者になる
更新情報がメールで届きます。
このウィキの読者になる
カテゴリー
タグ
最近更新したページ
最新コメント
メニューバーA
フリーエリア
Wiki内検索

KVMで仮想マシン@64bit4Ubuntu8.04

これはなに?

KVMという名のLinuxをハイパーバイザーにしてしまうドライバで
VMも動かすという話。オープンソースであります。

取り合えずインストールかつ起動

sudo apt-get install kvm qemu #パッケージのインストール
sudo modprobe kvm #ドライバロード
sudo modprobe kvm_amd #ドライバロード(amdなので)
lsmod | grep kvm #確認

ドライバロードの自動化

sudo nano /etc/modules #これにて下2行を追加
kvm
kvm_amd
を追加

イメージファイルを作成

qemu-img create -f qcow vm-disk.img 20G #恒久的にアップグレードも考えると20GB

インストール

sudo kvm -no-acpi -m 512 -cdrom ./ubuntu-8.04.1-desktop-amd64.iso -hda vm-disk.img -boot d -vnc 192.168.0.1
  • hdaはディスクイメージ。
  • cdromはCDドライブ。ここではISOイメージファイルを指定。CDDなら/dev/cdrom
  • bootは起動デバイス。”c”がHDDで”d”がcd-rom。
  • mは使用メモリ。512MBを予約。単位はMB
  • vncはVNCのアドレスとポート。192.168.0.1はKVMを動かしているホストOSのIP。create

VMplayerを入れているせいか・・・

起動しない・・・ドライバロードでこける。

参考サイト

http://blog.livedoor.jp/vine_user/archives/5122242...
http://blog.sibrof.net/ken/2008/05/17/778/


追記Ubuntu8.10にUpgradeしました。

VMwareが動かなくなったので、仕方なくKVM?
ただし、結構いい感じかも。

状況:

  • まず、下記のコマンドでテスト
qemu -cdrom (インストール用iso) -hda vm-disk.img -boot d -m (ゲストに使うメモリ量)
    • 使用したOSはubuntu-8.10-desktop-amd64.isoを使用。
    • この状況ではどうもCPUが32bitになってしまうようだ。インストールできないと跳ねられる。
    • キーボードコントロールが戻ってこずに再起動するハメに。
  • 埒があかないので以下のツールを取得
sudo apt-get install virt-managaer
    • これでVMを設定する。ただし全部英語
    • 接続先はローカルホスト
    • その下にVMを新規作成
    • この時、必要な情報はすべてウィザードで設定が可能
      • ディスクもここで作れる。
      • また、実パーティーションへも指定できる模様、iSCSIとか?
    • VMwarePlayerでは出来なかったCPUの複数指定が可能。
    • いろいろ設定をいじれる。
    • ネットワークにそのままつながるので要件は達成できそう。
  • 所見
    • ビデオ描画のスピードはVMwarePlayerには劣る模様。
    • ただし、スペック上の制限はないので結構いけるかも。
    • グラフィックカードが意味不明なのできっとそこがソフトウェアで、足を引っ張っているのかも。
      • サーバーにしてしまえば問題ないよね。

追記Ubuntu9.04にUpgradeしました。

面倒なので

状況:

Ubuntu-Server9.04の場合

  • 仮想化サーバーを選択していれば既に入っている。
    • Disktopの場合は次のものを入れる
sudo apt-get install ubuntu-vm-builder
    • 確認コマンド
lsmod |grep kvm
      • これでKVMのインストールが確認できる。
    • また、ハイパーバイザーへのアクセスは以下のコマンドをローカルで実行すれば確認できる。
sudo virsh -c qemu:///system list

リモートからの接続に関して

  • まず仮想化APIサーバーを起動する。
sudo /etc/init.d/libvirt-bin start
  • 次にsudoユーザをlibvirtdのグループに追加する。
sudo adduser `id -un` libvirtd
  • このサーバーにリモートから接続。sshdが起動していることが前提
sudo virsh -c qemu+ssh://user@192.168.0.2/system
      • コントロール側にもvirshが入っている必要あり。
      • これで接続できればOK
  • 以上によりVirtual Machine Managerからアクセスが可能になる。
    • hostnameアドレスには以下の様に入れる。
user@192.168.0.2

CUIでのインストール

  • コマンド
sudo virt-install -n hostname -r 256 -f hostname.img -s 4 -c ubuntu-9.04-server-amd64.iso --accelerate --connect=qemu:///system --vnc --noautoconsole -v

ネットワーク設定

選択可能な形式

  • NAT:そのVMホスト上での
    • 一番簡単:ただし、外部からのアクセスはポート単位になる。1ポート1マシンになる。
    • 多量のマシンを活用するには不向き
    • デフォルトはこれ。VPNでつないでやるというのも手。
    • iptablesへの設定はlibvirt側でやってくれる。
  • Bridge
    • ホストのネットワークデバイスを共有する方法。
    • 共有するのでホスト同じネットワークセグメントにマシンを置ける。
    • VirtualBoxで必要だったtapインターフェイスはlibvirtでVMと一緒に作って管理してくれる。
    • リモートホストだとvirt-managerからは設定できない模様。
    • この場合VMのxmlファイルを編集してvirshから反映させるしかない。
  • Isorate Network:孤立ネット
    • 外に開く必要がないならこれも簡単。
  • Route
    • 独立したセグメントのネットワークを作る。もちろんホストマシン単位。
    • ホストに適切なRouting Tableを書けば外部からもサーバーにIPでアクセス可能
    • virt-managerからは設定できない模様。
    • VMのxmlファイルを編集してvirshから反映させるしかない。

Bridgeの環境設定

  • まずはホスト側
  • 設定ファイルを開いて
sudo nano /etc/network/interfaces
  • 以下の設定を追加
auto br0
iface br0 inet static
address 192.168.1.10
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
  • ネットワークを再起動
sudo /etc/init.d/networking restart

  • 以下VM鯖側
  • virshを開く
sudo virsh
  • 入ったら中身を確認:これで中身のインスタンス名が分かる
list --all
  • 一度出る
quit
  • 設定ファイルを編集(VMhostは上記で確認したインスタンス名)
sudo nano /etc/libvirt/quem/VMhost.xml
  • ネットワークの設定を変更
<interface type='bridge'>
<mac address='54:52:00:74:1e:af'/>
<source bridge='br0'/>
<model type='virtio'/>
</interface>
とする。
  • 変更した内容を反映するため、もう一度virshに入る
sudo virsh
  • で次のコマンドを発行
define /etc/libvirt/quem/VMhost.xml
  • あとは起動するだけ。

libvirt+virt-managerを使ってVMの作成:ISOイメージからインストール編

  • でとりあえず、VMを作る。
    • 他のマシンにてvirt-managerを導入
    • File→Add Connectionで追加
      • Hypervisorはquemで
      • ConnectionはRemote Tunnel over sshを、当然ホストにはsshdが入っていること
      • 事前に以下のコマンドでログイン先マシンのログインユーザをlibvirtdグループに追加しておくこと。
sudo gpasswd -a ユーザ libvirtd
      • hostnameにuser@192.168.0.2を入力してConnectボタンを押下
      • するとsshでのログインパスワードを訊かれるので答える。
      • キーファイルで簡単ログインでもよし
    • とりあえずISOイメージを置くエリアを確保する。
      • ホスト接続を選択、右クリックでDetailを選択
      • Storageタブを選択し、+ボタンを押下する。
      • Add Storage Poolの画面が出てくるので名前を入れ進むボタンを押下、typeはdirでOK
      • /var/lib/libvirt/images/nameとかなっているのでISOイメージが置いてあるパスに変更しFinishボタンを押下
    • できたホスト接続を選択、右クリックで新規を選択
      • 初回の画面は進むで次へ
      • NameにはVMのホスト名を入れる。この名前で表示、設定xmlファイルが作成される。進むで次へ
      • Fully virtualized を選択。進むで次へ
      • ISO image を選択。OS Type,OS Variantは適当に該当するものを。進むで次へ
      • ISO image locationにAdd Storage Poolで追加したパス+ISOファイル名を入力。進むで次へ
      • File(disk image)に適当に容量、ファイル名を設定。初期値はホスト名+.img。進むで次へ
      • NetworkはVitual networkしか選べない。これは後ほど手動で変更するのでそのままOK。進むで次へ
      • Memory and CPU Allocationは適当に。進むで次へ
      • 確認画面。よければそのままFinishへ。するとパスワードを再度訊かれるので、入力するとコンソールが開く。
      • あとは通常のマシン同様にセットアップすればOK。

参考サイト

2009年10月02日(金) 02:00:45 Modified by ryunosinfx




スマートフォン版で見る