我是一个代码猴子,越来越多地为我的小公司承担系统管理员的职责。我的代码就是我们的产品,而且我们越来越多地提供与 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) 当服务器存储容量变低时,开发人员都开始抱怨:“我可以在 Walmart 花 100 美元买到 1 TB 的驱动器,这有什么问题”。
如何向开发人员解释存储的复杂性,以便他们理解为什么 Walmart 的 1 TB 驱动器不起作用。
ps 我是一名开发人员,也想知道:)
我建议这是一个关于企业级存储区域网络的规范问题。
什么是存储区域网络 (SAN),它是如何工作的?
它与网络附加存储 (NAS) 有何不同?
与直连存储 (DAS) 相比有哪些用例?
哪种方式更好或更差?
为什么这么贵?
我(或我的公司)应该使用一个吗?
我首先要说明的是,我不相信这与为什么企业存储如此昂贵?.
我的问题特别是关于 SAS 驱动器机箱,以及证明其费用的合理性。
我所指的外壳类型的示例是:
以上每个都是一个 2U 直接连接的外部 SAS 驱动器机箱,有大约 24 X 2.5" 驱动器的空间。
我说的是裸机,而不是驱动器。我知道企业级硬盘和消费级硬盘之间的区别。
作为“球场”价格的一个例子,HP D2700(25 X 2.5" 驱动器)目前在没有任何驱动器的情况下售价约为 1750 美元(2012 年 12 月在美国亚马逊上查到)。低端 HP DL360 服务器约为 2000 美元,其中包含CPU、RAM、主板、SAS RAID 控制器、网络和用于 8 X 2.5" 驱动器的插槽。
当向客户或管理人员展示具有存储功能的拟议服务器的成本明细时,考虑到它本质上是被动的(除非我弄错了),外壳是一个重要的项目似乎很奇怪。
我的问题是:
我是否误解了 SAS 驱动器机箱的组件?它不只是一个带有电源、SAS 布线和可容纳大量驱动器的空间的无源机箱吗?
为什么成本看起来如此昂贵,尤其是与服务器相比时。鉴于所有组件的外壳并没有有(主板,CPU,内存,网络,视频),我期望的外壳是显著更便宜。
目前,我们向客户推荐服务器时的策略是避免因为机箱的价格而推荐外部驱动器机箱。但是,假设基本服务器无法在物理上安装足够的驱动器,并且客户端没有可用的 SAN 或 NAS,那么机箱是一个明智的选择。很高兴能够向客户解释为什么外壳的成本如此之高。
我不确定这些存储接口的差异。我的戴尔服务器中都有 SAS RAID 控制器,它们似乎在一定程度上是交叉兼容的。
我的旧服务器中的 Ultra-320 SCSI RAID 控制器非常简单:一种带有带有特殊控制器的特殊驱动器的接口 (SCA),以 10-15K RPM 的速度嗡嗡作响。但是这些 SAS/SATA 驱动器看起来就像我桌面上的驱动器,只是更贵。我的旧 SCSI 控制器也有自己的备用电池和 DDR 缓冲器——这些东西都没有出现在 SAS 控制器上。那是怎么回事?
“企业”SATA 驱动器与我的 SAS RAID 控制器兼容,但我想知道 SAS 驱动器与 SATA 驱动器相比有什么优势,因为它们似乎具有相似的规格(但价格要便宜得多)。
另外,SSD 是如何适应这个的?我记得当 RAID 控制器要求 HDD 以相同的速度旋转时(就像控制器卡取代了驱动器中的控制器一样) - 那么现在如何工作?
与近线 SATA 有什么关系?
我为这条消息中的漫无边际的语气道歉,现在是凌晨 5 点,我还没有睡好。
我是一名开发人员......在外国地形上行走。请原谅任何天真。
我正在开发一个将数据存储在数据库和文件系统中的应用程序。
上下文:集群和网络共享
过去,当我们运行集群应用程序(即多个应用程序服务器前端数据)时,我们按如下方式处理文件系统:
降低节点 B、C、D 的“磁盘速度”是次优的,但不是大问题。
另请注意:应用程序使用自己的文件锁定机制。并发写入不是问题。
问题
因此,在现代数据中心光纤通道将服务器连接到 SANS 中,在多台服务器之间共享“大块磁盘”的最佳方式是什么?
这种“磁盘共享”是否被广泛使用?
任何特定于操作系统的问题(“适用于 linux,但不适用于 Windows”)
有什么注意事项吗?难以配置、不可靠等?
我从我们的系统管理员那里听到了很多“我们不能那样做”……最后当我询问更多细节时,他们说“好吧,技术上是可能的,但这不是我们在这里做的方式”
提前致谢,
更新:感谢您的回答。(它们都很好:我必须选择一个。对不起,如果它不是你的)正如我(有点)预期的那样:我希望你可以简单地将 NTFS 或 XFS 或任何“常规”文件系统附加到同一个“大块头” '磁盘' 被证明是幼稚的。集群文件系统是一张票。并且花哨的文件系统不是我们托管团队的首要任务)。
我计划在计算服务器(16 核,128 GB RAM)中设置一个用于暂存空间的 RAID 阵列。用户通常会创建大型 (500GB) MySQL InnoDB 数据库并将这些数据库临时存储到暂存空间。数据库中充满了来自集群的数据,该集群可能同时有多达 1000 个 MySQL 客户端与数据库连接。RAID 控制器是带有 512MB 非易失性缓存的 PERC H710 集成控制器。
由于存储是临时的,我计划使用 RAID 0 来提高读/写性能。剩下的问题是是使用 8 x 7,200 RPM 磁盘还是 4 x 15,000 RPM 磁盘。一种典型的使用模式是,一旦创建了数据库,对它的写入就会非常少。将有大量读取用于分析,因此 15K 寻道时间在这里会有所帮助,但是我不知道 RPM 改进与 RAID 0 条带化速度与额外磁盘的提升相比如何。
忽略驱动器容量作为一个因素,哪种设置更可取,8 x 7200 RPM 驱动器还是 4 x 15000 RPM 驱动器?如果此类问题没有明确答案,我深表歉意。
编辑:我还没有研究 RAID 控制器将根据阵列中的磁盘数量限制有效吞吐量的程度。
hard-drive ×3
sas ×3
storage ×3
hardware ×2
sata ×2
mysql ×1
nfs ×1
performance ×1
samba ×1
scsi ×1