我知道大多数不同的 RAID 是如何工作的。但是我 在研究linux软件raid时偶然发现了推荐的raid10,f2模式。我真的不明白它是如何在 2 或 3 个磁盘上工作的。有人可以向我解释一下吗?或者给我指出一篇解释它的非常好的文章?
有谁知道验证 LVM 和 md RAID 之上的 XFS 文件系统是否在 4096 字节又名“高级格式”扇区磁盘阵列上正确对齐的步骤?
一些参考资料是:
http://www.ibm.com/developerworks/linux/library/l-4kb-sector-disks/index.html
http://thunk.org/tytso/blog/2009/02/20/aligning -filesystems-to-an-ssds-erase-block-size/
此问题的上下文也与 Stack Overflow 的新 NAS 有关:http : //blog.serverfault.com/post/798854017/the-theoretical-and-real-performance-of-raid-10
在我的职业生涯中,我曾多次在各种环境(例如 CentOS/Debian 机器、Synology/QNAP NAS)中遇到 mdadm RAID 集(RAID1+0、5、6 等),它们似乎根本无法处理故障磁盘。该磁盘并未完全失效,但有数以万计的坏扇区,并且根本无法处理 I/O。但是,它并没有完全死亡,它仍然在工作。内核日志通常充满 UNC 错误。
有时,SMART 会将磁盘识别为故障,有时除了 I/O 缓慢之外没有其他症状。
缓慢的 I/O 实际上会导致整个系统冻结。通过 ssh 连接需要很长时间,webGUI(如果是 NAS)通常会停止工作。通过 ssh 运行命令也需要很长时间。直到我断开/故意将磁盘从阵列中“故障”出来,然后事情就会恢复到“正常” - 这与降级阵列一样正常。
我只是想知道,如果磁盘读取/写入需要很长时间,为什么不将其从阵列中剔除,在日志中添加一条消息并继续?这似乎让整个系统陷入瘫痪,因为一个磁盘有点奇怪,完全抵消了使用 RAID 的主要好处之一(容错 - 在磁盘发生故障时继续运行的能力)。我可以理解,在单磁盘场景中(例如,您的系统连接了单个 SATA 磁盘,并且无法正确执行读/写),这是灾难性的,但在 RAID 集(尤其是容错“个性”)中,它看起来不仅令人讨厌而且违背常识。
mdadm 的默认行为基本上会削弱该盒子,直到有人远程登录并手动修复它,这是否有充分的理由?
我最近在 Linux 上使用mdadm. 将新 HDD 添加到 RAID 1 时,数据开始在我的驱动器之间同步,这是预期的。我没想到它开始同步整个驱动器,包括未使用的空间。HDD 为 6\xc2\xa0TB,只有大约 1\xc2\xa0TB 的数据,因此花费的时间比预期要长。为什么MD要同步未使用的空间?
我运行的是 Ubuntu 11.04(内核 2.6.38-11)。我用 2x500GB 驱动器替换了 2x160GB。它们被配置为 RAID1。
分区表显示了正确的大小。这是 sfdisk:
# sfdisk -d /dev/sdb
# partition table of /dev/sdb
unit: sectors
/dev/sdb1 : start= 63, size= 192717, Id=fd, bootable
/dev/sdb2 : start= 192780, size= 7807590, Id=fd
/dev/sdb3 : start= 8000370, size=968767695, Id=fd
/dev/sdb4 : start= 0, size= 0, Id= 0
Run Code Online (Sandbox Code Playgroud)
和 fdisk:
# fdisk -l /dev/sdb
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size …Run Code Online (Sandbox Code Playgroud) Synology 有一个定制版本的 md 驱动程序和 mdadm 工具集,它向内核中的 rdev->flags 结构添加了“DriveError”标志。
净效应 - 如果您不幸遇到阵列故障(第一个驱动器),并结合第二个驱动器上的错误 - 即使从驱动器读取正在工作,阵列也会进入不允许您修复/重建阵列的状态美好的。
在这一点上,从这个数组的角度来看,我并不是真的担心这个问题,因为我已经把内容拉下来并打算重建,但更多的是希望在未来有一个解决方案,因为这是我第二次被它咬了,我知道我在论坛上看到其他人问过类似的问题。
Synology 支持的帮助不大(而且大多没有响应),并且根本不会分享有关处理盒子上的 raidsets 的任何信息。
/proc/mdstat 的内容:
ds1512-ent> cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid5 sdb5[1] sda5[5](S) sde5[4](E) sdd5[3] sdc5[2]
11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUE]
md1 : active raid1 sdb2[1] sdd2[3] sdc2[2] sde2[4] sda2[0]
2097088 blocks [5/5] [UUUUU]
md0 : active raid1 sdb1[1] sdd1[3] sdc1[2] sde1[4] sda1[0]
2490176 blocks [5/5] [UUUUU]
unused …Run Code Online (Sandbox Code Playgroud) 所以,我想知道,是否可以使用 mdadm 执行以下操作:
sda和sdb.sdc并将所有数据移动sdb到它。sdb。现在,我看到的只有一个选择-我停止阵列,复制sdb到sdc同dd或任何其他块拷贝工具,开始在阵列后面。
我错过了什么吗?可以用 mdadm 做到这一点吗?
我想我记得几年前用 LVM 制作了一些镜像,我不记得这个“日志”的东西。或者也许我用 mdadm 制作了镜像并将 LVM 放在上面。一定是这样。
如果它只是一个镜像,那么 LVM 日志是什么?那里存储了什么?它的目的是什么?使用“--mirrorlog core”不好吗?不利的一面是什么?如果我不需要,我不想有另一个日志分区。
关于使用这两种技术的任何建议?即使我使用 mdadm 制作镜像,我也会在此基础上使用 LVM。那么,在这种情况下,也许最好用 LVM 构建整个设置......?这对性能的影响会更大还是更少?
这些磁盘用于存储 Xen domU“磁盘”。
对于复杂的不切实际的“问题”,我们深表歉意。
想法、建议和链接是最受欢迎的。谢谢!
我组装了一个新的raid 阵列来替换旧的。但是,这个新数组被分配了一个自动名称 /dev/md127,我想将它重命名为 /dev/md3,这样我就不必更改各种其他设置。如何重命名 mdadm raid 阵列?
好的。例行清理后,我的 MDADM RAID5 报告 mismatch_cnt = 16。据我所知,这意味着虽然没有设备报告读取错误,但有 16 个块的数据和奇偶校验不一致。
问题 1:可以获得这些块的列表吗?
问题 #2:假设 #1 是可能的,鉴于底层文件系统是 EXT4,有没有办法识别哪些文件与这些块相关联?
我确实有近线备份,在理想情况下,我可以将实时阵列与备份数据进行比较,以找到任何已被悄悄损坏的文件。但现实情况是,召回 6TB 的备份数据既昂贵又耗时。知道在哪里查看和恢复什么将大大简化事情。
(我应该注意,我只使用“检查”选项运行 RAID 清理。使用“修复”选项运行清理似乎非常危险,因为 MDADM 只知道数据或奇偶校验错误,但不知道哪个是错误的。因此,MDADM 猜测错误并重建错误数据的可能性似乎为 50%。因此,我希望知道哪些文件可能受到影响,以便我可以在必要时从备份中恢复它们)
任何建议非常感谢!