我有一个 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:
Run Code Online (Sandbox Code Playgroud)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设备总数:5 首选次要:13 持久性:超级块是持久性的
Run Code Online (Sandbox Code Playgroud)Update …
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,我也可以向广告标准机构投诉。
我正在使用 RAID5 设置一个新的 NAS/SAN 系统,我想知道是采用软件还是硬件 RAID 方式,因为我想到了这个问题:
如果我的硬件 RAID 卡出现故障,我是否需要更换一个完全相同、相同品牌的卡就足够了,或者不同卡之间的 RAID5 设置是否不兼容?
我的猜测是它们不兼容,如果我的硬件出现故障,我正在尝试尽可能减少停机时间......
当硬盘控制器检测到错误并需要重新映射扇区时,驱动器通常会在尝试完成重新映射所需的几秒钟(或可能几分钟)内变得无响应。
由于驱动器不再响应,主机 RAID 控制器可以假设驱动器发生故障,并将其标记为不可靠。
某些制造商的某些硬盘驱动器型号具有限制(以秒为单位)驱动器尝试重新映射扇区所花费的时间的功能。不同的驱动器制造商对此功能有不同的名称:
注意:ATA/ATAPI 命令集中的正确术语是命令完成时间限制( CCTL )
通过限制驱动器尝试恢复扇区所花费的时间,它确保主机 RAID 控制器不会认为驱动器出现故障。
不同的 RAID 控制器(硬件和软件)有不同的超时间隔。如果驱动器无响应的时间超过其超时时间,它将被标记为离线,例如:
kern.geom.mirror.timeout): 4 秒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子系统。
我询问调整我的(软件) …
在我的 3 磁盘 RAID 5 设置中抢救 2 磁盘故障时,我碰巧注意到禁用 NCQ(约 90M/秒)比启用 NCQ(约 50M/秒)的重建速度更快。运行 bonnie++ 对这两种配置进行基准测试还显示,Sequential Output Block 的写入性能明显更好:
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) 为了学习目的,我在 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?
我正在构建另一台服务器(便宜),并希望使用 256GB SSD 驱动器用于我的启动和数据。这足以满足我的需求,但由于几个原因,只有一个 SSD 会让我感到害怕。
如果我使用 SSD 和 HDD 进行镜像突袭,会发生什么?
它会在多大程度上减缓读取突袭?它会从更快的来源读取吗?
它会减慢写入多少?它会等到写入同时发送到 SSD 和 HDD 吗?
有没有人看到这样做的好处?
我发现了这个问题,但我认为它略有不同: 通过硬盘驱动器的 SSD 冗余
我的软件 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) 我正在建立一个测试实验室来评估未来生产使用的最佳解决方案。生产场是为 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 在节点之间传播数据,并允许添加新的存储和重新平衡卷。
所以,我的问题是:
先感谢您!
一些 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 ×10
raid ×6
linux ×3
hard-drive ×2
raid1 ×2
raid10 ×2
amazon-ebs ×1
amazon-ec2 ×1
centos ×1
emc ×1
failsafe ×1
mdadm ×1
partition ×1
performance ×1
raid5 ×1
ssd ×1
starwind ×1
vsan ×1
windows ×1
windows-7 ×1