A. 专家观点 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支持者所期望的那样。
B. linux下常用的分布式文件系统有哪些
常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。
GFS(Google File System)
--------------------------------------
Google公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。。尽管Google公布了该系统的一些技术细节,但Google并没有将该系统的软件部分作为开源软件发布。
下面分布式文件系统都是类 GFS的产品。
HDFS
--------------------------------------
Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。 Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。Aapche Hadoop架构是MapRece算法的一种开源应用,是Google开创其帝国的重要基石。
Ceph
---------------------------------------
是加州大学圣克鲁兹分校的Sage weil攻读博士时开发的分布式文件系统。并使用Ceph完成了他的论文。
说 ceph 性能最高,C++编写的代码,支持Fuse,并且没有单点故障依赖, 于是下载安装, 由于 ceph 使用 btrfs 文件系统, 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持。
可是ceph太不成熟了,它基于的btrfs本身就不成熟,它的官方网站上也明确指出不要把ceph用在生产环境中。
Lustre
---------------------------------------
Lustre是一个大规模的、安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护的。
该项目主要的目的就是开发下一代的集群文件系统,可以支持超过10000个节点,数以PB的数据量存储系统。
目前Lustre已经运用在一些领域,例如HP SFS产品等。
C. 什么是Linux文件系统,Linux常用的文件系统有哪些
我们在Linux中常用的文件系统主要有ext3、ext2及reiserfs。Linux目前几乎支持所有的Unix类的文件系统,除了我们在安装Linux操作系统时所要选择的ext3、reiserfs和ext2外,还支持苹果MACOS的HFS,也支持其它Unix操作系统的文件系统,比如XFS、JFS、Minix
fs
及UFS等,您可以在kernel的源码中查看;如果您想要让系统支持哪些的文件系统得需要把该文件系统编译成模块或置入内核;
当然Linux也支持Windows文件系统NTFST和fat,但不支持NTFS文件系统的写入;支持fat文件系统的读写。现在还有新的ext4文件系统。
D. 基于linux 平台的主要分布式文件系统有哪些
常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。
GFS(Google File System)
--------------------------------------
Google公司为了满足本公司需求而开发的基于Linux的专有分布式文件系统。。尽管Google公布了该系统的一些技术细节,但Google并没有将该系统的软件部分作为开源软件发布。
下面分布式文件系统都是类 GFS的产品。
HDFS
--------------------------------------
Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。
Hadoop是Apache Lucene创始人Doug Cutting开发的使用广泛的文本搜索库。它起源于Apache
Nutch,后者是一个开源的网络搜索引擎,本身也是Luene项目的一部分。Aapche
Hadoop架构是MapRece算法的一种开源应用,是Google开创其帝国的重要基石。
Ceph
---------------------------------------
是加州大学圣克鲁兹分校的Sage weil攻读博士时开发的分布式文件系统。并使用Ceph完成了他的论文。
说 ceph 性能最高,C++编写的代码,支持Fuse,并且没有单点故障依赖, 于是下载安装, 由于 ceph 使用 btrfs 文件系统, 而btrfs 文件系统需要 Linux 2.6.34 以上的内核才支持。
可是ceph太不成熟了,它基于的btrfs本身就不成熟,它的官方网站上也明确指出不要把ceph用在生产环境中。
Lustre
---------------------------------------
Lustre是一个大规模的、安全可靠的,具备高可用性的集群文件系统,它是由SUN公司开发和维护的。
该项目主要的目的就是开发下一代的集群文件系统,可以支持超过10000个节点,数以PB的数据量存储系统。
目前Lustre已经运用在一些领域,例如HP SFS产品等。
E. linux中有哪些高可用集群
很多小型组织使用了KVM虚拟化,但却无法在主机发生故障时采取相关措施保证高可用性。本文介绍如何采取简单的方式确保虚拟机的高可用性。你可以使用任一Linux发行版的KVM,但是这些Linux发行版在集群功能方面存在差异。Pacemaker堆栈源于SUSE,红帽在最近的版本中才确定其集群实现方式。因此在本文中我将介绍如何在OpenSuSE 13.1 下配置集群。 图1. KVM高可用架构概览假定集群中的节点已经连接到了SAN。如果集群中的节点还没有连接到SAN,那么将虚拟主机连接到Linux SAN并不复杂,当然你也可以使用SAN设备。然而我们在本文中采用的方式—使用OCFS 2共享文件系统构建集群—只有在使用SAN时才是有效的。配置KVM高可用集群的步骤如下所示:创建基础集群在SAN共享存储上配置OCFS2集群文件系统使用SAN磁盘作为后端存储,安装虚拟机为虚拟机配置Pacemaker集群资源验证集群配置创建基础集群在Open SUSE 13.1下使用命令zypper in pacemaker ocfs2-tools lvm2-clvm 安装构建集群所必需的包,开始创建基础集群。集群包括两层。较低的层称之为corosync转载仅供参考,版权属于原作者。祝你愉快,满意哦
F. linux文件系统的组成和作用
/bin 见截图中的解释
/boot 是系统启动时所需文件的存放处。
/dev 顾名思义就是存放设备文件的地方。包括鼠标,键盘等设备的驱动文件等
/etc见截图中的解释
/home ..
/lib 包括其他一些目录下的lib文件夹存放的是 函数运行时所调用的函数库
/mnt 是软盘和光盘的挂载点
/opt 是安装软件的目录
/proc 虚拟文件系统,目录中的文件存放在内存中。包括可以查看CPU的信息。
/sbin ..
/srv 存放网页的文件夹 支持www等服务
/temp是存放临时文件的(所以重要文件不要放在这里)
/user 存放与用户相关的信息
/var 用来管理系统运行期间的信息
G. Linux文件系统特点
类似于 Windows下的C、D、E等各个盘,Linux系统也可以将磁盘、Flash等存储设备划分为若干个分区,在不同分区存放不同类别的文件。与Windows的C盘类似,Linux一样要在一个分区上存放系统启动所必需的文件,比如内核映象文件(在嵌入式系统中,内核一般单独存放在一个分区中)内核启动后运行的第一-个程序( init)给用户提供操作界面的 shell程序、应用程序所依赖的库等。这些必需、基本的文件合称为根文件系统,它们存放在一个分区中。Linux 系统启动后首先挂接这个分区,称为挂接( mount)根文件系统。其他分区上所有目录、文件的集合,也称为文件系统。Linux 中并没有C、D、E等盘符的概念,它以树状结构管理所有目录、文件,其他分区挂接在某个目录上,这个目录被称为挂接点或安装点(mount point),然后就可以通过这个目录来访问这个分区上的文件了。比如根文件系统被挂接在根目录“I”上后,在根目录下就有根文件系统的各个目录、文件:/bin、/sbin、/mnt等;再将其他分区挂接到/mnt目录上,/mnt目录下就有这个分区.的各个目录、文件。在一个分区上存储文件时,需要遵循一定的格式,这种格式称为文件系统类型,比如fat16、fat32、ntfs、ext2、ext3、jffs2、yaffs 等。除这些拥有实实在在的存储分区的文件系统类型外,Linux还有几种虚拟的文件系统类型,比如proc、sysfs 等,它们的文件并不存储在实际的设备上,而是在访问它们时由内核临时生成。比如 proc文件系统下的uptime文件,读取它时可以得到两个时间值(用来表示系统启动后运行的秒数、空闲的秒数),每次读取时都由内核即刻生成,每次读取结果都不一样。“文件系统类型”常被简称为“文件系统”,比如“硬盘第二个分区上的文件系统是EXT2”指的就是文件系统类型。所以“文件系统”这个术语,有时候指的是分区上的文件集合,有时候指的是文件系统类型,需要根据语境分辨,在阅读各类文献时需要注意这点。
H. 谁来关注下一代Linux文件系统发展趋势
GNU/Linux在支持文件系统创新方面已经取得了极大的成功,目前已支持超过50种文件系统,毫无疑问,这一成功与Linux一向的开源策略是密不可分的。随着数据的爆炸式增长,存储行业已经发生了翻天覆地的变化,文件系统如何才能紧跟时代步伐,满足越来越高要求的存储需要呢?
硬盘的成本/容量曲线趋势继续遵守着名的摩尔定律,与此同时,我们也看到固态硬盘增长势头喜人,它因消除了机械硬盘固有的性能限制得到了厂商和消费者的重视,虚拟化也在改变存储架构设计,应用程序也开始向基于FC的HTTP存储协议转移。
存储容量几乎每年以40%的速度递增,现在市场上已经可以看到容量为2TB的机械硬盘,但它们的性能却没有按比例提高,固态硬盘的出现解决了传统机械硬盘的许多弊病,因此未来几年势必会引发一场存储革命,文件系统也需要为存储革命做好准备,未来的文件系统必需解决扩展,并行处理和满足新工作负载类型方面的问题。
POSIX API标准制约了创新
IDE和SCSI已经逐渐被SAS取代,终于超越了6Gbps的门槛,Infiniband和10GbE通过远程直接内容访问(Remote Direct Memory Access ,RDMA)和TCP卸载引擎提高了网络I/O,iSCSI大有取代FC SAN的趋势,和传统的使用NFS和CIFS协议应用程序不同,基于Internet的程序通常是使用HTTP/HTTPS访问地理分散的存储。
我们已经使用POSIX API访问文件系统的历史已经长达30年,它是一个标准,但它也是弱点,是它遏制了创新,应用程序开发人员需要新的API标准执行对象存储和key-value存储。
诸如卷管理,全局命名空间,压缩,加密,克隆/快照,重复数据删除,RAID和远程站点复制技术都应该由文件系统实现,由于历史原因,这些功能都是在文件系统之外实现的,因此效率低下,复杂程度较高。
文件系统不应局限于在内核空间实现
关于内核空间和用户空间性能问题的争论应该歇歇了,上下文切换不再是什么大问题,因为堆栈和网络中的其它部分造成的延迟才是真正的限制因素。在用户空间中实现的新兴文件系统应该受到重视。原来大家都认为底层组件,如磁盘设备驱动和磁盘文件系统应该驻留在内核中,但现在是时候让大部分代码在用户空间中实现了。例如,Hadoop和GlusterFS就是完全在用户空间中实现的。有关Hadoop的使用可参考51CTO之前发布的使用Linux 和Hadoop进行分布式计算一文。
变革和创新
1、适合于直接附加存储(Direct Attached Storag,DAS)的文件系统
Linux文件系统Ext3是迄今为止最稳定的Linux文件系统,但现在是时候考虑Ext4(内核2.6.31或更高才支持)了,因为它解决了诸如文件和目录大小限制的局限性,基于延伸区(extent)分配机制能够有效地存储大文件,更快地执行fsck(文件系统检查)和日志校验和检查,但Ext4只是一个暂时的解决方案。
Linux社区希望Linux支持ZFS和Btrfs(B-tree文件系统),Btrfs将类似ZFS的功能引入到Linux内核中,Btrfs不仅仅是一个磁盘文件系统,它还具有软RAID管理,卷管理,克隆/快照和压缩功能,它支持跨多块磁盘动态增大或收缩卷。
Btrfs RAID可以从一个故障阵列快速重构,其速度比硬件RAID控制器还快,因为它只重新条带化使用了的数据块,执行快照需要的空间和时间也更少,Btrfs的目标是取代Linux默认文件系统Ext4,来自Oracle的Chris Mason是该项目的主要贡献者。
2、网络文件系统(NFS)
NFS于1995年推出,NFS v3是目前应用最广泛的NAS协议,所有服务器操作系统(除微软Windows外)和存储厂商都支持它,2000年发布的NFS v4在许多方面都做了改进,但没有取得广泛应用。NFS v4.1(pNFS)应该会出现转机,因为它带来了人们迫切需要的并行I/O架构,并为低延迟高带宽I/O增加了RDMA支持。
这是NFS的一个重大进步,允许用户转移到可横向扩展的架构,但它的设计是基于一个统一的元数据服务器,这可能会限制扩展能力,并且存在一个潜在的单点故障,因此要想成为主流应用尚需时日,这期间需要解决NFS v3/4的扩展性问题,通过在集群文件系统上集成NFS,利用虚拟IP和循环DNS技术,可以构建一个可扩展的NAS解决方案。
3、集群/分布式文件系统
集群或分布式文件系统允许跨多个存储服务器使用一个全局命名空间,并实现了智能分散I/O和数据,以克服NFS(和CIFS)的扩展性限制,每个厂商都有他们自己的内部协议,但对于应用程序是透明的,因为共享存储是通过标准的POSIX接口访问的。
这样的文件系统有Oracle Lustre,IBM GPFS和GlusterFS,它们之间的主要区别是处理元数据的方式有所不同,Lustre使用的是中央控制元数据服务器,GPFS使用的是分布式元数据服务器模型,GlusterFS使用的是无元数据模型。在选择集群文件系统时,关键就是要了解元数据的处理方式。
另一个不同点是Lustre和GPFS是在内核中实现的,GlusterFS是在用户空间实现的,这些集群文件系统都实现了前面谈到的关键存储堆栈功能,它们都可以扩展到PB级存储容量。
4、分布式对象存储/key-value存储
许多现代应用程序需要简单对象API访问诸如get/put,get/put属性和lock/unlock这样成对出现的数据,对象访问允许将内存和磁盘看作是通过序列化的信息持久化块。
大多数数据处理功能(如XML解析,哈希表,全文检索等)都开始转向更高级的应用程序库,对象存储API也适合构建NoSQL规模的数据库。很多Web 2.0应用正在逐渐转向Cassendra等NoSQL式存储,比如前日的Digg和Twitter。
目前对象存储还没有标准化,虽然WebDAV,Hadoop,Apache Cassandra和Amazon S3都遵循这个模型,如果是构建一个新应用程序,它们也是很好的选择,但在未标准化之前,POSIX API将是必需的。(参考阅读:详解NoSQL数据库Apache Cassandra的配置)
小结
I. linux下常用的分布式文件系统有哪些
Lustre是HP,Intel,Cluster File System公司联合美国能源部开发的Linux集群并行文件系统,名称来源于Linux和Clusters。同时Lustre也是一个遵循GPL许可协议的开源软件,Lustre也被称为平行分布式文件系统,常用于大型计算机集群和超级电脑中。
Lustre的主要组建包括:元数据服务器(Metadataservers, MDSs)、对象存储服务器(objectstorage servers, OSSs)和客户端。其中MDSs提供元数据服务,MGS管理服务器提供Lustre文件系统配置信息,OSS对象存储服务器expose块设备提供数据。
Lustre文件系统针对大文件读写进行了优化,能够提高性能的IO能力;在源数据独立存储、服务和网络失效的快速恢复、基于意图的分布式锁管理和系统可快速配置方面优异。
分布式存储的关键技术主要包括:全局名字空间、缓存一致性、安全性、可用性和可扩展性。从数据形态来划分,主要有:结构化数据、非机构化数据和半结构化数据。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
J. Linux里面文件系统有哪些
Linux系统是现在非常受欢迎的操作系统,在Linux之中,一切都是文件,因为有很多操作都是依靠文件系统才可以完成的,而且文件系统可以满足用户正常的使用,那么Linux中常见的文件系统有哪些?为大家介绍一下。
总体来说,在Linux之中,系统能够支持的文件系统要比Windows系统多很多,达到数十种,所以说Linux系统也是非常出色的操作系统。Linux中常见的文件系统介绍:
1、Ext3:是一款日志文件系统,能够在系统异常的情况下避免文件系统资料丢失,并且能够修复数据的不一致以及错误,同时,当硬盘容量较大的时候,所需要的修复时间也会增长,无法保证百分之百资料不会丢失,将整体磁盘的每个写入动作细节预先记录,避免发生异常的时候可追踪到被中断的部分,尝试修补。
2、Ext4:是上一个的改进版本,是RHEL
6系统中的默认文件管理系统,支持存储容量达到了1EB,同时还能够无限多的子目录,另外文件系统能够批量分配block块,从而极大地提高了读写效率。
3、XFS:是一个高性能的日志文件系统,而且是RHEL
7中默认的文件管理系统,优势就是在于发生意外可以快速回复可能被破坏的文件,强大的日志功能只需要花费较低的计算和存储性能,最大支持存储容量18EB,几乎满足多种需求。