Xen 和 Ubuntu?

Xen 和 Ubuntu?

如何正确使用 Xen 虚拟机管理程序上的 Ubuntu 服务器?除了理论层面,我对 RAID 或 Xen 没有任何经验。

其他要求:

  • 使用 mdadm 软件 RAID 5(可以位于单独的磁盘上),多个实例可以访问
  • 半虚拟化 Ubuntu Server 客户机实例

目前可能的想法:

  1. 带有 ubuntu-xen-server 包的 Ubuntu 主机(dom0)(据称不受支持)
    • dom0 主机将“拥有” RAID 5 分区
    • 更多 Ubuntu 服务器作为访客服务器
  2. Citrix XenServer 裸机主机
    • XenServer 将拥有 RAID
  3. Citrix XenServer 裸机主机
    • Ubuntu 客户实例创建并拥有 RAID

问题和疑虑:

  1. Ubuntu 可以用作 dom0 Xen 主机吗?
  2. XenServer 可以安装 mdadm 等软件包并创建分区吗?
  3. 多个客户机可以访问(R + W)同一个数据分区(RAID)吗?

注意:由于它可能与支持有关,我指的是 Ubuntu Server 10.04

答案1

答案:

  1. Ubuntu 可以用作 dom0 主机。我已使用 rhel5 作为 xen dom0 主机,并在其上安装了 windows server 2k8 r2,它运行良好。我知道违反了 rhel 许可证,但无论如何我不会使用 rhel 5 支持合同。我依靠自己和社区的力量。我在 rhel 上使用 win serv 2k8 安装 xen 的步骤记录在我的博客中,网址为: http://maximus2882.blogspot.com/2010/10/windows-2008-enterprise-on-rhel-55.html 。也许这对你有用。它一定很相似,甚至更简单。
  2. Xenserver 没有安装 mdadm,它来自 os 包,在此 ubuntu 中。您必须执行 #sudo apt-get install mdadm 并使用 mdadm 命令创建 RAID 分区。
  3. 多个客户机可以共享同一个数据存储,但不能共享同一个文件。但可以位于同一个分区中。客户机操作系统中的分区和数据作为文件存储在主机操作系统中。所以它们可以愉快地共享同一个分区。我认为有办法在主机操作系统和客户机操作系统之间共享某个目录。我已经在作为主机的 Windows 7 中的 VirtualBox 和作为客户机的 Fedora 14 中完成了此操作。不确定如何在 xen 中执行相同操作,因为我对 xen 的使用受到限制。如果可以,我建议您使用 vmware。根据我使用 vmware 的经验,它非常成熟,是行业领先者,并且具有流畅一致的操作和界面,很少出现故障。

答案2

如果您在 Linux 上使用软件 raid,则应该为您的 dom0 实例创建一个分区,并使用硬盘的其余部分创建一个大分区。

然后,您将这个大分区用作 lvm 物理驱动器,并为每个 vm 创建一个或多个 lvm 逻辑驱动器。

这使您能够轻松增加/减少特定逻辑驱动器的大小。

答案3

1.Ubuntu 可以作为 dom0 Xen 主机吗?

在 Xen 4.0 Dom0 上设置 Ubuntu 10.04 Server PV DomU

设置 Libvirt 0.8.1 和 Xen 4.0.1 Dom0

2、XenServer是否可以安装mdadm等包并创建分区?

安装可能有点棘手,但我可能会成功。XenServer 使用 RHEL 5 和来自 rhel box 的自定义内核,您可以 ldd /path/to/mdadm 并将所有链接库复制到 XenServer 的完全相同位置。我可能会成功 ;)

**3. 多个客户机可以访问(R + W)同一个数据分区(RAID)吗?****

我确信你知道答案。

答案4

嗯,根据我的经验,我只是把细节留给 libvirt。它为我隐藏了虚拟化细节。典型的设置是安装一个普通的 ubuntu,然后安装 libvirt 和 md 工具。假设您有用于 raid 的设备,请确保它们在 fdisk 中具有正确的系统(linux raid 自动检测)。启动 fdisk,选择分区/设备,然后使用 t 命令更改其类型。下面显示了 raid 1 的示例。将设置中的级别调整为5获得突袭 5

root@mail:/etc/ldap# fdisk -l

Disk /dev/sda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1        2433    19543041   83  Linux
/dev/sda2            2434        3042     4891792+  83  Linux
/dev/sda3            3043        3286     1959930   82  Linux swap / Solaris
/dev/sda4            3287        9729    51753397+  fd  Linux raid autodetect

Disk /dev/sdb: 80.0 GB, 80032038912 bytes
255 heads, 63 sectors/track, 9730 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2433    19543041   83  Linux
/dev/sdb2            2434        3042     4891792+  83  Linux
/dev/sdb3            3043        3286     1959930   82  Linux swap / Solaris
/dev/sdb4            3287        9729    51753397+  fd  Linux raid autodetect

**You may need to modprobe the right raid module**
raid0   raid1   raid10  raid5   raid6
root@mail:/etc/ldap# modprobe raid1

**Create your array**
root@mail:/etc/ldap#  mdadm --create /dev/md0   --level=1  --raid-devices=2 /dev/sda4 /dev/sdb4
mdadm: array /dev/md0 started.
root@mail:/etc/ldap# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb4[1] sda4[0]
      51753280 blocks [2/2] [UU]
      [>....................]  resync =  0.9% (466176/51753280) finish=14.6min speed=58272K/sec

unused devices: <none>
root@mail:/etc/ldap# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb4[1] sda4[0]
      51753280 blocks [2/2] [UU]
      [==>..................]  resync = 11.5% (5956160/51753280) finish=13.6min speed=55983K/sec

unused devices: <none>

即使阵列正在同步,您也可以开始使用它。因此,我们从 lvm 开始:通常,您需要为各个 VM 设置 PV、vg,最后设置 LV。

使用 pvcreate、VG 和 LV 创建物理卷

# pvcreate /dev/md0  
# vgcreate xen02 /dev/md0
# lvcreate -L 100G -n nosql.example.net.storage /dev/xen02

然后查看你的作品

xen02:~# pvs
  PV         VG    Fmt  Attr PSize   PFree
  /dev/md0   xen02 lvm2 a-   462.49g 273.52g
xen02:~# pvdisplay
  --- Physical volume ---
  PV Name               /dev/md0
  VG Name               xen02
  PV Size               462.50 GiB / not usable 3.81 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              118398
  Free PE               70022
  Allocated PE          48376
  PV UUID               ,.........

xen02:~# vgdisplay
  --- Volume group ---
  VG Name               xen02
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  30
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                13
  Open LV               9
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               462.49 GiB
  PE Size               4.00 MiB
  Total PE              118398
  Alloc PE / Size       48376 / 188.97 GiB
  Free  PE / Size       70022 / 273.52 GiB
  VG UUID               ,,,,,......

xen02:~# vgs
  VG    #PV #LV #SN Attr   VSize   VFree
  xen02   1  13   0 wz--n- 462.49g 273.52g

xen02:~# lvs
  LV                                  VG    Attr   LSize  Origin Snap%  Move Log Copy%  Convert
  acme.example.net.root            xen02 -wi-ao 15.00g
  ca.example.net.root              xen02 -wi-ao 15.00g
  externalra.example.net.root      xen02 -wi-ao 15.00g
  box2.example.net.root          xen02 -wi-ao 15.00g

您现在可以使用 libvirt 在这种典型的 LV 上进行安装(请注意,您可以将 virt-type 从 kvm 更改为 xen.. :)) - 您可能需要删除 virtio 参数,因为这是特定于 KVM 的。

virt-install --name=virtio_template \
--ram 1024 \
--os-type linux --os-variant debiansqueeze \
--disk path=/dev/xen02/nosql.example.net.storage,bus=virtio \
--network network=default,model=virtio \
--vnc \
--noautoconsole \
--cdrom ~/debian-testing-amd64-netinst.iso \
--virt-type kvm \
--force yes

我通常做的是创建一个模板虚拟机并克隆它以创建工作虚拟机(--conect 可能是特定于 kvm 的):

#!/bin/sh
 # invoke as ./script "machine3"
MACHINENAME="Somemachine"

lvcreate -L 15G -n  "$MACHINENAME".example.net.root  /dev/xen02


echo Cloning template to $MACHINENAME
virt-clone \
        --prompt \
        --connect qemu:///system \
        --original template_master \
        --name "$MACHINENAME" \
        --file /dev/xen02/"$MACHINENAME".example.net.root 

现在您可以尽情使用 virsh 命令了。请参阅其帮助。

virsh start $MachineName

virsh shutdown $MachineName

祝虚拟机愉快

相关内容