在过去的 3 天里,我一直在查看 Raid 级别。并且一直在权衡突袭控制器硬件/软件的利弊。我知道 RAID 不是一种备份解决方案,我对它非常满意,但仍然存在一个问题。
RAID 控制器(甚至 Raid 1 到 Raid 6)如何实际检测到硬盘驱动器出现故障。我所做的研究表明,大多数常见的硬盘驱动器制造商在其硬盘驱动器设计中使用 ECC,该设计旨在防止 1 位故障到 3 位的程度。
虽然在考虑这一点时,假设您有 Raid (1) 和两个相同的硬盘驱动器。假设从驱动器 0 读取数据,同时从驱动器 1 读取数据。虽然驱动器 1 向 Raid 控制器报告 ECC 读取失败。
现在这是一个大问题,对于硬件突袭,突袭控制器会做什么?它从硬盘收到读取失败的信号。它可以报告硬盘驱动器有故障并需要更换。
Raid 控制器是否会寻找不同的硬盘驱动器以获取数据,直到从驱动器成功读取数据。(是的,驱动器可以报告读取正确,但数据仍然可能损坏,并且 RAID 在读取时不会检查极性或 ECC)
我有一个运行内核的双核 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) 我最近遇到了一些计算机问题,不知何故,我的一个磁盘最终无法在我的阵列中被识别。它识别良好,智能和其他一些磁盘检查实用程序都说它很好,但不知何故 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 驱动器上运行,所以走这条路也有些复杂......我只是不确定哪个更安全/推荐。
我们有两台服务器(ML530 G2 和 DL380G2),配备相同的 HP 10K RPM SCSI 驱动器和 raid 5。一台已退役,另一台将很快退役。但是,生产服务器上的一个驱动器出现驱动器故障。我的希望是从退役的服务器中取出其中一个驱动器并将其放入生产服务器。两者都运行 RAID 5。
我打破了 decomm 上的阵列。服务器。据我所知,这应该清除了所有的卷和分区信息。但是,我不知道从退役的服务器中取出驱动器并更换故障驱动器是否安全。
现有阵列是否会将其视为替换驱动器、擦除并重建?或者它会失败,因为它之前在数组中使用过。
删除 raid 5 阵列后,驱动器上是否有任何残留数据?
这些服务器已有 10 到 15 年的历史,所以我们只是努力让它们保持活力,直到我们将其退役。我不打算支付溢价来寻找仍然销售此系统替换驱动器的供应商。
我最近将我的 RAID 5 存储虚拟驱动器从 6TB 扩展到 9TB。Dell OMSA 和 RAID 控制器的 bios 都显示我的内存为 8382GB。这很好。
但是当进入 Debian 并四处浏览时,它仍然只能看到 6TB。
当我做一个 fdisk -l 我得到这个:
Disk /dev/sda: 9000.1 GB, 9000103968768 bytes
255 heads, 63 sectors/track, 1094200 cylinders, total 17578328064 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
/dev/sda1 1 4294967295 2147483647+ ee GPT
Run Code Online (Sandbox Code Playgroud)
所以它现在看到它是 …
假设以下情况:管理员在维护使用 RAID5 的 NAS 服务器(QNAP QTS 4.3.3)时不够小心,已经出现了其中两个(四分之二)驱动器包含坏块的情况,但没有驱动器完全失效。没有外部备份。
假设两个驱动器上的坏块不重叠,100% 数据恢复应该是有道理的,但真的是这样吗?应该如何处理这个问题?
谢谢大家!
首先是长篇故事:
我在 Debian 9 上有一个带 mdadm 的 RAID5。Raid 有 5 个磁盘,每个 4TB 大小。其中4个是HGST Deskstar NAS,后来的一个是东芝N300 NAS。
在过去的几天里,我注意到该 Raid 中出现了一些读取错误。例如,我有一个 10GB 的 rar 档案,分为多个部分。当我尝试提取时,某些部分出现 CRC 错误。如果我第二次尝试,我会在其他部分出现这些错误。Torrents 和下载后重新破解也会发生这种情况。
重新启动后,我的 BIOS 注意到 SATA 端口 3 上的 HGST 驱动器的 SMART 状态不好。smartctl 曾对我说存在 DMA CRC 错误,但声称驱动器没问题。
稍后再次重新启动,我再也看不到 smart 中的 crc 错误了。但现在我得到了这个输出
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-4-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less …Run Code Online (Sandbox Code Playgroud) 我已经在我的 HP P840 上使用 RAID5 硬盘存储 (8x6TB) 大约 2 年了,它总是出现异常多的驱动器故障。半年一切都很好,但现在驱动器以一种奇怪的方式出现故障。例如,2 个新驱动器在添加到 RAID 几天后出现故障。我也已经更换了 RAID 控制器,并在主板和 RAID 控制器上使用了最新固件。
我也尝试使用不同的驱动器。最初在该 RAID 中使用了 HGST DeskStar 6TB 驱动器,现在我在更换故障驱动器时已将它们替换为 HGST UltraStar 6TB。但行为是一样的。
此外,似乎(大多数)驱动器并没有真正发生故障,因为一旦我更换了 RAID 控制器,一个发生故障的驱动器就会再次被识别为正常并开始重建。
我的主机支持说问题是我实际上使用的是 RAID5,我应该改用 RAID10。我很难相信,因为我一直在使用 RAID5,在其他系统上没有问题(多年来没有出现驱动器故障)。
谁能给我一个提示,罪魁祸首可能是什么?RAID 控制器的配置方式有问题吗?
谢谢!
编辑:
服务器是 HP DL180 G9
驱动器故障的原因始终是“写入重试失败”
更新:我们的主机提供我们完全更换硬件并切换到 RAID6。我们这样做了,现在已经顺利运行了一段时间。虽然这并没有得到真正的调查,但我相信 shodanshok 对穿孔阵列的解释似乎是合理的。因此我会接受这个答案。谢谢大家!
Smart Array P840 in Slot 1 (sn: PDNNF0ARH321GD)
Port Name: 1I
Port Name: 2I
Internal Drive Cage at Port 1I, Box 2, OK
Internal Drive Cage at Port 1I, Box 2, OK
Internal …Run Code Online (Sandbox Code Playgroud) 我有一个 raid5 阵列,每月对其运行一次检查。经过配置,检查从 01:00 开始运行 6 小时,然后停止。接下来的晚上,它将继续检查 6 个小时,直到完成。
我遇到的问题是,有时当 mdcheck 尝试停止检查运行时,它会挂起。一旦发生这种情况,您可以从数组中读取数据,但任何写入尝试都会导致进程挂起。
数组状态如下:
md0 : active raid5 sdb1[4] sdc1[2] sdd1[5] sde1[1]
8790398976 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
[========>............] check = 44.2% (1296999956/2930132992) finish=216065.8min speed=125K/sec
bitmap: 0/6 pages [0KB], 262144KB chunk
Run Code Online (Sandbox Code Playgroud)
永远check = 44.2% (1296999956/2930132992)不会前进或停止。
从/usr/share/mdadm/mdcheck脚本中可以看出,每 2 分钟,直到结束时间,它都会读取/sys/block/md0/md/sync_completed该位置并将其保存在存储在目录中的文件中/var/lib/mdcheck/。在该目录中查看该文件,该文件的日期为停止前 2 分钟,值为2588437040. sync_completed的当前值2593999912表示一切在停止前 2 分钟仍在工作。
运行lsof该mdcheck进程会发现以下内容:
mdcheck 23887 root 1w …Run Code Online (Sandbox Code Playgroud) raid5 ×10
raid ×6
mdadm ×4
linux ×3
bad-blocks ×1
debian ×1
dell-perc ×1
hard-drive ×1
hp ×1
hp-proliant ×1
lvm ×1
opensuse ×1
raid1 ×1
smart ×1
ubuntu ×1