为了获得一些使用 mdadm 的经验,我把一些硬盘放在一起并尝试了一下。我有 2 个 250 GB 和一个 500 GB 的硬盘。我知道这对 RAID5 来说不是最佳选择,而且我总共只能获得 500 GB 的容量。500 GB 硬盘中的 250 GB 被浪费了。但正如我所说,我只是在玩一玩。
首先让我们看看磁盘大小:
lsblk /dev/sdb /dev/sdc /dev/sdd
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 232.9G 0 disk
sdc 8:32 0 465.8G 0 disk
sdd 8:48 0 232.9G 0 disk
创建 RAID5:
sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd -c 4 --auto md
显示创建的 Raid5 的信息:
cat /proc/mdstat Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd[3] sdc[1] sdb[0]
488132976 blocks super 1.2 level 5, 4k chunk, algorithm 2 [3/2] [UU_]
[>....................] recovery = 0.5% (1354384/244066488) finish=59.7min speed=67719K/sec
bitmap: 0/2 pages [0KB], 65536KB chunk
unused devices: <none>
显示更多细节:
sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Feb 26 14:52:54 2020
Raid Level : raid5
Array Size : 488132976 (465.52 GiB 499.85 GB)
Used Dev Size : 244066488 (232.76 GiB 249.92 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Wed Feb 26 14:57:43 2020
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 4K
Consistency Policy : bitmap
Rebuild Status : 7% complete
Name : raspberrypi:0 (local to host raspberrypi)
UUID : 3291b54e:fad8f43b:cc398574:a1845ff9
Events : 57
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
3 8 48 2 spare rebuilding /dev/sdd
Dmesg显示
[ 2462.122882] md/raid:md0: device sdc operational as raid disk 1
[ 2462.122892] md/raid:md0: device sdb operational as raid disk 0
[ 2462.126278] md/raid:md0: raid level 5 active with 2 out of 3 devices, algorithm 2
[ 2462.142439] md0: detected capacity change from 0 to 499848167424
[ 2462.222689] md: recovery of RAID array md0
那么我在创建 RAID5 时做错了什么?我对mdadm --detail /dev/md0
磁盘号 0、1 和 3 的输出感到困惑,而不是 0、1、2
答案1
对于新创建的 RAID5 阵列来说,这是正确的行为:创建后,它需求计算每个条带的正确奇偶校验。
您可以在命令--assume-clean
中附加内容mdadm
以跳过初始同步,但我强烈建议不要这样做:如果您的奇偶校验不匹配,则任何内容check
都会报告数千个错误,并且您将无法从“假”错误中识别出真正的错误。要解决这种非常模糊的情况,您需要运行一个repair
命令 - 它将像初始数组创建一样重新计算奇偶校验。