我是一个代码猴子,越来越多地为我的小公司承担系统管理员的职责。我的代码就是我们的产品,而且我们越来越多地提供与 SaaS 相同的应用程序。
大约 18 个月前,我将我们的服务器从一家以优质托管为中心的供应商转移到了 IV 级数据中心的准系统机架推进器。(字面意思是在街对面。)这个人自己做的事情更多——比如网络、存储和监控。
作为重大举措的一部分,为了取代我们从托管公司租用的直连存储,我构建了一个基于 SuperMicro 机箱、3ware RAID 卡、Ubuntu 10.04、两打 SATA 磁盘、DRBD 和 . 三篇博文详细记录了这一切:构建和测试新的 9TB SATA RAID10 NFSv4 NAS:第一部分、第二部分和第三部分。
我们还设置了一个 Cacit 监控系统。最近,我们添加了越来越多的数据点,例如 SMART 值。
我不能这样做这一切,而不真棒 挤入 在 ServerFault。这是一次有趣且有教育意义的经历。我的老板很高兴(我们节省了大量的美元),我们的客户很高兴(存储成本下降),我很高兴(有趣,有趣,有趣)。
直到昨天。
午饭后一段时间,我们开始从我们的应用程序(一个按需流媒体 CMS)收到性能缓慢的报告。大约在同一时间,我们的 Cacti 监控系统发送了大量电子邮件。一个更有说服力的警报是 iostat await 的图表。

性能变得如此下降以至于 Pingdom 开始发送“服务器关闭”通知。整体负载适中,没有流量高峰。
在登录应用服务器、NAS 的 NFS 客户端后,我确认几乎所有东西都在经历高度间歇性和超长的 IO 等待时间。一旦我跳到主要 NAS 节点本身,在尝试导航问题阵列的文件系统时,同样的延迟很明显。
是时候进行故障转移了,一切顺利。在 20 分钟内,一切都被确认备份并完美运行。
在任何和所有系统故障后,我都会进行事后分析以确定故障原因。我做的第一件事是 ssh 回到盒子里并开始查看日志。它完全离线。是时候去数据中心旅行了。硬件复位,备份并运行。
在/var/syslog我发现这个可怕的条目:
Nov …Run Code Online (Sandbox Code Playgroud) 如果碰巧有一些服务器级硬件可供使用,是否建议在基于硬件的 RAID1 或类似硬件之上运行 ZFS?是否应该关闭基于硬件的 RAID,并在 amirror或 a上运行 ZFS raidz zpool?
关闭硬件 RAID 功能后,基于硬件 RAID 的 SATA2 和 SAS 控制器是否比非硬件 RAID 控制器更可能或更少地隐藏读取和写入错误?
就不可定制的服务器而言,如果硬件 RAID 控制器实际上是成本中性的(甚至降低了预建服务器产品的成本,因为它的存在提高了托管公司提供补充 IPMI 的可能性)访问),应该完全避免吗?但它应该被追捧吗?
我在 IT 工作了很多年,所以我知道什么是 RAID 阵列,什么是 RAID 0,RAID 1、5、6、10、50、60 等,但最近突然想起工作中的谈话;如果 RAID 代表独立(或廉价)磁盘的冗余阵列,那么为什么 RAID 0 被归类为 RAID 而不仅仅是条带阵列?
将数据在一个阵列上的多个磁盘上进行条带化不会提供任何冗余,那么为什么将其归类为 RAID 阵列呢?当然最低的数字应该是 RAID 1(镜像),因为那是冗余真正开始的时候?
我管理的大多数 Linux 系统都具有硬件 RAID 控制器(主要是HP Smart Array)。他们都在运行 RHEL 或 CentOS。
我正在寻找真实世界的可调参数,以帮助优化将硬件 RAID 控制器与 SAS 磁盘(智能阵列、Perc、LSI 等)和电池后备或闪存后备缓存相结合的设置的性能。假设 RAID 1+0 和多个主轴(4 个以上的磁盘)。
我花了大量时间为低延迟和金融交易应用程序调整 Linux 网络设置。但其中许多选项都有详细记录(更改发送/接收缓冲区、修改 TCP 窗口设置等)。工程师在存储方面做什么?
从历史上看,我对I/O 调度电梯进行了更改,最近选择了deadline和noop调度程序来提高我的应用程序的性能。随着 RHEL 版本的进步,我还注意到 SCSI 和 CCISS 块设备的编译默认值也发生了变化。随着时间的推移,这对推荐的存储子系统设置产生了影响。但是,我已经有一段时间没有看到任何明确的建议了。而且我知道操作系统默认设置不是最佳的。例如,对于服务器级硬件上的部署而言,128kb 的默认预读缓冲区似乎非常小。
以下文章探讨了更改预读缓存和nr_requests值对块队列的性能影响。
http://zackreed.me/articles/54-hp-smart-array-p410-controller-tuning
http://www.overclock.net/t/515068/tuning-a-hp-smart-array-p400-with -linux-why-tuning-really-matters
http://yoshinorimatsunobu.blogspot.com/2009/04/linux-io-scheduler-queue-size-and.html
例如,以下是 HP Smart Array RAID 控制器的建议更改:
echo "noop" > /sys/block/cciss\!c0d0/queue/scheduler
blockdev --setra 65536 /dev/cciss/c0d0
echo 512 > /sys/block/cciss\!c0d0/queue/nr_requests
echo 2048 > /sys/block/cciss\!c0d0/queue/read_ahead_kb
Run Code Online (Sandbox Code Playgroud)
还有什么可以可靠地调整来提高存储性能?
我专门在生产场景中寻找 sysctl 和 sysfs 选项。
我有一台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) 我熟悉 BBWC(电池支持的写入缓存)的用途 - 并且以前在我的服务器中使用过它们,即使 UPS 良好。显然存在它不提供保护的故障。我很想知道它在实践中是否真的提供了任何真正的好处。
(注意,我特别在寻找有 BBWC 和崩溃/失败的人的回应,以及 BBWC 是否有助于恢复)
更新
在收到这里的反馈后,我越来越怀疑 BBWC 是否会增加任何价值。
为了对数据完整性有任何信心,文件系统必须知道数据何时被提交到非易失性存储(不一定是磁盘 - 我会回到这一点)。值得注意的是,很多磁盘都在数据何时提交到磁盘上撒谎 ( http://brad.livejournal.com/2116715.html )。虽然假设禁用磁盘缓存可能会使磁盘更诚实似乎是合理的,但仍然不能保证情况确实如此。
由于 BBWC 中的缓冲区通常很大,屏障可能需要将更多数据提交到磁盘,因此会导致写入延迟:一般建议是在使用非易失性回写缓存时禁用屏障(并禁用 on-磁盘缓存)。然而,这似乎会破坏写操作的完整性——仅仅因为在非易失性存储中维护更多数据并不意味着它会更加一致。事实上,如果逻辑事务之间没有划分,那么确保一致性的机会似乎比其他方式少。
如果 BBWC 在数据进入它的非易失性存储(而不是提交到磁盘)时确认障碍,那么它似乎满足了数据完整性要求而不会造成性能损失 - 这意味着仍应启用障碍。然而,由于这些设备通常表现出与将数据刷新到物理设备(使用屏障显着慢)以及禁用屏障的广泛建议一致的行为,因此它们不能以这种方式运行。为什么不?
如果操作系统中的 I/O 被建模为一系列流,那么当写缓存由操作系统管理时,有一些范围可以最小化写屏障的阻塞效应 - 因为在这个级别只有逻辑事务(单个流) 需要提交。另一方面,不知道哪些数据位构成事务的 BBWC 必须将其整个缓存提交到磁盘。内核/文件系统是否在实践中真正实现了这一点,需要付出比我目前愿意投入的更多的努力。
磁盘组合告诉 fibs 已提交的内容和突然断电无疑会导致损坏 - 并且日志或日志结构的文件系统在中断后不会执行完整的 fsck 不太可能检测到损坏,更不用说试图修复它。
就故障模式而言,根据我的经验,大多数突然停电是由于市电断电(使用 UPS 和管理关机可轻松缓解)。人们从机架中拉出错误的电缆意味着数据中心卫生(标签和电缆管理)不佳。UPS 无法防止某些类型的突然断电事件 - PSU 或 VRM 中的故障 带有屏障的 BBWC 可以在发生故障时提供数据完整性,但此类事件有多常见?从这里缺乏回应来看,这是非常罕见的。
当然,在堆栈中提高容错能力比 BBWC 的成本要高得多——但是,将服务器实现为集群还有许多其他性能和可用性方面的好处。
减轻突然断电影响的另一种方法是实施 SAN - AoE 使这成为一个实用的提议(我在 iSCSI 中并没有真正看到这一点),但同样存在更高的成本。
我在市场上寻找新的存储解决方案。在研究各种规格时,我的一位同事说,一些 RAID 控制器可以将 HDD 旋转同步到所有驱动器的扇区/块 0 同时通过读头下方的效果。
我在网上搜索过,但没有找到证明/反驳这一说法的信息。
我以为我知道 HBA 和 RAID 之间的区别。
在我看来,HBA 从主主板/CPU 卸载,只是 JBOD……通常有一个外部 SAS 端口,而 RAID 卡与 HBA 做同样的工作,但增加了所有不错的 RAID 级别,可能还有电池备份+其他好处。
在查看产品的 LSI 网站后,我看到他们有内置 RAID 的 HBA 卡,例如LSI SAS 9211-8i 主机总线适配器。
所以......显然我错了!
HBA卡和RAID卡有什么区别?
LSI 提供其CacheCade存储分层技术,该技术允许将 SSD 设备用作读写缓存以增强传统 RAID 阵列。
其他厂商也采用了类似的技术;HP SmartArray 控制器有其SmartCache。Adaptec 有MaxCache ……更不用说许多基于软件的加速工具(sTec EnhanceIO、Velobit、FusionIO ioTurbine、Intel CAS、Facebook flashcache?)。
来自ZFS背景,我使用不同类型的 SSD来处理读取缓存 (L2ARC) 和写入缓存 (ZIL) 职责。各自的工作负载需要不同的特征;写入缓存的低延迟和耐用性。读取容量大。
我对 LSI 解决方案的意见和反馈很感兴趣。有什么注意事项吗?提示?
使用 S1200BTS Intel 主板的旧服务器坏了,已经在壁橱里放了好几年了。我更换了主板,发现它最初是使用板载硬件 raid 控制器配置的。
硬盘驱动器仍处于其原始配置,但 raid 控制器不再将任何驱动器检测为 raid 驱动器。
有没有办法在不损坏驱动器的情况下重建阵列?机箱内有 3 个相同的硬盘,但我不知道它使用的 raid 级别是什么。
我对其中一个驱动器进行了克隆,无需初始化驱动器即可看到驱动器上的每个文件都有 3 个同名文件,但每个文件都以 1、2 或 3 结尾,就好像每个文件有 3 个部分一样。无法打开任何文件。
我不知道从这里该去哪里。有人告诉我有近 800,000 张图像需要恢复,目前它们只是镇纸。
windows raid windows-server-2008 data-recovery hardware-raid