现代数据中心的共享磁盘(SAN,虚拟化等)

我是一个开发者,在外国地形上踩着这里。 请原谅天真

我使用一个将数据存储在数据库和文件系统中的应用程序。

上下文:集群和networking共享

在过去,当我们运行应用程序集群(即多个应用程序服务器面向数据)时,我们按如下方式处理文件系统:

  • 节点A:共享“数据目录”(通过sambanfs
  • 节点B,C,D等:装载“networking共享”并在其“数据目录”

降低节点B,C,D的“磁盘速度”不是最理想的,但不是一个大问题。

另请注意 :应用程序使用自己的文件locking机制。 并发写入不是问题。

问题

  • 因此,在现代数据中心光纤通道将服务器连接到SANS,在几台服务器之间共享“大量磁盘”的最佳方式是什么?

  • 这种“磁盘共享”被广泛使用吗?

  • 任何操作系统特定的问题(“在Linux上工作,但在Windows上不可用”)

  • 任何警告? 难以configuration,不可靠等?

我从系统pipe理员那里听到了很多“我们不能这么做”的问题,当我问到更多的细节时,他们说:“好吧,从技术上说这是可能的,但是我们不是这样做的”

提前致谢,

更新:感谢您的答案。 (他们都很好,我不得不select一个,对不起,如果不是你的话)正如我(有点)期待的那样:我希望你可以简单地将NTFS或XFS或任何“常规”文件系统连接到同一个“大块头” “磁盘”被certificate是天真的。 集群文件系统是票据。 而花哨的文件系统不在我们的托pipe团队的首要任务)。

“呃,从技术上说这是可能的,但这不是我们在这里做的”

这听起来很像我经常告诉开发者的东西;)

从企业运营的angular度来看,您希望应用程序尽可能使用标准的可重复解决scheme。 如果你的申请不需要/保证特殊待遇,你不会得到它。 非标准解决scheme需要专业技能,更昂贵的设备或更多的设备,如果是“最先进”的故障,也往往是灾难性的。

对于许多应用程序来说,(高可用性)文件共享仍然是一个非常合适且常用的解决scheme。

使用文件共享的常见HA备用解决scheme是:

  • 不要将文件存储在文件系统上,而是使用高度可用的数据库,并将其作为BLOB存储。 一个非常普遍的方法。 通常情况下,您已经需要一个数据库,这使得应用程序服务器几乎是无状态的,通过将应用程序转移到数据库层来解决大量的locking,复制,HA,一致性和访问问题,其中很多问题都是旧的新闻,解决了。 一旦达到PB级的(相当大的一部分),维护起来可能是昂贵的。

  • 适当的集群文件系统,允许通过光纤通道或iSCSI对共享存储进行并发读写块级别的访问。 企业存储arrays往往非常昂贵,但这可以很好地扩展。 集群文件系统通常需要为集群FS软件的每个节点(昂贵的)许可。 在专业应用程序的企业环境中也很常见。

  • 使用分布式对象存储。 这是更开源的解决scheme,使用低端商品硬件,在软件中创造冗余和可扩展性。 这是一种常见的“云”方法。

如果您将多个服务器连接到共享块设备(DASD / SAN),则仍然需要手动pipe理对磁盘块的访问(某些数据库在原始磁盘上执行该操作,LVM也是一个选项,具有受pipeLV访问权限),或者使用一个集群文件系统,它将pipe理并发访问。

即使使用基于每个文件pipe理的写锁,如果两个主机试图在非群集FS上同时执行FS元数据更改,也可能会遇到FS损坏。 没有什么现代化的,顺便说一句,顺便说一句,SANs和并发块访问已经出现在80年代(如果不是70年代)。

所有的现代操作系统都集成了FS实现,如果你愿意自己写所有的东西,块分离也是可能的,所以它对于你打算使用的东西非常具体。

编辑:您的“旧”networking共享方法仍然是相当可行的,文件服务器将照顾文件locking,所以你不需要额外的locking机制。 如果你不是在额外的performance之后,想要一个简单的部署,它可能仍然是最简单的路线。

现在,如果你想谈论“现代”,开始考虑对象存储和扩展你的应用程序的架构。

您不仅需要共享硬件,还需要一个集群文件系统。

常规的文件系统不会工作 – 两台电脑最终会覆盖其他人的变化,你最终会有一个损坏的文件系统。

集群文件系统让所有计算机都相互通知他们正在进行的更改,并在需要时处理locking文件,这样他们就不会踩到彼此的脚趾。

其中一些文件系统是特定于应用程序的 – 例如,VMware具有VMFS,而Hyper-V具有群集共享卷 – 它们非常适合存储虚拟机,但并不是一般的文件存储。 还有其他devise来存储任何文件。 每个人都有各种优点和缺点,所以最好在很大程度上取决于你在做什么。 他们都是(据我所知)操作系统特定 – 你将无法以这种方式在Windows和Linux之间共享文件系统。

对于高可用性虚拟机故障转移等一些事情,您确实需要这样做。 对于SMB或NFS可以应用的应用程序来说,这些应用程序通常是首选 – 它们可能会稍微慢一些,但是出现问题的可能性要less得多,而且在发生故障时更容易恢复。