我有一个 Linux 软件 raid 10 设置,包括 5 个 RAID 1(每个镜像设置两个驱动器)和所有 5 个 RAID 1 对中的 RAID 0。为了测试没有任何驱动器会在负载下快速失效,我在 RAID 0 中使用了坏块,并采用破坏性读/写模式。
Badblocks 命令:badblocks -b 4096 -c 98304 -p 0 -w -s /dev/md13
其中一个设备出现故障,而不是 badblocks 程序愉快地继续在它上面挂起。如果我运行同步命令,这也会挂起。首先,我认为这不是 RAID 1 设备的标准行为。如果其中一个驱动器出现故障,它应该仍然能够毫无问题地写入两个驱动器组成的虚拟设备。
因此,我继续强制使驱动器失效并尝试将其卸下。我可以毫无问题地将驱动器设置为故障(但是 IO 操作仍然挂起)。我无法从它说它正忙的突袭中完全移除该设备。我的假设是,如果我可以将它完全踢出突袭,IO 将继续,但这只是一个假设,我确实认为我正在处理各种错误。
这里到底发生了什么?由于错误,我是否处于无法恢复的位置?
该系统正在运行内核 2.6.18,因此它并不是全新的,但我认为鉴于软件突袭已经存在了很长时间,这样的问题不会发生。
任何见解都非常感谢。
mdadm --detail /dev/md13
/dev/md13:
Run Code Online (Sandbox Code Playgroud)Version : 00.90.03 Creation Time : Thu Jan 21 14:21:57 2010 Raid Level : raid0 Array Size : 2441919360 (2328.80 GiB 2500.53 GB) Raid Devices : 5设备总数:5 首选次要:13 持久性:超级块是持久性的
Run Code Online (Sandbox Code Playgroud)Update …
我知道我必须将 4k 驱动器对齐 8 个扇区的倍数,但是 md-RAID/LVM/dm-crypt 呢?我如何告诉这些层我的驱动器是 4k?如果他们不遵守 4k 扇区大小,分区对齐是没有用的。如何对齐 LVM/md/加密层?谢谢。
刚刚在我的一台专用服务器上运行了 apt-get 更新,留下了一个相对可怕的警告:
Processing triggers for initramfs-tools ...
update-initramfs: Generating /boot/initrd.img-2.6.26-2-686-bigmem
W: mdadm: the array /dev/md/1 with UUID c622dd79:496607cf:c230666b:5103eba0
W: mdadm: is currently active, but it is not listed in mdadm.conf. if
W: mdadm: it is needed for boot, then YOUR SYSTEM IS NOW UNBOOTABLE!
W: mdadm: please inspect the output of /usr/share/mdadm/mkconf, compare
W: mdadm: it to /etc/mdadm/mdadm.conf, and make the necessary changes.
W: mdadm: the array /dev/md/2 with UUID 24120323:8c54087c:c230666b:5103eba0
W: mdadm: is currently active, but it is …Run Code Online (Sandbox Code Playgroud) 今天早上我收到了这条消息:
This is an automatically generated mail message from mdadm
running on
A DegradedArray event had been detected on md device /dev/md1.
Faithfully yours, etc.
P.S. The /proc/mdstat file currently contains the following:
Personalities : [raid1]
md1 : active raid1 sdb3[2](F) sda3[1]
1860516800 blocks [2/1] [_U]
md0 : active raid1 sdb1[0] sda1[1]
499904 blocks [2/2] [UU]
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
这是否意味着其中 1 个硬盘不再工作?我该如何解决这个问题?我应该要求数据中心更换硬盘吗?我可以尝试重新添加丢失的设备吗?如果是,我应该运行什么命令,重新添加是否安全?我只是不希望我的服务器离线。
serv397:/var/log# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[2](F) sda3[1]
1860516800 blocks [2/1] [_U]
md0 : …Run Code Online (Sandbox Code Playgroud) 我想知道如果(例如)有人使错误的硬盘发生故障,是否有可能消除 RAID 1 中的“故障”状态。
我已经用谷歌搜索了答案,并找到了几个重新创建数组并添加“假设干净”的教程,但我无法在正在运行的系统上执行此操作。那么是否有可能在将硬盘从突袭中移除之前“取消故障”?
我有三个磁盘,用于容纳 MD RAID5 阵列。我已经删除了(或者我认为)这个数组并为 btrfs 和交换空间创建了分区。在重新启动机器时,MD 仍然绑定用于保存旧阵列的设备,导致新文件系统无法挂载。
有人向我建议,raid 阵列的旧超级块可能会被留下,导致 MD 认为它是一个真正的阵列,从而绑定磁盘。建议的解决方案是使用 mdadm --zero-superblock 清除受影响磁盘上的超级块。但是,我真的不知道这对磁盘有什么作用。由于这个磁盘包含分区,我真的不想盲目地开始将其部分归零。
那么我应该遵循什么程序来安全地清除 MD 超级块而不损坏驱动器上的其他分区和文件系统?
这个问题本质上问了同样的问题,但是对于在重新分区的设备上执行 mdadm --zero-superblock 是否实际上应该是安全的,没有明确的答案: mdadm superblock hidden /shadowing partition
我有一个使用 md 的 linux 软件 RAID。我想列出我所有的 RAID 阵列和连接到它们的每个硬盘驱动器。有没有简单的方法来做到这一点?
我在很多机器上使用 MDADM + LVM2 已经有一段时间了。MDADM 用于 RAID0 和 RAID1 阵列,而 LVM2 用于 MDADM 之上的逻辑卷。
最近我发现 LVM2 可以在没有 MDADM 的情况下用于镜像和剥离(因此减去一层,因此开销更少)。
但是,有些人声称镜像阵列的 LVM2 上的读取性能不如 MDADM(RAID1)之上的 LVM2(线性)快,因为 LVM2 不会一次从 2 个以上的设备读取,而是使用第二个和更高的设备第一个设备故障的情况。MDADM 一次从 2 个设备读取(即使在镜像模式下)。
谁能证实?
我想知道在 Linux 上的软件中创建 RAID10 的最佳实践是什么,以后可以通过添加磁盘或扩展下面的卷来增长。
我在 Amazon 上使用 EBS,我想创建 8x1GB RAID10,但能够根据需要在以后增长,尽可能减少任何数据迁移(当然还有停机时间。)
如果 MDADM/LVM 中的任何一个是最佳组合,我需要注意哪些性能或稳定性权衡?
在了解 RAIDZ 的优势的过程中,我遇到了write hole的概念。
正如本页所解释的,写空洞是指在写入过程中断电时阵列磁盘之间出现的不一致。该页面还解释了它会影响 RAID-5/6(如果在写入数据后但在计算奇偶校验之前断电)和 RAID-1(数据写入一个磁盘而不是其他磁盘) ,而且它是一个只能要么再同步/擦洗,或其中一个磁盘的重建期间(灾难性)期间被检测到的隐蔽的问题...然而,大多数 的 所述 其他 来源谈论它,因为它仅受影响的奇偶基于 RAID 级别。
据我了解,我认为这也可能是 RAID-1 的一个问题,因为从包含该漏洞的磁盘读取将返回垃圾,所以...是否每个RAID 级别都有问题?它是否依赖于实现?它只影响软件 RAID,还是硬件控制器?(补充:mdadm这方面的票价如何?)