长话短说,我负责一个具有两个 RAID 阵列(/dev/md0 和 /dev/md2)的媒体服务器。我还有很多东西要学习软件 RAID 和 LVM 等。我们在 /dev/md0 中有一个驱动器故障,好吧没什么大不了我更换了坏驱动器,重新组装了 RAID 阵列(昨晚花了大部分时间才完成) ),今天早上我进来了,并且能够在没有数据丢失的情况下挂载 /dev/md0。
我几乎不知道,有些东西被 /dev/md2 损坏了。现在 /dev/md0 是两年前我的同事设置的,我大约六个月前设置了 /dev/md2。一直使用戴尔和惠普服务器内置的硬件控制器完成 RAID,这是我第一次不得不处理软件 RAID。我按照 [url] http://www.gagme.com/greg/linux/raid-lvm.php[/url]上的说明进行操作我认为这是最好的主意,因为 LVM 将使我能够在未来扩展 RAID 阵列(我刚刚了解到 mdadm 可以做同样的事情)。直到今天,这都没有问题。修复 /dev/md0 后重新启动机器后,无法挂载 /dev/lmv-raid/lvm0(表示找不到文件或目录)。看起来逻辑卷几乎消失了。我不明白是什么导致了这种情况。第二个阵列中没有驱动器坏,我没有接触第二个阵列。阵列应该没有任何问题。但是好像有什么不对的地方。
现在 /dev/md2 正在运行并且处于干净状态,但我无法安装它。恐怕数据没了。真正可怕的是,对于发生的事情,我的脑海中没有任何解释。我假设我无法挂载 /dev/md2,因为 RAID 阵列期望由 LVM 控制。也许我不太了解系统,但是如果我有一个干净的数组,数据不应该仍然在数组中吗?知道如何恢复数据吗?我最不想做的就是回到我的老板那里告诉他,在修复一个阵列的过程中,另一个阵列神奇地坏了,你所有的数据都没有了。我查看了多个站点,但由于我不知道实际上是什么破坏了它,我不知道我是否真的丢失了数据,或者是否还有其他东西我遗漏了。
任何建议将不胜感激,我整个上午都在为此苦苦挣扎,并且完全不知所措。
以下是更多信息:
[root@viamao ~]# mdadm --detail /dev/md2
/dev/md2:
Version : 00.90.01
Creation Time : Tue Jun 9 11:32:06 2009
Raid Level : raid5
Array Size : 4395415488 (4191.79 GiB 4500.91 GB)
Device Size : 1465138496 (1397.26 …Run Code Online (Sandbox Code Playgroud) 假设以下驱动器设置(使用 ZFS):
控制器 1 Drive1 Drive4 Drive7 Drive10 控制器 2 Drive2 Drive5 Drive8 Drive11 控制器 3 Drive3 Drive6 Drive9 Drive12
VDEV 设置:
vdev1:drive1、drive2、drive3 vdev2:drive4、drive5、drive6 vdev3:drive7、drive8、drive9 vdev4:drive10、drive11、drive12
将所有 vdev 添加到同一个 zpool 中,还是使用单独的 zpool(每个 vdev 一个)更好(为了可靠性)?另外,如果我们丢失了一个 vdev,我们会丢失整个阵列吗?我们不需要将所有存储容量集中在一个地方——从存储的角度来看,可以找到较小的 zpool。
更新:对于 3dinfluence 关于引导池的问题,这将在 RAID1 集上。我不喜欢混合使用操作系统和我的多 TB RAID 阵列。
当两个驱动器都更换为更大的驱动器时,Dell perc 6i 卡是否支持对 raid 1 阵列的在线扩展?
例如,逻辑驱动器 0 (LDO) 有两个成员 73GB 驱动器。
我们有两个新的 147GB 驱动器可用并插入服务器的备用插槽中。(不担心系统中的最终驱动器位置)
我可以删除每个 73gb 并用 147gb 替换它,然后使用 MegaCli 工具(版本 4.00.11)增加 raid 1 阵列吗?
控制器是否支持在线扩展?
如果支持,需要哪些命令开关来完成重建/增长/扩展?
或者,我将不得不在控制器上创建一个新的 LD(2x 147gb raid1),pvmove 数据,然后 dd /boot over 并重新安装 grub 等。
前奏:我使用 mysqldump 命令转储了一个 5.2 GB 的数据库。我在一个只有 512 MB 内存的动力不足的虚拟服务器上完成了这项工作。花了大约一个小时。我现在正在我的台式机上重新加载该数据库,该计算机具有双核 CPU 和 2 GB 内存。重新加载是第 9 个小时,我不知道它是否接近完成。大约一年前,我在同一台机器上重新加载了这个数据库,只花了两个小时。当时和现在的区别是我在raid1模式下用两个SATA磁盘替换了我的单个ATA硬盘。我知道 raid1 会写得更慢(理论上)但绝对不会慢 4.5 倍!所以我爆发了iostat,我变得更加困惑。
$ sudo iostat
Linux 2.6.30-2-amd64 (lukahn) 12/12/2009 _x86_64_ (2 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
7.13 0.00 1.94 27.96 0.00 62.97
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 144.02 198.41 11139.44 9322418 523399320
sdb 143.78 165.59 11137.39 7780516 523303000
hda 0.01 0.05 0.00 2492 0
md0 0.66 6.44 0.71 302538 33496
md1 7.32 67.02 7.51 3148938 352960
md2 …Run Code Online (Sandbox Code Playgroud) 我有(有)一个 RAID 1 阵列(2 个磁盘镜像),其中一个磁盘 sda 出现故障。所以我用一个新磁盘替换了坏磁盘,但似乎被困在如何让第二个驱动器备份并作为阵列的一部分运行。
系统运行的是Ubuntu Server 9.04,配置如下:
MD0 => sda1,sdb1
MD1 => sda3,sdb3
MD2 => sda2,sdb2
mdadm --detail /dev/md0
Run Code Online (Sandbox Code Playgroud)
显示两个驱动器:
0 /dev/sdb1 "Active Sync"
1 [nothing] "Removed"
Run Code Online (Sandbox Code Playgroud)
MD1 和 MD2 看起来一样。
我发现的教程说使用以下命令将每个分区标记为失败:
mdadm --manage /dev/md0 --fail /dev/sda1
Run Code Online (Sandbox Code Playgroud)
但是,由于驱动器不在那里,我得到:
mdadm: cannot find /dev/sda1: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我可以跳过失败的步骤吗?或者是否有其他方法可以使不再存在的分区失败?或者,如果我将分区表从旧驱动器复制到新驱动器,它会自动选择它是替代品吗?
我是新手,不想搞砸。:)
在过去的 3 天里,我一直在查看 Raid 级别。并且一直在权衡突袭控制器硬件/软件的利弊。我知道 RAID 不是一种备份解决方案,我对它非常满意,但仍然存在一个问题。
RAID 控制器(甚至 Raid 1 到 Raid 6)如何实际检测到硬盘驱动器出现故障。我所做的研究表明,大多数常见的硬盘驱动器制造商在其硬盘驱动器设计中使用 ECC,该设计旨在防止 1 位故障到 3 位的程度。
虽然在考虑这一点时,假设您有 Raid (1) 和两个相同的硬盘驱动器。假设从驱动器 0 读取数据,同时从驱动器 1 读取数据。虽然驱动器 1 向 Raid 控制器报告 ECC 读取失败。
现在这是一个大问题,对于硬件突袭,突袭控制器会做什么?它从硬盘收到读取失败的信号。它可以报告硬盘驱动器有故障并需要更换。
Raid 控制器是否会寻找不同的硬盘驱动器以获取数据,直到从驱动器成功读取数据。(是的,驱动器可以报告读取正确,但数据仍然可能损坏,并且 RAID 在读取时不会检查极性或 ECC)
我有一台来自 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) 我们有一台带有 RAID 卷的服务器。Windows DEFRAG 在卷上显示非常高的碎片 (90%)。我的主管询问 DEFRAG 报告的碎片是否正确(或接近正确)。
我们很长一段时间都没有进行任何碎片整理(至少在过去的 4 个月里,我在这里工作的时间里没有)。这是一个生产服务器,我们非常担心。
我们有三台 SQL Server 服务器,每台服务器上大约有五六个数据库。我们正在将这些服务器迁移到新的 SAN,我正在研究最佳 RAID 配置。当前,所有数据库的所有日志文件共享一个 RAID 阵列,该 RAID 阵列上除了日志文件外没有其他任何内容,但所有数据库都使用相同的阵列作为其日志文件。
我读过最好将日志文件放在不同的磁盘上。但在我们的例子中,我不确定是否最好拥有一个包含所有日志文件的大约 8 个驱动器的大阵列。还是创建四个两个磁盘阵列并为一些较大的数据库提供自己的日志文件专用磁盘会更好?
我们 EVA4000 的一个磁盘今天坏了。该磁盘组(所有卷 vraid5 的备用级别为 1,几乎没有剩余空间可用于更多卷,1TiB 驱动器)现在正在使用“备用空间”重建,并且至少需要 15 小时才能进行调配/重建。
我们要到周五才能拿到新磁盘。那么,问题是,如果另一个磁盘在调平完成之前死亡会发生什么?我们会丢失数据吗?在那之后,有多少附加磁盘会在丢失数据之前死亡?1 还是 2?
在“通常”的 RAID 中,我们很容易在重建过程中丢失数据,但在这种情况下,为备用保留的空间是更大磁盘大小的两倍,因此至少效果应该是相同的有两个备用。
提前致谢。
更新:我发现了一些关于这个问题的有趣线索,但仍然无法回答这个问题,所以我开始悬赏。
http://blog.thestoragearchitect.com/2008/10/27/understanding-eva/
raid ×10
linux ×4
raid1 ×2
storage ×2
debian ×1
defrag ×1
dell ×1
hard-drive ×1
hp ×1
iostat ×1
lvm ×1
opensolaris ×1
perc6 ×1
performance ×1
raid5 ×1
sql-server ×1
ubuntu ×1
ubuntu-9.04 ×1
zfs ×1