我在一个应用程序上工作,该应用程序在数据库和文件系统中存储数据.
上下文:群集和网络共享
过去当我们运行应用程序集群(即多个应用程序服务器面向数据)时,我们已按如下方式处理文件系统:
>节点A:共享“数据目录”(通过samba或nfs)
>节点B,C,D等:安装“网络共享”并在其“数据目录”中使用它
节点B,D的“磁盘速度”降低不是最理想的,但不是一个大问题.
另请注意:应用程序使用自己的文件锁定机制.并发写入不是问题.
问题
>因此,在现代数据中心,光纤通道将服务器连接到SANS,在多个服务器之间共享“大块磁盘”的最佳方式是什么?
>这种“磁盘共享”是否被广泛使用?
>任何特定于操作系统的问题(“适用于Linux,但不适用于Windows”)
>有任何警告吗?难以配置,不可靠等?
我从我们的系统管理员那里听到了很多“我们做不到的事情”……最后当我问到更多细节时,他们说“好吧,从技术上说这是可能的,但这不是我们在这里做的事情”
提前致谢,
更新:感谢您的回答. (他们都很好:我必须选择一个.抱歉,如果不是你的话)正如我(有点)预期的那样:我希望你可以简单地将NTFS或XFS或任何“常规”文件系统附加到同一个’大块“磁盘”被证明是天真的.集群文件系统就是票证.而花哨的文件系统并不是我们托管团队的首要任务.
解决方法
“well,technically it’s possible,but it’s not how we do it here”
这听起来很像我经常告诉开发人员;)
从企业运营的角度来看,您希望应用程序尽可能使用标准的可重复解决方案.如果您的申请不需要/需要特殊待遇,您将无法获得.非标准解决方案需要专业技能,更昂贵或更简单的设备,如果它是“最先进的”故障通常也是灾难性的.
对于许多应用程序,(高可用性)文件共享仍然是非常合适且通常部署的解决方案.
>不要将文件存储在文件系统上,而是使用高可用性数据库并将其存储为BLOB.一种非常常见的方法.通常你已经需要一个数据库,这使得应用程序服务器几乎无状态,通过将它们转移到数据库层来解决许多锁定,复制,HA,一致性和访问问题,其中很多问题都是旧的新闻,很好理解和解决了.一旦达到PB级别(相当大的一小部分),维护起来可能会很昂贵.
>适当的集群文件系统,允许通过光纤通道或iSCSI对共享存储进行并发读写块级访问.企业存储阵列往往是pretty expensive,但这可以很好地扩展.群集文件系统通常需要(昂贵)许可群集FS软件的每个节点.在专业应用程序的企业环境中也很常见.>使用分布式对象库.这是一种更开源的解决方案,具有低端商用硬件,可在软件中创建冗余和可扩展性.这是一种常见的“云”方法.