每次重启后 Raid1 都会降级

每次重启后 Raid1 都会降级

设置后,cat /proc/mdstat 输出如下所示:

proxmox:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc2[1] sdb2[0]
      293024832 blocks [2/2] [UU]

unused devices: <none>

另外,在我全新设置 raid1 之后,我得到了以下信息:

proxmox:~# mdadm --examine --scan
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=fbda4051:61cbc27f:7f2b1f39:e153e83f

但是,重新启动后,cat /proc/mdstat 输出:

proxmox:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active (auto-read-only) raid1 sdc[1]
      293024832 blocks [2/1] [_U]

unused devices: <none>

为什么现在使用sdc1?

此外,现在我得到:

proxmox:~# mdadm --examine --scan
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=fbda4051:61cbc27f:7f2b1f39:e153e83f
ARRAY /dev/md0 level=raid1 num-devices=2 UUID=fbda4051:61cbc27f:9822ee23:9b948649


proxmox:~# dmesg | grep md0
md/raid1:md0: active with 1 out of 2 mirrors
md0: detected capacity change from 0 to 300057427968
 md0: p1 p2
md0: p2 size 586049840 exceeds device capacity, limited to end of disk

/dev/md0 上的两个分区是从哪里来的?我从来没有创建过它们。另外,sdc1 和 sdc2 未列在 /dev 树中

以下是 fdisk 输出:

proxmox:~# fdisk -l /dev/sdb

Disk /dev/sdb: 300.0 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x3bd84a48

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1           2       10240   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sdb2               2       36482   293024920   fd  Linux raid autodetect
Partition 2 does not end on cylinder boundary.

proxmox:~# fdisk -l /dev/sdc

Disk /dev/sdc: 300.0 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x371c8012

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1           2       10240   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sdc2               2       36482   293024920   fd  Linux raid autodetect
Partition 2 does not end on cylinder boundary.

一些信息:服务器运行 Proxmox v1.9,它是 debian lenny 64bit。sda 是系统硬盘(硬件 RAID)。sdb 和 sdc 是 300GB 全新 Raptor 硬盘。

答案1

首先,检查物理硬件,如连接、电缆和正确安装的卡。对于磁盘本身,请检查 /dev/sdb 上的 SMART 数据,以确保磁盘本身不会定期出现故障。Western Digital Raptors 速度很快,但容易出现故障,我曾经遇到过一次无缘无故的故障(甚至 SMART 数据都没有预测到)。使用 smartctl 读取 SMART 数据并运行测试。它包含在 smartmontools 包中:

apt-get install smartmontools

提取数据并查找记录的异常或错误:

smartctl -a /dev/sdb

最后,运行手动自检,大约需要 2 分钟。long可以替代short,并且更彻底,但需要更长的时间(“几十分钟”):

smartctl -t short /dev/sdb

测试完成后,查看结果:

smartctl -l selftest /dev/sdb

如果一切正常,您可以继续调试 mdadm 堆栈。

您的 RAID 设备上的分区排列有点奇怪。如果这些设备专用于 RAID,则根本不需要分区表。假设没有数据,建议您保持简单并直接使用块设备。在 fdisk 中,它们将显示如下:

Disk /dev/sdb: 300.0 GB, 300069052416 bytes
255 heads, 63 sectors/track, 36481 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table

为了消除分区问题并从头开始,只需在每个磁盘的开头添加一些零;

dd if=/dev/zero of=/dev/sdb count=128 bs=4096k

对 /dev/sdc 重复上述步骤。使用这两个设备创建阵列:

mdadm --create --raid-devices=2 --level=raid1 --bitmap=internal --assume-clean --name=RAID1 /dev/sdb /dev/sdc

不要忘记检查 dmesg 中是否有与磁盘相关的输出!

答案2

Proxmox 不支持软件 RAID:

对于生产,只有硬件 raid 是可能的。如果您使用自定义软 raid,您现在和将来的版本都会遇到问题,这意味着它将无法工作。有趣的是,人们不相信我们 Proxmox VE 不能与软 raid 一起使用 - 再次:我们是开发人员,我们应该知道这一点!?

PS 开发人员似乎从来没有解释过“为什么”它不起作用......他们只是说它不起作用。

http://forum.proxmox.com/threads/838-Install-on-Soft-Raid?p=4406#post4406

即使“这个”问题不是由于 Proxmox 造成的,通常也不值得付出努力,因为最终它还是不会起作用……

相关内容