我成功地创建了一个 RAID(镜像)mdadm。但是,我必须在每次启动后运行以下命令:
mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
mdadm --assemble --scan // to start /dev/md0
Run Code Online (Sandbox Code Playgroud)
我做错了什么/为什么我需要在启动时运行这些命令?每次(重新)启动时自动启动 RAID 的正确方法是什么?
启动后,我的 RAID1 设备 ( /dev/md_d0*) 有时会进入一些有趣的状态,我无法安装它。
* 最初是我创建的,/dev/md0但它以某种方式将自己更改为/dev/md_d0.
# mount /opt
mount: wrong fs type, bad option, bad superblock on /dev/md_d0,
missing codepage or helper program, or other error
(could this be the IDE device where you in fact use
ide-scsi so that sr0 or sda or so is needed?)
In some cases useful info is found in syslog - try
dmesg | tail or so
Run Code Online (Sandbox Code Playgroud)
RAID 设备似乎以某种方式处于非活动状态:
# cat /proc/mdstat
Personalities : …Run Code Online (Sandbox Code Playgroud) 我有一个带有 2TB HDD 的廉价 2 盘位 NAS。为了防止磁盘故障,我正在考虑购买第二个 2TB HDD 并将其放入带有 Linux mdadm 的 RAID1。文件系统是ext4。
这会提高还是降低 NAS 的性能?仅读取或写入性能如何?
网上似乎有很多关于这个的意见,但没有达成共识。
谢谢。
编辑:
所以我已经得到了三个不同的答案:“快一点”、“你不会注意到”和“如果有的话会降低性能”。(我主要对读取性能感兴趣。)维基百科说“读取性能可以大致上升为副本数量的线性倍数”。哪一个?
编辑2:
我发现越来越多的证据支持 RAID1 提高读取性能,包括 MD 联机帮助页:
更改并行写入所有设备。从任何一台设备读取数据。驱动程序尝试在所有设备之间分配读取请求以最大化性能。
我还发现了 MD 的 RAID10 with --layout=f2,它提供了 RAID1 的冗余和 RAID0 的读取性能,并且可以使用两个驱动器。然而,写入性能会降低,因为顺序写入涉及两个驱动器在驱动器的远处部分之间来回寻找。man md详情。
这是mdadm -Esv的输出:
ARRAY /dev/md127 level=raid0 num-devices=2 UUID=d89d9d45:9a420812:c44c77eb:7ee19756 devices=/dev/sdb8,/dev/sda8
这是一个 v0.90 数组。问题如下: mdadm 如何为相应的设备分配名称,它存储在哪里以及如何更改它?
我想要完成的是将md127重命名为我喜欢的不同名称。
我在 Ubuntu 12.04 LTS Precise Pangolin 上调用using的RAID 1阵列中创建了两个 2TB HDD 分区(/dev/sdb1和/dev/sdc1)。/dev/md0mdadm
该命令sudo mdadm --detail /dev/md0用于将两个驱动器指示为活动同步。
然后,为了测试,我失败了/dev/sdb1,将其删除,然后使用命令再次添加它sudo mdadm /dev/md0 --add /dev/sdb1
watch cat /proc/mdstat 显示了阵列重建的进度条,但我不会花几个小时看它,所以我假设软件知道它在做什么。
进度条不再显示后,cat /proc/mdstat显示:
md0 : active raid1 sdb1[2](S) sdc1[1]
1953511288 blocks super 1.2 [2/1] [U_]
Run Code Online (Sandbox Code Playgroud)
并sudo mdadm --detail /dev/md0显示:
/dev/md0:
Version : 1.2
Creation Time : Sun May 27 11:26:05 2012
Raid Level : raid1
Array …Run Code Online (Sandbox Code Playgroud) 我刚刚搬家,涉及拆除我的服务器并重新连接它。由于这样做,我的 MDADM RAID5 阵列之一显示为非活动状态:
root@mserver:/tmp# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
md1 : active raid5 sdc1[1] sdh1[2] sdg1[0]
3907023872 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
md0 : inactive sdd1[0](S) sdf1[3](S) sde1[2](S) sdb1[1](S)
3907039744 blocks
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
在我看来,它似乎找到了所有磁盘,但由于某种原因不想使用它们。
那么 (S) 标签是什么意思,我如何告诉 MDADM 再次开始使用该阵列?
[编辑]我只是尝试停止和组装阵列-v:
root@mserver:~# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
root@mserver:~# mdadm --assemble --scan -v
mdadm: /dev/sde1 is identified as a member of /dev/md0, slot 2.
mdadm: …Run Code Online (Sandbox Code Playgroud) 我有/dev/md127一个由四个驱动器组成的 RAID5 阵列。我设法将它们从阵列中热移除,目前/dev/md127没有任何驱动器:
cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdd1[0] sda1[1]
304052032 blocks super 1.2 [2/2] [UU]
md1 : active raid0 sda5[1] sdd5[0]
16770048 blocks super 1.2 512k chunks
md127 : active raid5 super 1.2 level 5, 512k chunk, algorithm 2 [4/0] [____]
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
和
mdadm --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Thu Sep 6 10:39:57 2012
Raid Level : raid5 …Run Code Online (Sandbox Code Playgroud) 我将如何使用 mdadm 扩展 RAID10 阵列?
显然我需要一次添加 2 个驱动器,还是必须是 4 个驱动器?
我有一种感觉,这只是一个坏主意。
或者只是选择 RAID5 会更明智?
我有一个在 openSUSE 12.2 上运行的家庭媒体服务器。我在 RAID-10 配置中使用了八个 2TB 驱动器。我特意买了两种不同类型的硬盘:四个希捷 Barracuda Green 和四个 Western Digital Red。我的目标是配置 RAID,使阵列中的每个镜像对都包含不同的驱动器(即,一个 Seagate 驱动器和一个 WD 驱动器)。不幸的是,YaST2 Partitioner 在阵列结构中没有给我这个级别的选择,所以现在我试图找出默认的 RAID10 结构是什么样的。
我知道以下几点:
我在创建 RAID 时选择了默认的“n2”布局。我根据这两个来源的信息猜测相邻驱动器是镜像的(即 sdc==sdd、sde==sdf 等),但我想确定地知道:
这是'mdadm --detail /dev/md0'的输出:
Run Code Online (Sandbox Code Playgroud)/dev/md0: Version : 1.0 Creation Time : Sat Mar 16 12:55:11 2013 Raid Level : raid10 Array Size : 7814045696 (7452.05 GiB 8001.58 GB) Used Dev Size : 1953511424 (1863.01 GiB 2000.40 GB) Raid Devices : 8 Total Devices : 8 …
我正在使用 mdadm 将一些 RAID5 磁盘重新创建为 RAID6。我关心的驱动器上没有数据。
设置 RAID 需要一段时间来设置形状 - 我接受当有数据需要条带化并计算奇偶校验时,但是对于这些驱动器,它们是空的 - 或者至少我希望它们被视为空。
那么有没有一种方法可以跳过奇偶校验计算并告诉 mdadm 只设置超级块并完成,否则,当没有数据可以移动时,它到底花费了这么多时间吗?
md3 : active raid6 sdf3[5] sde3[4] sdd3[3] sdc7[2] sdb3[1] sda3[0]
1953114112 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
[>....................] resync = 1.3% (6790144/488278528) finish=409.3min speed=19604K/sec
Run Code Online (Sandbox Code Playgroud)
请注意,我不是在谈论--assume-clean从包含您知道正确的 RAID 阵列的预先存在的一组磁盘重建阵列的位置。我说的是一个应该被认为是空的数组,而不是被认为是正确的条带化。
因此,为了这个问题,让我们说设备已经预先填充了零。
mdadm ×10
raid ×8
linux ×7
raid-1 ×2
raid-10 ×2
raid-5 ×2
ubuntu ×2
home-server ×1
kubuntu ×1
opensuse ×1
performance ×1
ubuntu-12.04 ×1