如何修改/修复错误检测的 dmraid (FakeRaid) RAID 10 阵列

如何修改/修复错误检测的 dmraid (FakeRaid) RAID 10 阵列

我正在尝试让 dmraid 正确检测现有的 RAID 10 阵列,该阵列在 Windows 7 中运行良好。总之,驱动器设置和 bios 分区如下:

  • 2 个 SSD(120 GB),RAID 0。

    分成:180 GB (win7)58 GB (Ubuntu)

    在 Ubuntu 中检测和安装均正常。

  • 4 个 HDD(2 TB),RAID 1+0。单个 4TB 分区。

    在 ubuntu 中不起作用。


Ubuntu 本身安装在分区的条带磁盘对上,并且运行良好。两个分区(180 GB 和 58 GB)对应于以下 LVM(我擅自格式化了数据以便于阅读):

#$ sudo dmsetup info /dev/dm-{1,2,3,4,5}
|----------+--------+---------------+-----------+--------|
| dev/dm-0 | ubuntu | pdc_hjijcjji | 容器 | | 58 GB |
| dev/dm-1 | ubuntu | pdc_hjijcjji1 | / | ext4 | 54 GB |
| dev/dm-2 | Ubuntu | pdc_hjijcjji2 | |延伸 | 4.3 GB |
| dev/dm-3 | win 7 | pdc_fjhhdeeg | 容器 | | 180 GB |
| dev/dm-4 | ubuntu | pdc_hjijcjji5 | | 交换 | 4.3 GB |
| dev/dm-5 | win 7 | pdc_fjhhdeeg1 | | ntfs | 180 GB |
|----------+--------+---------------+-----------+--------|

Raid 10 阵列(我需要帮助才能在 Ubuntu 中运行)由四个 2TB 磁盘组成,并产生一个 4TB 阵列。它似乎dmraid知道这个阵列,给出以下输出:

#$ sudo dmraid -r
|----------+--------+------------------+--------+---------+----------------+---------|
| 设备 | 格式 | 名称 | 类型 | 状态?| 大小(扇区)| ?|
|----------+--------+------------------+--------+---------+----------------+---------|
| /dev/sdf | pdc | pdc_fjhhdeeg | 条纹 | ok | 175781248 | 数据@ 0 |
| /dev/sde | pdc | pdc_fjhhdeeg | 条纹 | ok | 175781248 | 数据@ 0 |
| /dev/sdd | pdc | pdc_bjibibahah-1 | 条纹 | 确定 | 1758766336 | 数据@ 0 |
| /dev/sdc | pdc | pdc_bjibibahah-1 | 条纹 | 确定 | 1758766336 | 数据@ 0 |
| /dev/sda | pdc | pdc_bjibibahah-0 | 条纹 | 确定 | 1758766336 | 数据@ 0 |
| /dev/sdb | pdc | pdc_bjibibahah-0 | 条纹 | 确定 | 1758766336 | 数据@ 0 |
|----------+--------+------------------+--------+---------+----------------+---------|

这让我有点不知所措,因为我原本以为数组pdc_hjijcjji也会出现在这里。也许,因为它是条带磁盘内的分区,所以它包含在 中pdc_fjhhdeeg。无论如何,条带阵列运行良好,所以我并不太担心。

pdc_hjijcjji运行时显示dmraid -s

#$ sudo dmraid -s
|-----------+----------------+--------------+--------------|
| 姓名 | pdc_bjibibahah | pdc_fjhhdeeg | pdc_hjijcjji |
|-----------+----------------+--------------+--------------|
| | 超集 | 主动集 | 主动集 |
| 大小(-h)| 1.677 TB | 167.6 GB | 54.0 GB |
| 尺寸 | 3517532672 | 351562496 | 113281024 |
| 步幅 | 128 | 128 | 128 |
| 类型 | raid10 | 条带 | 条纹 |
| 状态 | 确定 | 确定 | 确定 |
| 子集 | 2 | 0 | 0 |
| 开发人员 | 4 | 2 | 2 |
| 备件 | 0 | 0 | 0 |
|-----------+----------------+--------------+--------------|
# 大小以 512 字节为单位。

似乎pdc_bjibibahah与 Raid10 阵列相对应,只是它的大小有点奇怪(1.677 TB,而不是大约 4 TB)。尝试使用结果激活它会导致dmraid -ay已安装的 1.677 TB 设备报告为未分配数据。

sudo dmraid -s -si在阵列上运行bjibibahah

#$ sudo dmraid -s -si
|-----------+----------------+------------------+------------------|
| 名称 | pdc_bjibibahah | pdc_bjibibahah-0 | pdc_bjibibahah-1 |
|-----------+----------------+------------------+------------------|
| | 超集 | 子集 | 子集 |
| 大小(-h)| 1.638 TB | 1.638 TB | 1.638 TB |
| 尺寸 | 3517532672 | 3517532672 | 3517532672 |
| 步幅 | 128 | 128 | 128 |
| 类型 | raid10 | 条带 | 条纹 |
| 状态 | 确定 | 确定 | 确定 |
| 子集 | 2 | 0 | 0 |
| 开发人员 | 4 | 2 | 2 |
| 备件 | 0 | 0 | 0 |
|-----------+----------------+------------------+------------------|

我尝试手动配置阵列,但没有成功,而且该man页面也没有太大帮助。如果有人对如何配置有建议dmraid,或者说服它更改 RAID10 阵列的配置,我将不胜感激。

以下是一些相关的输出:

$ sudo dmraid -V
dmraid 版本:1.0.0.rc16 (2009.09.16) 共享
dmraid 库版本:1.0.0.rc16(2009.09.16)
设备映射器版本:4.20.0

$ sudo dmsetup--版本
库版本:1.02.48(2010-05-20)
驱动程序版本:4.20.0

$ uname-srvm
Linux 3.0.0-16-generic #28-Ubuntu SMP 星期五 1 月 27 日 17:44:39 UTC 2012 x86_64

$ lsb_release-a
无可用的 LSB 模块。
分销商 ID:Ubuntu
描述:Ubuntu 11.10
版本:11.10
代号:oneiric

此外,RAID10 阵列的 BIOS raid 设置与 ubuntu 中的以下磁盘匹配:代码:

|---------+------------+--------------|
| 端口:ID | 分配 | OS 磁盘名称 |
|---------+------------+--------------|
| 01:01 | LD 1-1 | /dev/sda |
| 02:01 | LD 1-2 | /dev/sdb |
| 03:01 | LD 1-3 | /dev/sdc |
| 04:01 | LD 1-4 | /dev/sdd |
|---------+------------+--------------|

更新:我忘了说我在使用 Crosshair V 主板,内置控制器AMD SB950

更新 2:运行时sudo dmraid -s -ccs pdc我收到以下错误消息:

错误:pdc:/dev/sdf 上的 RAID 设置“pdc_fjhhdeeg”[1/2] 中的设备数量错误
错误:pdc:/dev/sde 上的 RAID 设置“pdc_fjhhdeeg”[1/2] 中的设备数量错误
错误:pdc:/dev/sdd 上的 RAID 设置“pdc_bjibibahah-1”[1/2] 中的设备数量错误
错误:pdc:/dev/sdc 上的 RAID 设置“pdc_bjibibahah-1”[1/2] 中的设备数量错误
错误:pdc:/dev/sdb 上的 RAID 设置“pdc_bjibibahah-0”[1/2] 中的设备数量错误
错误:pdc:/dev/sda 上的 RAID 设置“pdc_bjibibahah-0”[1/2] 中的设备数量错误
*呃*

如果我省略说明符 pdc,而只写,sudo dmraid -s -ccs我会得到更加神秘的结果:

*呃*
*呃*
*呃*

更新 3:我已sudo dmraid -rE按照建议的方法删除了配置错误的数组在 askubuntu QA 中。我仍然收到“错误:pdc:RAID 组中的设备数量错误...”错误,这似乎阻碍了进一步的进展。我会继续寻找这个问题的解决方案。

编辑:我可以添加任何信息来帮助别人吗?

答案1

好的 :) 那么你的目标如下:

4 x HDD (2 TB), RAID 1+0. Single 4TB partition.

看到它只报告了大约 1.6TB,这么多的缺失存储空间对我来说意味着一个元数据问题。

我建议拆除整个阵列,并使用 确保元数据被清除dmraid -rE。然后,一旦这些磁盘不再出现,尝试从 2 个 2T 磁盘创建一个简单的 RAID1,您的容器容量应该更接近 1.8-1.9,而不是 1.6。验证后,然后创建条带,应该只需将两者相加即可。如果这不起作用,则可能是固件或 dmraid 系统本身存在错误。

dmraid 嗯……很有趣,如果可以选择的话我宁愿不使用它。你基本上承担了 md-raid 的所有复杂性,而性能没有任何提升,然后混合了来自不同供应商的大量不同元数据格式,然后与多个操作系统共享该元数据,相信你与之共享的操作系统不会破坏元数据。

在使此配置稳定后,您可能想要测试实际更换故障成员,如果您无法维护 RAID,则 RAID 只是一个大的单点故障。祝你好运。

针对您的 dmraid -rE 问题 此时您唯一的选择是 dd if=/dev/zero ...并擦除磁盘。

答案2

我有同样的问题,我相信我最终(经过几天的谷歌搜索而没有得到满意的答案)找到了这个问题。

我相信这是一个 BUG - 某处使用 32 位无符号整数来表示扇区数(dmraid?)。

请注意,(我的)2TB 磁盘上的扇区数:3906898048,乘以 512B/扇区可得出 2.0TB 或 1.8TiB。当进行条带化时,它应该翻倍,但得到的结果是:3518828800 个扇区,乘以 512 B/扇区可得出 1.8TB 或 1.6TiB。

考虑到 Windows 10 在该 RAID10 分区上读取了正确的 4TB 大小,因此错误很可能出现在 Linux 端。

转换为二进制: 3906898048 -> 0000 1110 1000 1101 1110 1000 1000 1000 0000 2x 3906898048 -> 0001 1101 0001 1011 1101 0001 0001 0000 0000 3518828800 -> 0000 1101 0001 1011 1101 0001 0001 0000 0000

有人能看看这个问题并创建一个补丁吗?谢谢。

相关内容