热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux文件系统:为未来做好准备了么?

Linux文件系统:为未来做好准备了么?--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
DoSTOR专家观点:Henry Newman是国外专业存储网站的撰稿人,在高性能计算和存储行业从事了27年的顾问工作。

三周前,我写的一篇关于Linux文件系统的文章引起了争议性的轰动,这是十年来我在写关于存储和技术问题的文章中第一次这样。

我当时的目的是将我作为HPC(高性能计算)存储咨询师的经历和我在文件系统及操作系统上的专业知识相联系起来,为读者提供最佳的行动指南。这和我在所有其 他文章中所采取的方法是相同的。为了我的客户,我花了大部分时间来回顾存储技术问题。我所处理的安装一般是从500TB的存储容量起步。我所咨询的一个站 点中有一个目前有超过12PB的容量,而且许多站点还计划在2010年前增加到60PB。

在我的世界中,计算环境和大型存储环境有很大的不 同。在我所工作的高性能计算环境中,我经常看到大型集群(是的,Linux集群)。但是,在所有这些成百上千的节点中,我注意到,没有人实际使用大型的 --我的意思是100TB或以上--Linux文件系统。我还没有看到过50TB的Linux文件系统。这并不是说它们不存在,而是我没见过它们,也没有 听说过它们。

我所看到的Linux集群是类似于Lustre这样的集群式文件系统。Lustre目前使用许多ext3/4文件系统,并将它 们捆绑在一个单一名字的空间里。但是这篇文章和上篇文章和这些集群式文件系统没有关系,和超过100TB的Linux文件系统的实施也没有关系。这就是 Linux文件系统的麻烦所在。

我觉得Linux文件系统的扩展有两个问题。

Linux 文件系统没有和RAID(独立磁盘冗余阵列)带对齐,除非你拼凑第一个带,以便和超级锁对齐。几乎所有的大型的高性能文件系统都能够自动完成这项事情,而 元数据域则能够一直保持和RAID带的对齐。由于元数据经常是被分离到和数据不同的另一个设备上,因此RAID带可以和数据及元数据的分配相对齐。

如 果你碰到硬件问题(从RAID故障到因为电力事故等原因所导致的多个设备的硬故障),那么仅仅对日志进行FSCK(检查文件系统并修复)操作是不够的。如 果发生这种事情,那么你必须FSCK整个文件系统,而不只是日志(一些回复者指出了这个问题)。由于元数据是分布在文件系统内,因此必须检查所有的元数 据。鉴于问题的复杂性(从电力故障到RAID故障到未发现或未修正的错误),可能需要做很多的工作,而且由于元数据域和RAID带的应用并不对齐,因此需 要对RAID设备进行读-改-写操作。

这些只是许多问题中的两个。Linux文件系统要想符合大型文件系统上的高性能I/O要求,需要解决 许多问题。这并不是说你就不能使用100TB或以上的ext-3/4或其他的一些Liunx文件系统了,但是高性能I/O要求数据通路上的所有事物都能够 匹配,以便获得高比例的硬件带宽。在一些时候,你可以通过增加额外的硬件而不是通过扩展来得到带宽,但是这需要成本。

我想要澄清的另外一件 事情就是,我所讨论的这种类型的环境并不使用带两个或甚至四个插座(socket)的SMP(对称多处理器结构)系统。如果你有一个500TB的文件系 统,你经常需要更多的带宽给文件系统,而这种需求超过了四插座系统--比如说,两个PCIe 2.0总线(理论带宽为10GB/秒)--所能提供的带宽。在许多情况下,这些类型的系统使用8个甚至16个PCIe总线及10GB/秒到20GB/秒 (或更多)的带宽。这些类型的环境不使用刀片,它们也不能使用刀片,因为从管理成本的角度和扩展性能的角度来看,将大型文件系统分解开来是很不合算的。

其他问题

除了那些带过多感情色彩的回复以及个人攻击以外(不好意思,我是一个独立咨询师,并不受雇于微软或任何其他厂商,我的观点就是我自己的观点),有许多读者提出了一些很好的问题。

一位读者想知道Google是如何使用大型文件系统的。我的回答就是Google里每个刀片节点的每个文件系统都是很小的,然后通过一种应用程序来将它们组合成大的文件系统。同时,Google的文件系统并不是Linux标准发布的一部分。

一些读者注意到我没有深入阐释ext-3/4和XFS文件系统的细节。要想知道该问题的更多内容,请看我的《选择一个文件系统还是文件管理器》。

一 位读者试图了解那些面对PB级存储要求的用户是否会使用块设备文件系统,而不是使用网络型热添加(Hot-add)文件系统(我想说光调整大小这项工作就 会让人非常头疼,更不用说强制性的FSCK了),或者他们是否运行堆栈Linux文件系统,或者说它们是否在不花费时间和成本来进行重大调整的情况下运行 这种文件系统。此外,大部分的NAS(网络附加存储)文件系统都不扩展到PB级。

我的回答是,针对这种规模文件系统的SMP,我知道现在哪 些人需要这种性能。通过刀片或网络将文件系统分解,会增加管理上的花销,从而增加成本。NAS的性能并不符合那些针对大型归档进行流式I/O的人,他们几 乎都是使用基于HSM(分层存储管理)的文件系统。在Linux文件系统需要大幅改进FSCK性能这一点上,这位读者基本上同意我的观点。关于最后一点, 这些人对性能资源是有大量投资。

一些读者指出我没有提到文件系统以外的其他因素,例如设备驱动程序、硬件平台、应用程序访问模式以及其他运行中的应用程序。这是中肯的评价,但是我的回答是我只是试图解决Linux中的文件系统问题,而不是讨论整个的数据通路。

行动呼吁

这 些观点和分析是我作为一位存储咨询师而发出的,所有这些观点都是基于我在真实世界环境和超大型站点中的所见所闻。我的建议是Linux文件系统可能适用于 几十TB的系统,但是不要试图在几百TB及以上的系统中使用这种文件系统。鉴于每个地方的数据都在飞速增长,Linux文件系统的扩展性问题将随着时间越 来越明显。

如果你不同意,可以自己试试。用MKFS(建立Linux文件系统命令)建立一个500TB的ext 3-4文件系统或其他的Linux文件系统,在这个文件系统中加入多个流的数据,在几个月内用来自一个大型SMP服务器的20GB/秒带宽来添加/删除文 件,然后破坏这个系统,用FSCK来恢复它,并告诉我这个过程用了多长时间。在几个月的添加及删除文件的时间内,这个系统的I/O性能是否能保持一致?如 果在一个目录内放入一百万个文件,并在文件系统内放入1亿个文件,这时这个系统还能运作良好吗?

我猜想如此实践的结果只会证实我的观点:Linux文件系统有扩展问题,在普遍使用100TB环境之前必须要解决这些问题。只有现在心平气和地解决这些问题,Linux才会真正成为Linux支持者所期望的那样。

DoSTOR评论:对于Linux的拥趸来说,Henry的看法肯定会令他们浑身瘙痒,颇感不适,但是,却也没有人能够指出Henry的什么错误,所以,在企业的数据量普遍达到100TB之前,Linux文件系统最好尽快的跟上来。
推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
author-avatar
牛牛发的
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有