我有一块 320GB 的硬盘,其中有一个 LVM2 卷组,它是在默认安装时创建的。如果我将第二个 320GB 硬盘放入计算机,我可以使用 Linux 软件 RAID1 或类似软件将第二个硬盘镜像到第一个硬盘吗?我尝试在 Gnome 磁盘实用程序中添加新的 RAID 阵列,但它只给了我创建具有两个空分区的阵列的选项。
答案1
如果有人仍在阅读这个老问题,请注意 raid1 现在已内置于 lvm2。要使用 lvm2 在新驱动器上镜像现有 lv,请执行以下操作:
- 安装新驱动器并创建 lvm2 分区(至少与您现有驱动器的 lvm 分区或您想要镜像的分区大小相同)(使用
parted /dev/newdrive
或sfdisk -d /dev/sda | sfdisk /dev/sdb
假设 sdb 是您的新驱动器) - 将新分区初始化为 lvm2 pv(s) (
pvcreate /dev/newpartition
) - 将现有的 lvm2 vg 扩展到新的分区(
vgextend /dev/myvg /dev/newpartition
),然后首先检查并确认新驱动器上的范围数量相同或更多(pvdisplay
)新驱动器上的可用 PE 应该大于旧驱动器的总 PE。 对于要在新分区上镜像的每个 lv:
lvconvert -m1 /dev/myvg/existinglv /dev/newpartition
(即,将我现有的(线性)lv 转换为具有 1 个额外镜像腿的 raid1 镜像 lv,并在给定的新 pv/分区上分配镜像腿所需的新 PE)
请注意,您将需要在现有和新的 lv 上留出一些额外的空间,因为 lvm2 raid1 镜像段(默认)将其日志存储在与镜像腿相同的 pv/段上(您将需要在现有和新的 pv 上每个镜像腿额外留出 1 个 PE)。
如果您收到类似这样的错误
1 extents needed, but only 0 available
,则可能表示创建日志时出现问题,您可能需要在现有 pv 上创建一些可用空间,可能通过缩小相关 lv 来留出空间(lvreduce
)。如果执行此操作,您可能需要事先调整底层文件系统的大小(resize2fs
))。
答案2
我通过将所有数据备份到外部驱动器、将 Ubuntu 重新安装到 RAID 阵列,然后在新文件系统中恢复备份来实现此目的。具体来说,我遵循了以下步骤:
使用以下说明备份数据此论坛主题使用命令
sudo tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=backup.tgz --exclude=/mnt --exclude=/sys --exclude=/dev --exclude=/etc/fstab --exclude=/etc/mtab --exclude=/boot --exclude=/media /
将两种情况下的 backup.tgz 替换为备份的位置
关闭计算机并安装两个硬盘,其中较小的硬盘至少要等于 raid 阵列的大小(可能包括原始硬盘)
启动安装盘并运行安装程序。
使用手动分区,在每个硬盘上为最终文件系统中的每个分区创建一个分区。例如,如果您希望
/home
分区为 100 GB,则在每个硬盘上创建一个 100GB 的分区。将将成为 RAID 阵列一部分的所有分区设置为 RAID 自动检测 (0xfd)。选择制作raid阵列,将各个分区与另外一个磁盘上对应的分区一起放入raid阵列中。
正常完成安装并重新启动进入全新的 Ubuntu 安装。
如果尚未安装外部驱动器,请将其安装,然后按照上述论坛帖子中的说明使用命令恢复备份
sudo tar xvpfz backup.tgz -C /
运行
sudo update-grub
然后重新启动。新操作系统现在应该与原始操作系统完全一样。
我更喜欢这种方法,原因如下:
一般情况下,进行文件系统级别的复制而不是磁盘级别的复制似乎更好
它不依赖于保持分区结构相同
一旦我弄清楚了如何做,整个过程所花的时间比磁盘级复制所花的时间还短
它允许安装程序为启动设备和挂载设备创建正确的条目,这些条目需要更改,因为 raid 分区与常规分区的引用方式不同。