我在一台机器上有一个软件阵列
root@c ~# mdadm --query --detail /dev/md0
/dev/md0:
Version : 0.90
Creation Time : Mon Mar 17 10:22:38 2014
Raid Level : raid10
Array Size : 976772096 (931.52 GiB 1000.21 GB)
Used Dev Size : 488386048 (465.76 GiB 500.11 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Mon Jan 19 10:30:49 2015
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : far=2
Chunk Size : 256K
UUID : e21d2907:a7b46e36:220b319d:884b2099
Events : 0.296
Number Major Minor RaidDevice State
0 8 32 0 active sync /dev/sdc
1 8 48 1 active sync /dev/sdd
2 8 64 2 active sync /dev/sde
3 8 80 3 active sync /dev/sdf
md0 是 RAID-10 阵列。一位同事在 /dev/sdf 上创建了一个 fdisk,并在其中创建了三个 linux 分区。目前 md0 运行良好,但我担心服务器重新启动时会发生什么。
我的信息安全吗?fdisk 会破坏 RAID1 对中的一个吗?如何在不损坏阵列的情况下修复 sdf?
提前致谢。
答案1
您的信息不安全;您已损坏阵列中的一个磁盘,重启后它将不会出现。您的内核可能仍在使用旧的分区表,因为在 fdisk 完成时它正在使用中,但您需要采取以下步骤:
- 备份您的数据(这应该是不言而喻的,但我想明确表示,如果此过程不起作用,我不承担任何责任;-)
- 磁盘故障:
mdadm --fail /dev/md0 /dev/sdf
- 该阵列现在应显示为降级
/proc/mdstat
- 该阵列现在应显示为降级
- 从阵列中移除磁盘:
mdadm --remove /dev/md0 /dev/sdf
- 磁盘现在应该已经从
/proc/mdstat
- 磁盘现在应该已经从
- 清除分区表:
dd if=/dev/zero of=/dev/sdf bs=1k count=1
- 将磁盘重新添加到阵列:
mdadm --add /dev/md0 /dev/sdf
- 阵列现在应该正在重建。监控
/proc/mdstat
直至完成。 - 将数据再次备份到其他位置。将其与第一次备份进行比较,确保只有新文件/更新文件发生了变化。
您应该能够在阵列在线时执行上述所有操作,因为 RAID 10 意味着您至少拥有每个块的 2 个副本。
您的同事对阵列所做的操作是 RAID 阵列中不使用原始磁盘的一个很好的理由。对于未来的阵列,您应该在每个 FD 类型的磁盘上创建一个分区,以便系统知道它们是 RAID 分区,并且任何访问的人都可以看到其上的分区。您只会损失少量空间,而您会获得一个非常大的红旗,告诉人们磁盘正在使用中。
祝你好运!