如何正确使用 Xen 虚拟机管理程序上的 Ubuntu 服务器?除了理论层面,我对 RAID 或 Xen 没有任何经验。
其他要求:
- 使用 mdadm 软件 RAID 5(可以位于单独的磁盘上),多个实例可以访问
- 半虚拟化 Ubuntu Server 客户机实例
目前可能的想法:
- 带有 ubuntu-xen-server 包的 Ubuntu 主机(dom0)(据称不受支持)
- dom0 主机将“拥有” RAID 5 分区
- 更多 Ubuntu 服务器作为访客服务器
- Citrix XenServer 裸机主机
- XenServer 将拥有 RAID
- Citrix XenServer 裸机主机
- Ubuntu 客户实例创建并拥有 RAID
问题和疑虑:
- Ubuntu 可以用作 dom0 Xen 主机吗?
- XenServer 可以安装 mdadm 等软件包并创建分区吗?
- 多个客户机可以访问(R + W)同一个数据分区(RAID)吗?
注意:由于它可能与支持有关,我指的是 Ubuntu Server 10.04
答案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 。也许这对你有用。它一定很相似,甚至更简单。
- Xenserver 没有安装 mdadm,它来自 os 包,在此 ubuntu 中。您必须执行 #sudo apt-get install mdadm 并使用 mdadm 命令创建 RAID 分区。
- 多个客户机可以共享同一个数据存储,但不能共享同一个文件。但可以位于同一个分区中。客户机操作系统中的分区和数据作为文件存储在主机操作系统中。所以它们可以愉快地共享同一个分区。我认为有办法在主机操作系统和客户机操作系统之间共享某个目录。我已经在作为主机的 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
祝虚拟机愉快