我正在尝试使用 mdadm 创建软件 raid5 阵列:
$ linux # mdadm --create --verbose /dev/md0 --level=5 --raid-devices=4 --spare-devices=0 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: array /dev/md0 started.
Run Code Online (Sandbox Code Playgroud)
但是在检查 /proc/mdstat 时
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd1[4] sdc1[2] sdb1[1] sda1[0]
2930279808 blocks level 5, 64k chunk, algorithm 2 [4/3] [UUU_]
[>....................] recovery = 0.3% (2970496/976759936) finish=186.1min speed=87172K/sec
unused devices: <none>
Run Code Online (Sandbox Code Playgroud)
似乎有一个驱动器未激活,因此我检查了阵列的详细信息:
/dev/md0:
Version : 00.90.03
Creation Time : Tue Jul …Run Code Online (Sandbox Code Playgroud) 这是一个广泛的问题——我不是在问特定的 RAID 级别或操作系统。
我有一台来自 hetzner.de (EQ4) 的服务器,带有 2 个 SAMSUNG HD753LJ 驱动器(750G 32MB 缓存)。
操作系统是 CentOS 5 (x86_64)。驱动器组合在一起成为两个 RAID1 分区:
现在,我一直在运行一些基准测试,看起来即使完全相同的驱动器,每个驱动器的速度也略有不同。
# hdparm -tT /dev/sda
/dev/sda: Timing cached reads: 25612 MB in 1.99 seconds = 12860.70 MB/sec Timing buffered disk reads: 352 MB in 3.01 seconds = 116.80 MB/sec
# hdparm -tT /dev/sdb
/dev/sdb: Timing cached reads: 25524 MB in 1.99 seconds = 12815.99 MB/sec Timing buffered disk reads: 342 MB in 3.01 seconds …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的单磁盘启动转换为 raid1 启动
到目前为止,这是我所拥有的:
内核告诉我: 1 - 检测到根设备是 md 设备 2 - 确定根设备 3 - 安装根 4 - 在 /newroot 上安装 /dev/md125 失败:输入/输出错误。请输入另一个根设备:...
在这一点上,如果我输入 /dev/sda3(我的“旧”根设备,还没有转换为 raid),一切都可以在没有根的情况下正常启动。/dev/md125 设备确实已创建,但它似乎是在错误发生后创建的,因为它在加载设备后,当加载 mdadm 时创建它。
不知何故,它看起来无法/不在需要安装之前加载raid阵列,我不知道如何解决这个问题。
我的配置文件(在以 sda3 作为根设备启动后从系统中获取):
$ cat /etc/mdadm.conf
ARRAY /dev/md/md0-r5 metadata=0.90 UUID=1a118934:c831bdb3:64188b84:66721085
ARRAY /dev/md125 metadata=0.90 UUID=48ec4190:a80d4dde:64188b84:66721085
$ cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4] [raid0] [raid10]
md125 : active raid1 sdc3[1]
477853312 blocks [2/1] [_U]
md127 …Run Code Online (Sandbox Code Playgroud) 我有一个运行内核的双核 Intel i5 Ubuntu Server 10.04 LTS 系统,2.6.32-22-server #33-Ubuntu SMP其中三个 1TB SATA 硬盘RAID5使用 linuxmd设备设置在一个阵列中。我已经阅读了有关RAID5 写入漏洞的信息并担心:如果我的 linux 系统锁定或内核崩溃,我是否应该假设我的数据的完整性已受到损害并从备份中恢复?如何知道 RAID5 阵列上的数据是否“安全”?
编辑:输出mdadm --detail:
root@chef:/var/lib/vmware# mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Thu May 27 04:03:01 2010
Raid Level : raid5
Array Size : 1953521536 (1863.02 GiB 2000.41 GB)
Used Dev Size : 976760768 (931.51 GiB 1000.20 GB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0 …Run Code Online (Sandbox Code Playgroud) 看起来 Debian 默认在每个月的第一个星期日运行 checkarray 。
这在我的 2TB 镜像上导致了 12 小时的大量性能问题和大量磁盘使用。这样做“以防万一”对我来说很奇怪。在没有仲裁的情况下发现两个磁盘之间不同步的数据无论如何都是失败的。
这种大规模检查只能告诉我,我有一个不可恢复的驱动器故障和损坏的数据。这很好,但并不是那么有帮助。有必要吗?
鉴于我没有磁盘错误并且没有理由相信我的磁盘出现故障,为什么需要进行此检查?我应该把它从我的 cron 中取出吗?
/etc/cron.d# tail -1 /etc/cron.d/mdadm
57 0 * * 0 root [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ] && /usr/share/mdadm/checkarray --cron --all --quiet
Run Code Online (Sandbox Code Playgroud)
感谢您的任何见解,
我最近遇到了一些计算机问题,不知何故,我的一个磁盘最终无法在我的阵列中被识别。它识别良好,智能和其他一些磁盘检查实用程序都说它很好,但不知何故 UUID 是不同的。
结果,mdadm 说有一个“已删除”的磁盘。理想情况下,我只想更新它以便它再次检测到它,但由于这是 raid-5,我不明白为什么我不能将它从阵列中删除,然后重新添加它并让它重建。
不幸的是,我看到的每个命令都希望我在删除它时将其称为设备,但就 md 而言,它只是一个不再可用的 uuid。如何删除当前设置为“已删除”的磁盘?
- 编辑:根据要求提供更多信息。我目前在没有网络的情况下在 ubuntu live cd 中运行,所以这些是手工输入的。抱歉,如果有任何间距问题。
/proc/mdstat:
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md0 : inactive sdd1[0] sdc[3] sde1[1]
3907034368 blocks
mdadm --detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Wed May 26 22:59:21 2004
Raid Level : raid5
Used Dev Size : 976759936 (931.51 GiB 1000.20 GB)
Raid Devices: 4
Total Devices: 3
Prefered Minor : 0
Persistence: Superblock is persistent
Update Time: Sat Nov 27 1:03:17 …Run Code Online (Sandbox Code Playgroud) 我有一个带有三个 500GB 驱动器的服务器,我的大部分数据都在 RAID5 配置中跨越其中三个。
我刚刚购买并安装了四个 1TB 驱动器,目的是将旧驱动器移到新驱动器上。我有足够的 SATA 端口和电源连接器可以同时为我的所有七个驱动器供电,因此我在弄清楚如何处理新驱动器的同时让旧 RAID 保持运行。
我的问题是:我是否应该在 1TB 驱动器上创建一个全新的阵列,然后将所有内容都移过去并重新配置 linux 以从新的 md 阵列启动?或者我应该只扩展阵列,用 1TB 交换三个 500GB 中的每一个,然后添加最终驱动器?
我已经阅读了 mdadm 扩展驱动器设置,这是有道理的,但我想我会在移动设备时使用其中一个驱动器作为完整备份,然后在一切就绪后将该驱动器添加回阵列在三个 1TB 驱动器上运行,所以走这条路也有些复杂......我只是不确定哪个更安全/推荐。
我已经在 x86_64 机器上使用 mdadm 管理的软件突袭设置了一个 4 驱动器 RAID-10 阵列。
它会启动并运行并按预期工作,
cat /proc/mdstat
md127 : active raid10 sdc2[2] sdd2[3] sda2[0] sdb2[1]
1951397888 blocks super 1.2 512K chunks 2 far-copies [4/4] [UUUU]
bitmap: 9/466 pages [36KB], 2048KB chunk
Run Code Online (Sandbox Code Playgroud)
atm 四个 SATA 驱动器物理插入主板的第一个四个 SATA 端口。
我想为灾难性恢复收集必要/完整的信息。从这里开始阅读,http://neil.brown.name/blog和邮件列表,我还不能完全相信我做对了。
我理解“驱动顺序很重要”。逻辑和/或物理顺序重要吗?
如果我拔掉这个阵列中的四个驱动器,然后将它们分别插回主板或 pci 卡上的不同端口,只要我没有更改软件配置中的任何内容,阵列会正确地自动重新组装吗?
在某些系统上,我看到了这一点:
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md1 : active raid1 sdb1[1] sda1[0]
10485696 blocks [2/2] [UU]
md2 : active raid1 sdb2[1] sda2[0]
477371328 blocks [2/2] [UU]
Run Code Online (Sandbox Code Playgroud)
和其他系统显示:
Personalities : [raid1]
md0 : active raid1 sdb2[1] sda2[0]
204788 blocks super 1.0 [2/2] [UU]
md1 : active raid1 sdb1[1] sda1[0]
4193272 blocks super 1.1 [2/2] [UU]
md2 : active raid1 sda3[0] sdb3[1]
483985276 blocks super 1.1 [2/2] [UU]
bitmap: 0/4 pages [0KB], 65536KB chunk
Run Code Online (Sandbox Code Playgroud)
我想知道个性 …