设置后,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 造成的,通常也不值得付出努力,因为最终它还是不会起作用……