我有一个软件 raid1,mdadm 通过电子邮件通知我一个驱动器发生故障。按照我在网上找到的步骤,我将驱动器标记为故障并从 raid 中移除。
我用完全相同的品牌和型号替换了该驱动器,但更换新驱动器后,突袭仍无法启动。cat /proc/mdstat 只是显示其处于非活动状态。
我也无法将新驱动器添加到阵列中,尽管我将分区从工作驱动器复制到了新驱动器,但仍一直说新驱动器上没有超级块。
我移除了新驱动器,然后重新放入了发生故障的驱动器。RAID 确实启动了,奇怪的是它现在正在尝试重建,但检查我的 mdadm.conf 时,它看起来很糟糕。
配置文件
#mdadm.conf # # 有关此文件的信息,请参阅 mdadm.conf(5)。 # # 默认情况下(内置),扫描所有分区(/proc/partitions)和所有 # MD 超级块的容器。或者,使用以下方式指定要扫描的设备 # 如果需要,可以使用通配符。 #DEVICE 分区容器 # 使用 Debian 标准权限自动创建设备 创建所有者=根组=磁盘模式=0660 自动=是 # 自动将新数组标记为属于本地系统 家主 # 指示监控守护进程将邮件警报发送到哪里 邮箱地址[电子邮件保护] # 现有 MD 数组的定义 # 此文件于 2012 年 12 月 30 日星期日 02:27:19 -0700 自动生成 # 通过 mkconf $Id$ 设备 /dev/sdb1 /dev/sdb1 阵列 /dev/md0 级别=raid1 设备=/dev/sdb1,/dev/sdb1
fdisk -l
磁盘 /dev/sda:640.1 GB,640135028736 字节 255 个磁头,63 个扇区/磁道,77825 个磁柱,总共 1250263728 个扇区 单位 = 1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标识符:0x00058100 设备启动开始结束块ID系统 /dev/sda1 * 2048 1241874431 620936192 83 Linux /dev/sda2 1241876478 1250263039 4193281 5 扩展 /dev/sda5 1241876480 1250263039 4193280 82 Linux 交换 / Solaris 警告:在“/dev/sdb”上检测到 GPT(GUID 分区表)!实用程序 fdisk 不支持 GPT。请使用 GNU Parted。 磁盘 /dev/sdb:2000.4 GB,2000398934016 字节 255 个磁头,63 个扇区/磁道,243201 个磁柱,共计 3907029168 个扇区 单位 = 1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘标识符:0x00000000 设备启动开始结束块ID系统 /dev/sdb1 1 3907029167 1953514583+ 即 GPT 分区 1 不是从物理扇区边界开始的。 警告:在“/dev/sdc”上检测到 GPT(GUID 分区表)!实用程序 fdisk 不支持 GPT。请使用 GNU Parted。 磁盘 /dev/sdc:2000.4 GB,2000398934016 字节 255 个磁头,63 个扇区/磁道,243201 个磁柱,共计 3907029168 个扇区 单位 = 1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘标识符:0x00000000 设备启动开始结束块ID系统 /dev/sdc1 1 3907029167 1953514583+ 即 GPT 分区 1 不是从物理扇区边界开始的。 磁盘 /dev/md0:2000.3 GB,2000263380992 字节 2 个磁头,4 个扇区/磁道,488345552 个磁柱,总共 3906764416 个扇区 单位 = 1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘标识符:0x00000000 磁盘 /dev/md0 不包含有效的分区表
我甚至不知道这里要放些什么才能有所帮助,但我真的很感激任何帮助或建议,以使这次突袭恢复正常。
更新:再次尝试后添加了更多信息。将故障驱动器放回原位后,它开始重建,然后按预期失败。
首先创建新的 mdadm.conf 文件
sudo su -c "/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf"
- 失败然后删除 /dev/sdc1
- 安装了新的高清
- 使用复制分区
sgdisk -R /dev/sdc /dev/sdb
- 更新的 UUID
sgdisk -G /dev/sdc
sfdisk -r /dev/sdc
mdadm --manage /dev/md0 --add /dev/sdc1
尝试添加 sdc1 错误
mdadm: cannot get array info for /dev/md0
答案1
好吧,首先,如果您能提供更多关于您的设置的信息就更好了,这样我就可以填写您的分区名称等等。
正如您所说,您将其标记为失败并将其删除(我猜想mdadm --manage /dev/md0 --remove /dev/sdb1
或者每个分区的 raid/物理分区是什么)。
您是否在实时系统中执行了此操作?这意味着这是一台可以关闭的机器吗?驱动器是否支持热插拔?
您还说您复制了分区表(sfdisk -d /dev/sda | sfdisk /dev/sdb
)。您是怎么做到的?您的设备使用哪个分区表(MBR/GPT)?
如果是 GPT,则必须使用sgdisk -R /dev/sdb /dev/sda
将分区表从 sda 复制到 sdb。
之后,您必须为其提供一个新的 UUID sgdisk -G /dev/sdb
:。
然后使用sfdisk -r /dev/sdb
内核重新加载您的分区表。
使用mdadm /dev/md0 -a /dev/sdb1
。与删除一样,您必须对每个分区执行此操作。然后使用grub-mkdevicemap -n
为 Grub2 生成新的设备映射,然后grub-install /dev/sdb
。
编辑:这看起来真的很愚蠢,你的 RAID 由 2 次相同的分区组成......
也许您想要创建一个新的配置:sudo su -c "/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf"
。