我的一个 RAID1 磁盘最近坏了。我买了一个替换磁盘,连接好后Linux RAID使用格式化了它cfdisk

  • 新的驱动器是/dev/sdc
  • 旧驱动器/dev/sdd

它们总体上看起来具有相同数量的字节和扇区,但是格式化的分区的大小不同……

# fdisk -l /dev/sd{c,d}
Disk /dev/sdc: 7.28 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: ST8000VN0022-2EL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 952AC4E6-20B9-408D-83CE-AC4AEFBC1075

Device     Start         End     Sectors  Size Type
/dev/sdc1   2048 15628052479 15628050432  7.3T Linux RAID


Disk /dev/sdd: 7.28 TiB, 8001563222016 bytes, 15628053168 sectors
Disk model: ST8000VN004-2M21
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 4069B8CB-4C43-304B-B872-DDB89C0E0AA1

Device     Start         End     Sectors  Size Type
/dev/sdd1   2048 15628053134 15628051087  7.3T Linux RAID

具体来说…

/dev/sdc1   2048 15628052479 15628050432  7.3T Linux RAID
/dev/sdd1   2048 15628053134 15628051087  7.3T Linux RAID

分区/dev/sdc1小于现有分区。因此…

# mdadm --manage /dev/md127 --add /dev/sdc1
mdadm: Value "kimura:0" cannot be set as devname. Reason: Not POSIX compatible. Value ignored.
mdadm: /dev/sdc1 not large enough to join array

我发现一个建议/dev/sdd使用ST8000VN004512E 来模拟每个逻辑扇区 512 字节,尽管每个物理扇区有 4096 字节。

/dev/sdd1现在,我对于调整现有分区的大小以匹配它持谨慎态度/dev/sdc1,因为这是 RAID1 阵列的一部分,其顶部有三个逻辑卷。

找到了一个,但那里的问题不同,因为他们有一个 3TB 的 RAID,他们想要分区一个新的 14TB,所以空间不是问题,这里我的新分区比现有的要小。

如果您能就如何进行提出任何想法或建议,我们将不胜感激。


最佳答案
1

不需要从头开始在新驱动器上创建分区表,而是命令从现有驱动器复制它

sfdisk -d /dev/sdd > part_table
grep -v ^label-id part_table | sed -e 's/, *uuid=[0-9A-F-]*//' | sfdisk /dev/sdc

这将确保分区完全相同。


就物理扇区大小而言,两个磁盘都相同。根据输出,两者都有 4k 扇区:

Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

虽然分区的物理扇区数不完整确实不太好,但在实践中这应该不是问题。重要的是它从正确的位置开始。mdadm 和 LVM 磁盘结构具有较大的填充,以便将边界舍入到 64k 甚至 4M,因此卷末尾不完整物理扇区的额外空间根本就没有被使用。

但是,现在清理一下也许会更好,以免将来有人感到困惑。如果您正在使用 LVM,则可以使用以下顺序清理所有内容而无需进行危险的操作:

  1. 从新的较小分区创建降级 RAID1 阵列
  2. 创建 PV
  3. 将其添加到现有的 VG 中
  4. pvmove那里的一切清空了旧的 PV,
  5. 从 VG 中删除旧的“奇数”磁盘并删除 PV 标签
  6. 将其重新划分为更好的方案并将其添加回阵列。

2

  • 太棒了,非常感谢@Nikita,让我能够将新驱动器添加到 RAID 阵列。我会阅读并考虑您关于调整大小的建议。非常感谢您花时间帮助我。


    – 

  • 一点也不。不要忘记在新驱动器上安装引导加载程序(如果它是启动驱动器)!


    –