标签: software-raid

Linux Software Raid 10 在 1 个驱动器出现故障后挂起,mdadm 不会让我强制移除故障设备

我有一个 Linux 软件 raid 10 设置,包括 5 个 RAID 1(每个镜像设置两个驱动器)和所有 5 个 RAID 1 对中的 RAID 0。为了测试没有任何驱动器会在负载下快速失效,我在 RAID 0 中使用了坏块,并采用破坏性读/写模式。

Badblocks 命令:badblocks -b 4096 -c 98304 -p 0 -w -s /dev/md13

其中一个设备出现故障,而不是 badblocks 程序愉快地继续在它上面挂起。如果我运行同步命令,这也会挂起。首先,我认为这不是 RAID 1 设备的标准行为。如果其中一个驱动器出现故障,它应该仍然能够毫无问题地写入两个驱动器组成的虚拟设备。

因此,我继续强制使驱动器失效并尝试将其卸下。我可以毫无问题地将驱动器设置为故障(但是 IO 操作仍然挂起)。我无法从它说它正忙的突袭中完全移除该设备。我的假设是,如果我可以将它完全踢出突袭,IO 将继续,但这只是一个假设,我确实认为我正在处理各种错误。

这里到底发生了什么?由于错误,我是否处于无法恢复的位置?

该系统正在运行内核 2.6.18,因此它并不是全新的,但我认为鉴于软件突袭已经存在了很长时间,这样的问题不会发生。

任何见解都非常感谢。

mdadm --detail /dev/md13

/dev/md13:

    Version : 00.90.03   Creation Time : Thu Jan 21 14:21:57 2010
 Raid Level : raid0
 Array Size : 2441919360 (2328.80 GiB 2500.53 GB)    Raid Devices : 5  
Run Code Online (Sandbox Code Playgroud)

设备总数:5 首选次要:13 持久性:超级块是持久性的

Update …
Run Code Online (Sandbox Code Playgroud)

linux raid mdadm software-raid raid10

8
推荐指数
1
解决办法
1875
查看次数

Windows 7 可以做软件 RAID 10 (1+0)

Windows 7 可以执行软件 RAID 10(或 RAID 1+0,具体取决于术语)吗?

似乎缺少有关 Microsoft Windows 产品的软件 RAID 的信息。甚至在 microsoft.com 上的搜索也提供了关于该主题的零篇文章,只有几篇论坛帖子。

磁盘管理器似乎可以创建动态卷,并且您可以组织条带或镜像集。但是不清楚是否可以采用两个独立的镜像卷,然后对它们进行条带化(即使用 4 个磁盘)。

有使用 Microsoft Windows XP、Vista 或 Windows 7 运行软件 RAID 10 的经验吗?

更新此链接暗示 Windows 7 家庭高级版甚至无法执行 RAID 1(镜像)。Windows 7比较图表中没有提到这一点。即使我购买了 Professional,我也可以向广告标准机构投诉。

raid windows-7 software-raid raid10

8
推荐指数
1
解决办法
2万
查看次数

不同的 RAID 卡设置是否兼容?

我正在使用 RAID5 设置一个新的 NAS/SAN 系统,我想知道是采用软件还是硬件 RAID 方式,因为我想到了这个问题:

如果我的硬件 RAID 卡出现故障,我是否需要更换一个完全相同、相同品牌的卡就足够了,或者不同卡之间的 RAID5 设置是否不兼容?

我的猜测是它们不兼容,如果我的硬件出现故障,我正在尝试尽可能减少停机时间......

raid software-raid hardware-raid failsafe

8
推荐指数
1
解决办法
1722
查看次数

配置 Windows RAID-5“驱动器失败”超时?

背景

当硬盘控制器检测到错误并需要重新映射扇区时,驱动器通常会在尝试完成重新映射所需的几秒钟(或可能几分钟)内变得无响应。

由于驱动器不再响应,主机 RAID 控制器可以假设驱动器发生故障,并将其标记为不可靠。

某些制造商的某些硬盘驱动器型号具有限制(以秒为单位)驱动器尝试重新映射扇区所花费的时间的功能。不同的驱动器制造商对此功能有不同的名称:

注意:ATA/ATAPI 命令集中的正确术语是命令完成时间限制( CCTL )

通过限制驱动器尝试恢复扇区所花费的时间,它确保主机 RAID 控制器不会认为驱动器出现故障。

不同的 RAID 控制器(硬件和软件)有不同的超时间隔。如果驱动器无响应的时间超过其超时时间,它将被标记为离线,例如:

关于我的问题

Windows 中是否有一个选项可以控制 Windows 在决定驱动器没有响应之前将等待多长时间?

我知道一个名为的注册表设置TimeoutValue

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Disk\TimeOutValue

  • 超时值
    • 位置:HKLM\System\CurrentControlSet\Services\Disk\TimeoutValue
    • 值:1 - 255 秒
    • 含义:磁盘类驱动程序发起的 SRB 请求将超时之前的时间(以秒为单位)。如果未设置此注册表值,则使用默认值 10 秒。类驱动程序发起的请求的超时值因类驱动程序而异。
    • 操作系统版本:此功能适用于所有版本的 Windows 操作系统。

但这仅记录为适用于SCSI 微型端口驱动程序。而且即使如果它也适用于我的SATA驱动器,它并不能保证它也适用于Window的RAID-5子系统。


我询问调整我的(软件) …

windows raid software-raid raid5

8
推荐指数
1
解决办法
2198
查看次数

使用 NCQ 的 Linux 软件 RAID 5 性能不佳

在我的 3 磁盘 RAID 5 设置中抢救 2 磁盘故障时,我碰巧注意到禁用 NCQ(约 90M/秒)比启用 NCQ(约 50M/秒)的重建速度更快。运行 bonnie++ 对这两种配置进行基准测试还显示,Sequential Output Block 的写入性能明显更好:

  • 无 NCQ - 85M/秒,2021 毫秒延迟
  • NCQ - 62M/秒,57118 毫秒延迟

57 秒是不是有点过分?

我使用内核参数libata.force=noncq禁用了 NCQ,并在没有其他配置更改的情况下交替运行了两次测试。我还在三个组件磁盘上的分区上运行了 bonnie++,发现在有或没有 NCQ 的情况下运行之间没有显着差异。

这是完整的 bonnie++ 输出:

Version      1.96   ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
raid5-noncq     24G   435  92 85154  18 53585   9  3409  93 154272  10 297.6 …
Run Code Online (Sandbox Code Playgroud)

hard-drive software-raid

7
推荐指数
1
解决办法
5311
查看次数

Raid 1/10:内核恐慌 - 不同步:试图杀死 init

为了学习目的,我在 Virtual Box 中设置了 Raid 1 和 Raid 10。

4 个硬盘驱动器的以下分区:

我在四个驱动器上创建了一个 100mb 的分区 (/boot),并将其设为 raid 1 分区。

然后利用每个驱动器上的剩余空间,我设置了软件 raid 10 并将其配置为 LVM。在 LVM 中,我设置了一个 4GB 的交换分区和 20GB 的根分区 (/) 作为 ext4。

当我安装了 CentOS 6.2 64Bit 时,它似乎可以工作。然后我决定删除第二个 HD (Disk2.vdi) 以查看会发生什么并重新启动虚拟机,然后出现错误:

Kernel panic - not syncing: Attempted to kill init!
Run Code Online (Sandbox Code Playgroud)

这就是我卡住的地方。我希望操作系统能够正常加载并让我知道一个磁盘出现故障,但事实并非如此。怎么了?

编辑:我进一步挖掘以查看出了什么问题,这是屏幕截图:

在此处输入图片说明

当磁盘出现故障时,这是否正常?或者我没有正确设置分区/raid?

linux raid partition centos software-raid

7
推荐指数
1
解决办法
2158
查看次数

如果我对 SSD 和 HDD 进行突袭会发生什么?

我正在构建另一台服务器(便宜),并希望使用 256GB SSD 驱动器用于我的启动和数据。这足以满足我的需求,但由于几个原因,只有一个 SSD 会让我感到害怕。

如果我使用 SSD 和 HDD 进行镜像突袭,会发生什么?

它会在多大程度上减缓读取突袭?它会从更快的来源读取吗?

它会减慢写入多少?它会等到写入同时发送到 SSD 和 HDD 吗?

有没有人看到这样做的好处?

我发现了这个问题,但我认为它略有不同: 通过硬盘驱动器的 SSD 冗余

raid hard-drive ssd software-raid raid1

7
推荐指数
2
解决办法
1万
查看次数

Linux 文件系统缓存:将数据从脏数据移至回写

我的软件 RAID 可以持续写入 800 MB/s。我看到当cat /proc/meminfo |grep Writeback:返回 > 2 GB时会发生这种情况。但是,大多数情况下,回写大约为 0.5 GB,这提供了大约 200 MB/s 的性能。

有大量数据要写入。cat /proc/meminfo |grep Dirty:说脏缓存是 90 GB。

据我了解,Dirty 是需要写入的内容,而 Writeback 是主动写入磁盘的内容。因此,Dirty 中的块可能位于磁盘上与 Writeback 中的块相邻的磁盘上,并且这些块不会在同一个 go 中写入。

这可以解释为什么如果 Writeback 很小,我的性能会差很多,因为寻找的时间比写几个额外 MB 的时间要长得多。

所以我的问题是:我能否以某种方式告诉内核更积极地将更多数据从 Dirty 移动到 Writeback,从而增加 Writeback?

- 编辑 -

这是在低性能期间:

$ cat /proc/meminfo
MemTotal:       264656352 kB
MemFree:          897080 kB
Buffers:              72 kB
Cached:         233751012 kB
SwapCached:            0 kB
Active:          3825364 kB
Inactive:       230327200 kB
Active(anon):     358120 kB
Inactive(anon):    47536 kB
Active(file): …
Run Code Online (Sandbox Code Playgroud)

linux performance software-raid

7
推荐指数
1
解决办法
1万
查看次数

EMC ScaleIO 与 Starwind Virtual SAN

我正在建立一个测试实验室来评估未来生产使用的最佳解决方案。生产场是为 SMB 准备的,因此有预算,但也有限。

生产目标:3 台超融合服务器,采用 Windows Server 2012 R2 故障转移虚拟化集群和软件定义存储解决方案作为共享存储。短期内,集群将扩展到总共 5 台服务器。SAN 网络是专用的。

测试实验室的目标:找到满足以下条件的 SDS 解决方案:
1. 为 Hyper-V 集群提供共享存储。
2. 横向扩展:可以在不关闭集群的情况下添加-删除磁盘(最好也包括节点)。
3. 容错。丢失 1 个节点后可用(如果在丢失 2 个节点后可以恢复 - 太棒了!)。
4. 低网络开销/延迟(也将用于 SQL Server)。
5. 有合理的定价(因此,Storage Spaces Direct 是不可接受的)。

在阅读并查看了一些产品后,我的入围名单是 EMC ScaleIO 和 Starwind Virtual SAN。

我尝试了它们,发现 Starwind VSAN 提供的 HA 非常有限:据我了解,该解决方案仅跨节点镜像虚拟磁盘(即文件),并且仅允许在托管磁盘的限制范围内扩展容量。相反,ScaleIO 在节点之间传播数据,并允许添加新的存储和重新平衡卷。

所以,我的问题是:

  • 我的假设是否正确,或者 Starwind VSAN 允许跨每个节点的多个磁盘创建 HA 卷并稍后添加磁盘?
  • 您认为哪种解决方案更适合我的应用程序(请解释)?
  • 建议解决方案的缺点是什么?

先感谢您!

storage-area-network software-raid emc starwind vsan

7
推荐指数
2
解决办法
640
查看次数

Amazon AWS 临时磁盘和 RAID1

一些 AWS 实例附加了“临时磁盘”,这比 EBS 快得多。但是,当您的实例停止和启动时,临时磁盘将为空白且未初始化。磁盘上的数据通常在实例重启后仍然存在。

问题:我应该在我的 AWS 实例上使用软件 RAID1,构建在临时磁盘和 EBS 卷上吗?

我的想法是,raid1 将仅在 EBS 卷的降级模式下出现,然后我们可以使用 mdadm 命令将空白临时磁盘添加回 raid。这将使应用程序更快启动 5-10 分钟,代价是在 raid1 同步时性能更差。

背景:我有一个使用 ~40 GB 数据文件的应用程序。访问时间与性能直接相关,因此磁盘速度越快,应用程序运行得越快。

从历史上看,我们从 rc.local 到 rsync 数据从 EBS 磁盘运行到临时磁盘,然后启动软件。同步需要 5-10 分钟,比从另一个实例同步所需的 5-20 分钟要好。过去,我们甚至使用 ramdisk 中的数据文件,它不如临时磁盘快。


更多信息 - 这是一个 i3.4xlarge,所以它有 2 个 NVME 临时驱动器。

# hdparm -t /dev/md? /dev/nvme?n1 /dev/xvd?
/dev/md0:     9510 MB in  3.00 seconds = 3169.78 MB/sec RAID0 of two eph drives
/dev/nvme0n1: 4008 MB in  3.00 seconds = 1335.74 MB/sec Eph drive …
Run Code Online (Sandbox Code Playgroud)

software-raid raid1 amazon-ec2 amazon-ebs amazon-ephemeral

7
推荐指数
1
解决办法
1072
查看次数