对于SO来说,这可能是一个过于具体/个人的问题,但这里是:
我继承了一台当前运行单个硬盘驱动器的服务器,通过默认的 Ubuntu 16.04 服务器设置,该服务器正在以下分区方案中运行其磁盘:
sda1 : 512 Mb : Boot : primary/physical partition
sda2 : Rest of Disk : Extended Partition
sda5 : Rest of Disk : Logical, Linux LVM Partition
LVM 中有一个卷组,仅由该磁盘组成。它分为:
swap_1 (2.00 GB)
root (remaining space)
最终目标是将该驱动器的内容(和结构)移动到两个更大的、单独地可启动 RAID1 驱动器。
话虽这么说,我的“目标”是对于新 sdb、sdc 的每个新成员:
/dev/md0 将成为 sdb1 和 sdc1 之间的 raid1,它将被格式化并且(希望)是 sda1 的副本。 Md0 不会被 LVM 处理而是直接使用(这样我们就可以从它启动)
/dev/md1 将成为 sdb2 和 sdc2 之间的 raid1。 /dev/md1 将用作新 VG 的唯一 PV,与上面类似地划分(2GB 用于交换,其余用于存储)。
因此,我假设的过程包括使用恢复 CD 启动该系统,设置 md0 和 md1,在 md1 上创建 LVM,然后使用 dd 将数据从 sda1 复制到 md0,将 /dev/vg1/root 复制到 /dev/vg2/分别为根。当然,还要将 grub 安装到 /sdb 和 /sdc。
初步测试看起来很有希望,但是有更好的实践方法吗?
答案1
您正在做的事情似乎没有什么特别错误(或复杂)的地方,但由于您使用的是 LVM,因此您还有另一个选择:您可以用来pvmove
将数据移动到新数组。优点是您可以在线完成此操作,几乎消除了停机时间。
要使用 pvmove,您需要扩展现有卷组 ( pvcreate /dev/md1 && vgextend existing-group /dev/md1
),然后使用 pvmove 移动逻辑卷 ( pvmove --atomic /dev/sda5 /dev/md1
),最后从卷组 ( vgreduce existing-group /dev/sda5
) 中删除 sda5。
您可以在线复制 /boot(使用dd
),因为在正常操作期间不会使用它 - 只需先卸载它即可。
无论哪种方式,请确保更新您的 initramfs — 它现在需要启动 mdraid,而以前不需要。
计划下一次重新启动并准备一张恢复光盘,以防万一出现问题(例如,initramfs 未正确生成)。当然,首先测试和阅读手册页是一个好主意。