Ubuntu/kvm虚拟环境摸索实践

Kvm、VMware、Virtualbox、Xen、Qemu 等
回复
头像
drunkfish
帖子: 76
注册时间: 2011-04-30 17:17

Ubuntu/kvm虚拟环境摸索实践

#1

帖子 drunkfish » 2013-04-17 9:28

手头有一台HP DL160 G6,考虑选用Ubuntu 12.04 Server 作为宿主机OS是因为其对HP服务器的硬件支持比较全面,并且自己已经安装使用Ubuntu 12.04 Desktop一段时间了,懒得去学新的OS了,也省去了到处找驱动的麻烦;稳定性上没有比较过其他操作系统( 一个月内机器死过一次,原因不明)。具体支持机型和对应版本可以查询 http://www.ubuntu.com/certification/server/

环境中机器的命名和IP:

Server: Host name: IBSHUB01 IP:192.168.1.7
Guest name: IBSHVM01..02..03...... IP:192.168.1.11..12..13......
Ubuntu desktop name: HP8440p IP:192.168.2.54

1. Ubuntu 12.04 Sevrer的安装
服务器没有光驱,用Ubuntu 12.04 Desktop里的《启动盘创建器》把ubuntu-12.04.2-server-amd64.iso制作成USB启动安装盘。直接用USB盘启动HP服务器进行安装。在安装时选择了Openssh和虚拟机的选项;磁盘中创建了和机器同名的vg(IBSHUB01),然后根据Ubuntu的服务器安装指引,按照网络和虚拟机部分的要求安装了:

代码: 全选

sudo apt-get install bridge-utils
没注意,KVM和libvirt-bin是不是在服务器安装时已经安装了,就再装了一次;

代码: 全选

sudo apt-get install kvm libvirt-bin
sudo apt-get install virtinst
把自己加到libvirtd的组里

代码: 全选

sudo adduser $USER libvirtd
为传送文件,又安装了sshfs

代码: 全选

sudo apt-get install sshfs
2. 在笔记本上装了virt-viewer用于远程图形界面安装,virt-manager没怎么用过,不过也安装了。

代码: 全选

sudo apt-get install virt-viewer virt-manager
Remmina应该是Ubuntu安装包里现成就有的可以RDP访问Windows的Guset

3. Guest的安装介质都转换成iso放笔记本在home的iso目录中; 建立IBSHUB01和HP8440p的SSH连接。用sshfs映射笔记本的iso目录,并复制安装文件去IBSHUB01的home目录。

代码: 全选

rogerz@IBSHUB01:~$ sshfs rogerz@192.168.2.54:/home/rogerz/iso/ ~/iso/
rogerz@IBSHUB01:~$ cp ~/iso/ubuntu-12.04.2-server-amd64.iso ~/
4. 在IBSHUB01上为Guest创建一个Logical Volume。LVs可以在/dev/VGname下列出,我的VG和机器同名:

代码: 全选

rogerz@IBSHUB01:~$ ls /dev/IBSHUB01
lvol0  lvol1  lvol2  lvol3  lvol4  lvol5  root  swap_1  vm01bkp
创建时不指定LV的名字,系统根据lvol0,lvol1,lvol3...的顺序进行自动创建。如在IBSHUB01创建一个50G的LV:

代码: 全选

sudo lvm
lvm> lvcreate -L 50G IBSHUB01
  Logical volume "lvol6" created
5. 修改/etc/network/interfaces, 创建bridge,我的例子如下:

代码: 全选

rogerz@IBSHUB01:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address 192.168.1.7
    netmask 255.255.255.0
    gateway 192.168.1.254
    dns-search XXXXXX.com
    dns-nameservers 192.168.1.2 192.168.1.4

auto br0
iface br0 inet static
    address 192.168.1.48
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.254
    bridge_ports eth0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp off
6. 安装一个Guest的Ubuntu server
在IBSHUB01上执行

代码: 全选

rogerz@IBSHUB01:~$ sudo virt-install -n IBSHVM06 -r 2048 --disk path=/dev/IBSHUB01/lvol6 -c ubuntu-12.04.2-server-amd64.iso --accelerate --network bridge=br0,model=virtio --connect=qemu:///system --vnc --noautoconsole -v
其中IBSHVM06为新建Guset的名字,指定2G内存,安装去之前创建的逻辑卷,从home目录中的ubuntu-12.04.2-server-amd64.iso启动安装,指定br0为bridge
检查下IBSHVM06的状态。

代码: 全选

rogerz@IBSHUB01:~$ virsh list --all
 Id Name                 State
----------------------------------
  1 IBSHVM01             running
  2 IBSHVM02             running
  3 IBSHVM04             running
  4 IBSHVM05             running
  7 IBSHVM06             running
  - IBSHVM03             shut off
去笔记本,用图形界面继续安装步骤:

代码: 全选

rogerz@HP8440p:~$ virt-viewer -c qemu+ssh://rogerz@192.168.1.7/system IBSHVM06
7. 安装一个Guset的Windows2008R2 Server 64bit,需要下载一个virtio的Windows驱动 (http://alt.fedoraproject.org/pub/alt/vi ... mages/bin/),否则会发现,Windows安装过程中找不到硬盘

安装命令一样,更改下安装介质

代码: 全选

rogerz@IBSHUB01:~$ sudo virt-install -n IBSHVM06 -r 2048 --disk path=/dev/IBSHUB01/lvol6 -c win2008r2.iso --accelerate --network bridge=br0,model=virtio --connect=qemu:///system --vnc --noautoconsole -v
但这样肯定完成不了windows安装。用下面的命令终止安装。

代码: 全选

rogerz@IBSHUB01:~$ virsh destroy IBSHVM06
然后编辑IBSHVM06的XML脚本

代码: 全选

rogerz@IBSHUB01:~$ sudo virsh edit IBSHVM06

代码: 全选

<domain type='kvm'>
  <name>IBSHVM06</name>
  <uuid>e9cf7e96-3df3-05e5-328a-c0aa69c4deff</uuid>
  <memory>2097152</memory>
  <currentMemory>2097152</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='pc-1.0'>hvm</type>
    <boot dev='cdrom'/>                                                                    <----插入行
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/IBSHUB01/lvol6'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' unit='0'/>
    </disk>                                                                                              
    <disk type='file' device='cdrom'>                                                     <----插入段开始
      <driver name='qemu' type='raw'/>
      <source file='/home/rogerz/win2008r2.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/home/rogerz/virtio-win-0.1-52.iso'/>
      <target dev='hdd' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='1'/>
    </disk>                                                                                             <--- 插入段结束   
    <controller type='ide' index='0'>
.......
编辑后退出,用命令

代码: 全选

rogerz@IBSHUB01:~$ virsh start IBSHVM06
重新开始安装

在笔记本图形界面继续安装

代码: 全选

rogerz@HP8440p:~$  virt-viewer -c qemu+ssh://rogerz@192.168.1.7/system IBSHVM06
在Win安装过程中,当安装到选择安装目的盘时,选择手动从第二个光驱安装virtio的windows驱动就可以了。安装完成后记得重新编辑IBSHVM06的XML脚本,把插入的内容删掉,否则下次启动又进安装了。

8. 如果想起第二个Win2008r2 server或Ubuntu server, 就创建一个新的LV,然后

代码: 全选

sudo virt-clone -o IBSHVM06 -n IBSHVM07 --file=/dev/IBSHUB01/lvol7


从论坛中学到了很多相关的知识,希望自己的经验会帮到后来的人;也希望得到各位的指正和建议。
上次由 drunkfish 在 2013-04-17 15:35,总共编辑 8 次。
怅怅莫怪少时年 百丈游丝易惹牵
何岁逢春不惆怅 何处逢情不可怜
杜曲梨花杯上雪 灞陵芳草梦中烟
前程两袖黄金泪 公案三生白骨禅
老后思量应不悔 衲衣持钵院门前
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: Ubuntu/kvm虚拟环境摸索实践

#2

帖子 eexpress » 2013-04-17 9:42

kvm的确适合跑服务。

btw: kvm和virtualbox,不打架了,和谐了。
● 鸣学
头像
szyzln
帖子: 910
注册时间: 2008-10-31 15:28
来自: 中国上海
联系:

Re: Ubuntu/kvm虚拟环境摸索实践

#3

帖子 szyzln » 2013-10-16 9:12

用“qemu-img create -f qcow2 WinServer2008RC.img 20G”创建的硬盘,为什么检测不到
家乡:湖南张家界
头像
drunkfish
帖子: 76
注册时间: 2011-04-30 17:17

Re: Ubuntu/kvm虚拟环境摸索实践

#4

帖子 drunkfish » 2013-10-16 11:15

问题的背景不是很清晰,大致猜测你是用qemu-img代替logical volume作为安装目的盘。

更改VM的definition:

代码: 全选

$ virsh edit VMNAME
找到device部分,这里是LV的:

代码: 全选

 21   <devices>
 22     <emulator>/usr/bin/kvm</emulator>
 23     <disk type='block' device='disk'>
 24       <driver name='qemu' type='raw'/>
 25       <source dev='/dev/IBSHUB01/lvol0'/>
 26       <target dev='hda' bus='ide'/>
 27       <address type='drive' controller='0' bus='0' unit='0'/>
 28     </disk>
qcow2大致如下:

代码: 全选

<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='none'/>
  <source file='‘/>
  <target dev='hda' bus='virtio'/>
</disk>
问问题如果能用’请‘,应该显得有礼貌点。
怅怅莫怪少时年 百丈游丝易惹牵
何岁逢春不惆怅 何处逢情不可怜
杜曲梨花杯上雪 灞陵芳草梦中烟
前程两袖黄金泪 公案三生白骨禅
老后思量应不悔 衲衣持钵院门前
头像
drunkfish
帖子: 76
注册时间: 2011-04-30 17:17

Re: Ubuntu/kvm虚拟环境摸索实践

#5

帖子 drunkfish » 2013-10-16 11:45

另外,个人感觉用logical volume管理磁盘空间对将来的管理调整更加方便。
怅怅莫怪少时年 百丈游丝易惹牵
何岁逢春不惆怅 何处逢情不可怜
杜曲梨花杯上雪 灞陵芳草梦中烟
前程两袖黄金泪 公案三生白骨禅
老后思量应不悔 衲衣持钵院门前
回复