在多层(物理驱动器 -> md -> dm -> lvm)的情况下,调度程序、预读设置和其他磁盘设置如何交互?
假设您有多个磁盘 (/dev/sda - /dev/sdd),它们都是使用 mdadm 创建的软件 RAID 设备 (/dev/md0) 的一部分。每个设备(包括物理磁盘和 /dev/md0)都有自己的 IO 调度程序设置(像这样更改)和预读(使用 blockdev 更改)。当你加入 dm(加密)和 LVM 之类的东西时,你会添加更多具有自己设置的层。
例如,如果物理设备有 128 个数据块的预读,而 RAID 有 64 个数据块的预读,当我从 /dev/md0 读取时,这是正确的吗?md 驱动程序是否尝试读取 64 个块,然后物理设备驱动程序将其转换为 128 个块的读取?或者 RAID 预读是否“直通”到底层设备,导致读取 64 个块?
同样的问题也适用于调度程序?我是否必须担心多层 IO 调度程序以及它们如何交互,或者 /dev/md0 是否有效地覆盖了底层调度程序?
在我试图回答这个问题时,我挖掘了一些关于调度程序和工具的有趣数据,这些数据可能有助于解决这个问题:
我是否可以使用安装在服务器中的单个Fusion-io卡可靠地运行,或者我是否需要在软件 RAID 设置中部署两张卡?
在审查他们的营销材料时,Fusion-io 对这个主题不是很清楚(几乎是误导)考虑到卡的成本,我很好奇其他工程师如何在实际场景中部署它们。
我计划将HP 品牌的 Fusion-io ioDrive2 1.2TB 卡用于在 Linux 上运行的专有独立数据库解决方案。这是一个单一的服务器设置,没有真正的高可用性选项。还有是,用10分钟的异步复制RPO该反射镜事务日志到第二物理服务器。
传统上,我会为此应用程序指定具有顶级 CPU 步进的高端HP ProLiant服务器。我需要使用 SSD,而且我能够以比企业 SAS SSD 更低的价格获得所需容量的 Fusion-io。
编辑:我刚刚阅读了戴尔的Fusion-io 可靠性白皮书,外卖似乎是“Fusion-io 卡有很多内部冗余......不要担心 RAID!!” .
我有一台CentOS 6使用PERC H710Raid 5 设置的 Raid 控制器卡运行的戴尔服务器,我想监控 Raid 控制器背后的硬盘故障/工作状态。
然后我应该能够使用 bash 脚本来监视硬盘状态并在出现问题时发送警报电子邮件。
CentOS/Red Hat/Linux的LSI MegaRAID SAS命令工具(About LSI MegaRAID SAS Linux Tools)不支持 PERC H710 和smartctl也不支持。
根据戴尔网站,CentOS此服务器不支持 ( NX3200 PowerVault) 并且我无法下载任何 linux 程序来监控硬盘。
[root@server ~]# lspci | grep RAID
03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05)
[root@server ~]# smartctl -a /dev/sda
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-2.6.32-431.el6.x86_64] (local build)
Copyright (C) 2002-12 …Run Code Online (Sandbox Code Playgroud) 在服务器环境中,消费类 SSD 与快速 10-15k 旋转驱动器的优缺点是什么?在我们的案例中,我们不能使用企业级 SSD,因为它们非常昂贵。以下是有关我们特定用例的一些说明:
我知道企业 SSD:
比消费级固态硬盘...但这是否意味着消费级固态硬盘完全不适合服务器环境,还是它们的性能仍会比快速旋转的驱动器更好?
由于我们通过 RAID/备份受到保护,因此我更关心整个寿命期间的性能(只要预期寿命不会太低)。
我已经看到列出的这两个,都在多个驱动器上进行了条带化和镜像,但是我没有注意到它们之间的区别吗?
我希望你们中的许多人都在使用高流量数据库驱动的网站,并且您的主要可扩展性问题很可能在数据库中。我最近注意到一些事情:
大多数大型数据库需要一个 DBA 团队才能扩展。他们不断与硬盘驱动器的限制作斗争,最终得到非常昂贵的解决方案(SAN 或大型 RAID、用于碎片整理和重新分区的频繁维护窗口等)。维护此类数据库的实际年度成本在 10 万美元到 100 万美元之间对我来说太陡了:)
最后,我们找到了几家公司,如 Intel、Samsung、FusionIO 等,它们刚刚开始销售基于 SLC 闪存技术的速度极快且价格合理的 SSD 硬盘。这些驱动器的随机读/写速度比市场上最好的旋转硬盘快 100 倍(每秒高达 50,000 次随机写入)。它们的寻道时间几乎为零,因此随机 I/O 的成本与顺序 I/O 相同,这对数据库来说非常棒。这些 SSD 驱动器每 GB 的成本约为 10-20 美元,而且它们相对较小(64GB)。
因此,似乎有机会通过简单地构建一个足够大的 RAID 5 SSD 驱动器阵列来避免以传统方式扩展数据库的巨额成本(只需花费几千美元)。然后我们不关心数据库文件是否碎片化,我们可以承受每秒 100 倍的磁盘写入,而不必将数据库分布在 100 个轴上。.
还有人对此感兴趣吗?我一直在测试一些 SSD 驱动器,可以分享我的结果。如果本网站上有人已经用 SSD 解决了他们的 I/O 瓶颈,我很想听听你的战争故事!
附注。我知道有很多昂贵的解决方案可以帮助实现可扩展性,例如久经考验的基于 RAM 的 SAN。我想明确一点,即使 5 万美元对我的项目来说也太贵了。我必须找到一个成本不超过 1 万美元且实施时间不长的解决方案。
戴夫、NXC 和 Burly,
感谢您的回复!我想澄清一下,“便宜”这个词在我的情况下非常重要。因此,我必须使用廉价的戴尔服务器(4K 美元的 2950 年代,只有 8 个内存条)。我已经安装了 32GB 的 RAM,所以我无法继续以这种方式扩展。此外,添加 RAM 并不能使您免于磁盘写入瓶颈,这是我现在的主要问题。
我曾经关心 SSD 的使用寿命,但在阅读了现代磨损均衡算法后,我很确定这些驱动器将持续足够长的时间。我的数据库每天写入 300GB,预计在 2009 年每天会超过 1TB。企业级 SSD 旨在在多年内每天处理大约 10TB 的写入。 …
我在市场上寻找新的存储解决方案。在研究各种规格时,我的一位同事说,一些 RAID 控制器可以将 HDD 旋转同步到所有驱动器的扇区/块 0 同时通过读头下方的效果。
我在网上搜索过,但没有找到证明/反驳这一说法的信息。
我理解关于更大的驱动器在重建期间遇到 URE 的可能性增加的论点,但是我不确定这的实际影响是什么。这个答案说整个重建失败,但这是否意味着所有数据都无法访问?为什么会这样?当然,来自驱动器上单个扇区的单个 URE 最多只会影响与几个文件相关的数据。阵列不会仍然被重建,只是对一些文件有一些轻微的损坏吗?
(我在这里对 ZFS 的 RAID5 实现特别感兴趣,但对于任何 RAID5 实现,逻辑似乎都相同。)
我最近部署了一台带有 5 个 1TB 驱动器的服务器(我不会提及他们的品牌,但它是两大巨头之一)。我最初被警告不要购买大容量驱动器,因为一位朋友告诉我它们的 MTBF 非常低,我会更好地获得更多、更小容量的驱动器,因为它们不会“被推到极限”技术可以处理。
从那以后,五个磁盘中的三个出现了故障。谢天谢地,我能够在下一个磁盘出现故障之前更换和重建阵列,但这让我非常非常担心。
你怎么看?我只是把它们弄坏了一批吗?或者更新/更高容量的磁盘是否比久经考验的磁盘更容易出现故障?
我以为我知道 HBA 和 RAID 之间的区别。
在我看来,HBA 从主主板/CPU 卸载,只是 JBOD……通常有一个外部 SAS 端口,而 RAID 卡与 HBA 做同样的工作,但增加了所有不错的 RAID 级别,可能还有电池备份+其他好处。
在查看产品的 LSI 网站后,我看到他们有内置 RAID 的 HBA 卡,例如LSI SAS 9211-8i 主机总线适配器。
所以......显然我错了!
HBA卡和RAID卡有什么区别?
raid ×10
hard-drive ×4
hardware ×4
ssd ×3
storage ×3
database ×2
centos ×1
dell-perc ×1
fusionio ×1
hba ×1
linux ×1
lvm ×1
scalability ×1
zfs ×1
zfsonlinux ×1