我有一个使用 Ubuntu 和 Xen 构建的虚拟主机服务器
所以
- Ubuntu 12.04.1 LTS 64 位
- xen-hypervisor-4.1
磁盘
- 卷组中的 Hitachi SAS 15K 147GB (x2)
- sda1 1GB /启动
- sda2 146GB LVM
- sdb1 147GB LVM
每个虚拟机至少有两个 LV(根、交换)
我有三个可用的新磁盘 Hitachi SAS 15K 600GB 我想用该磁盘创建 RAID5 并从 VG 迁移所有分区。这可能吗?如何实现?
我知道如何创建一个简单的 RAID使用 mdadm 进行简单的 RAID 设置但我希望在 RAID 上拥有 VG 的灵活性。这可能吗?如何实现?
我的需求是既有VG的灵活性,又有RAID的冗余。
答案1
首先,创建 raid 阵列。假设新驱动器是 sdc、sdd 和 sde,并且您还没有任何 raid 阵列,并且已在每个驱动器上创建了一个 raid 分区,请执行以下操作:
sudo -s
mdadm --create /dev/md0 -n 3 -l raid5 /dev/sd[cde]1
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
然后将其添加到 vg,将逻辑卷移过来,并删除现有的 pv:
pvcreate /dev/md0
vgextend vg0 /dev/md0
pvmove -i 10 /dev/sda2 /dev/md0
pvmove -i 10 /dev/sdb1 /dev/md0
vgreduce vg0 /dev/sda2 /dev/sdb1
现在您需要转移 /boot 分区,重建 initramfs,并重新安装 grub 以使系统能够从新磁盘启动:
mount --move /boot /mnt
rmdir /boot
cp -a /mnt /boot
umount /mnt
update-initramfs -u
dpkg-reconfigure grub-pc
菜单将询问 grub 应安装到哪些磁盘。选择 sdc、sdd 和 sde。现在您可以关闭并删除旧磁盘。
答案2
是的,您可以在 RAID 上使用 LVM,这完全没有问题。
您只需使用 创建 RAID mdadm
,然后在其上pvcreate
创建vgcreate
一个新的 VG。然后您lvcreate
使用 LV 并使用dd if=/dev/oldvg/lv1 of=/dev/newvg/lv1 bs=1M
类似方法将旧 LV 复制到新 VG。
这将是最快的方法 - 如果您不想继续使用旧磁盘,并且在系统在线时不进行移动,则适合。也就是说,您可以从救援或实时系统中执行此操作。
如果您需要在机器运行并积极工作时使其在线,那么您可以使用/vgcreate
将新的 raid 作为 PV 添加到现有的 VG 中。pvcreate
vgextend
然后您可以使用pvmove
使 LV 从旧磁盘移动到新 RAID,最后使用 来从 VG 中删除旧磁盘vgreduce
。在您的情况下,您需要对两个磁盘重复此操作。
但您应该注意,这pvmove
非常慢,而且也是 LVM 中最危险的操作之一。如果出现任何问题,您可能会丢失数据。制作副本更安全——如果出现问题,原始数据有望完好无损。