我有一个简单的 RAID1 设置,其中包含几个驱动器。
我意识到其中一个分区没有与圆柱边界对齐,我担心这是一件坏事,在某些时候会给我带来痛苦。
通常我会使用 gparted 来调整边界,但是当分区在 RAID1 阵列中使用时该如何做到这一点?
我不想走 LVM 路线,因为我不了解它,而且简单的方法也很好,所以我想避免那条学习曲线。
答案1
如果您暂时只能使用单个磁盘(无冗余),那么最简单的方法可能是让未对齐的分区发生故障,将其从阵列中删除,并从中删除任何 RAID 元数据(根据需要替换 md 设备和分区)。
要进行重新分区,此磁盘上的所有分区都需要处于脱机状态 - 如果您只使用单个分区进行 RAID1 设置,并且不与 RAID 或其他任何分区(例如交换空间)共享任何其他分区,则可能就是此处。如果您只使用该磁盘上的单个分区,并且只将该分区用于 RAID1,则可以按以下方式开始:
mdadm /dev/md0 --fail /dev/sdb1 --remove /dev/sdb1
mdadm --zero-superblock /dev/sdb1
如果您在同一个物理驱动器上还有任何其他分区,也请对它们执行“失败、删除、清零”操作。
请仔细检查您是否使用了正确磁盘上的正确分区。如果您选择了错误的分区,并且分区已经“失败”甚至将超级块清零,请mdadm /dev/md0 --add /dev/sdb1
立即运行以重建 RAID1,并在重建成功后重新开始重新分区。
将超级块清零后,您应该根据需要重新对磁盘进行分区(使用 gparted、parted、sfdisk、cfdisk、fdisk 等)。当然,重新调整大小后的分区必须(至少)与第一个 RAID 磁盘的大小完全相同。
分区后,发出
blockdev --rereadpt /dev/sdb
确保您的内核使用最新的分区表,并将“失败”的分区添加到您的 MD 设备:
mdadm /dev/md0 --add /dev/sdb1
对所有其他分区和 MD 设备也执行相同的步骤。
驱动器将立即进入恢复模式,并将数据从其他磁盘复制到“新”磁盘。您可以使用 监控恢复进度cat /proc/mdstat
。
关于 LVM:LVM 本质上只是磁盘和文件系统之间的“另一层”,可以将其视为用可以在线更改的内容替换静态大小的分区。文件系统也可以在线增长(有时也可以缩小),并且与 LVM 一起,这为您提供了一些灵活性。逻辑卷也可以动态添加、删除或更改,您可以添加更多磁盘,以便扩展现有的逻辑卷。
例如,您无需考虑确切的分区方案,因为稍后可能会在线向现有文件系统添加更多空间。如果您的系统使用单个分区来存储所有文件(可能除了小型 /boot 分区之外),并且您不需要添加更多空间,那么 LVM 不会给您带来太多好处。
如果用于 LVM 的物理卷已经使用了未对齐的分区,LVM 也帮不上什么忙。从技术上讲,在准备物理卷 (PV) 以在 LVM 中使用时,可以添加数据偏移,但这通常不会有太大区别。修复未对齐的 LVM 本质上与修复未对齐的 RAID 一样麻烦,但需要额外的不同工具才能完成。
如果 LVM PV 确实位于正确对齐的分区上,则新创建的逻辑卷恰好也正确对齐,但这只是由于物理扩展区较大而导致的巧合。如果 LVM 设置配置为在 4k 形状的磁盘上使用 1KB 大小的物理扩展区,则错误对齐的逻辑卷可能就是标准。
然而,LVM 仍然是实现更多灵活性的“必由之路”,我确实建议您了解一下 LVM 的基本概念。