摘要:
Lustre文件系统是由U.S. Department of Energy(DOE)Office of Science and National Nuclear Security Administration (NNSA)Laboratories于近十之前发起并提供基金支持的,旨在满足当时和以后的超级计算平台中对于开源、高可扩展性、高性能的并行文件系统的需求。在过去十年间,在满足了不同的超级计算平台的可扩展性和性能要求,并被不仅是ODE实验室和其他本国和国际工业和研究机构部署的同时,Lustre也变得日益庞大而复杂。这个报告只是对当前Lustre源码1.6版本的浅尝辄止。由于Lustre是一个 阅读全文
随笔分类 - 深入理解Lustre文件系统
深入理解Lustre文件系统-第12篇 Lustre磁盘文件系统:ldiskfs
2012-05-24 22:02 by myjava2, 1115 阅读, 收藏,
摘要:
ldiskfs(有些时候被错误地称为Linux ext4文件系统)是对Linux ext3文件系统的打了很多补丁的一个版本,由Sun Microsystems公司开发和维护。ldiskfs是Linux ext3和ext4文件系统的超集。现在它只被Lustre文件系统用在服务器端,作为底层的本地文件系统。本节给出了对ldiskfs机器与ext3文件系统不同之处的简要介绍。就各自的I/O路径而言,ext3和ldiskfs文件系统的不同之处如下所示:在ldiskfs里,分配/块查找是在索引节点锁取得后就预先完成了,而随后在I/O提交到磁盘的过程中,索引节点锁就被丢弃了。这极大地提高了I/O的并发性, 阅读全文
深入理解Lustre文件系统-第11篇 Lustre一般化文件系统封装层:fsfilt
2012-05-03 19:56 by myjava2, 514 阅读, 收藏,
摘要:
Lustre在底层本地文件系统和Lustre之间提供了一个称为fsfilt的封装层。在上层中,obd_filter使用fsfilter层提供的一般化的函数,而fsfilter曾将这些调用传送到一个文件系统特有的实现中。这些特有的实现是特定的底层文件系统接口。fsfilt通过使用针对特定文件系统的小(tiny)封装(即对ext3使用的fsfilt和对Reiserfs3文件系统使用的fsfilt_reiserfs),调用本地文件系统。这节给出了fsfilt层的细节,并且分析了fsfilt_ext3,作为接口实现的一个实例。11.1概述fsfilt框架大体是由lustre/include/luste 阅读全文
深入理解Lustre文件系统-第10篇 LNET:Lustre网络
2012-05-01 22:14 by myjava2, 1171 阅读, 收藏,
摘要:
LNET是一个消息传递API,源自Sandia Portals。虽然它们俩有一些共同点,但是它们俩是不同的东西。我们将探讨LustreLNET,但是不会深入研究这两者的不同。10.1核心概念首先,我们需要澄清一些在本节接下来的部分使用的一些术语,特别是进程ID、匹配项、匹配位和内存描述符。LNET进程IDLNET使用LNET进程ID来区分它的peer们,定义如下:typedef struct { lnet_nid_t nid; lnet_pid pid;}lnet_process_id_t;nid标识节点ID,而pid标识了节点上的进程。例如,对于套接字LND(和对于所有现有的LNETLNDs 阅读全文
深入理解Lustre文件系统-第9篇 Portal RPC
2012-04-27 17:26 by myjava2, 620 阅读, 收藏,
摘要:
Portal RPC为如下内容提供了基础机制:通过输入口发送请求,接受请求通过输出口接收和处理请求,发送请求执行块数据传输错误恢复9.1客户端接口我们将首先探讨Portal RPC的接口,而不深入到实现细节中。我们将用LDLM的发送机制作为例子。对这个实例,LDLM向客户端发送一个阻塞ASTRPC(ldlm_server_blocking_ast),该客户端是一个给定的锁的占有者和管理者。这个例子帮助我们更好地理解客户端怎样使用Portal RPC API。首先,我们下面给出的那样准备大小。structldlm_request *req;__u32 size[] = {[MSG_PTLRPC_ 阅读全文
深入理解Lustre文件系统-第8篇 基础结构支持
2012-04-07 22:57 by myjava2, 655 阅读, 收藏,
摘要:
此节探讨关于Lustre初始化、客户端注册、OBD设备管理等多个方面。8.1Lustre客户端注册Lustre客户端或者Lustre Lite以名字lustre注册为一个文件系统,文件系统类型定义为:structfile_system_type lustre_fs_type = { .owner = THIS_MODULE, .name = "lustre", .get_sb = lustre_get_sb, .kill_sb = lustre_kill_super, .fs_flags = FS_BINRARY_MOUNTDATA |FS_REQUIRES_DEV LL_ 阅读全文
深入理解Lustre文件系统-第7篇 MDC和Lustre元数据
2012-04-01 21:17 by myjava2, 806 阅读, 收藏,
摘要:
7.1MDC概论MDC模块是处在Lustre Lite之下的一层。它定义了一些元数据相关的函数, Lustre Lite可以调用这些函数来向MDS传输元数据请求。这些函数在lustre/mdc中实现,我们将在6.3节讨论它们。Lustre Lite在mdc_op_data数据结构中传递请求参数,所有的请求最终要转化为ptl_request结构。所以,在RPC请求执行之前,有一些准备步骤(打包)。为这个目的,在mdc_lib.c里,定义了一些函数。而这些函数中的其中一部分实际上调用了由PortalRPC层提供的打包帮助函数。一旦ptl_request准备好,MDC就可以调用ptlrpc_queu 阅读全文
深入理解Lustre文件系统-第6篇 OST和obdfilter
2012-03-26 21:54 by myjava2, 787 阅读, 收藏,
摘要:
/* Sigh -really, this is an OSS, the _server_, not the _target_ */static intost_setup(struct obd_device *obd, obd_count len, void *buf){ ... }from Lustre source tree b16如果我们正确地理解了上述注释,Lustre源码树lustre/ost和所有的以ost_开头的函数名可能都应该作为服务器(OSS)函数。6.1OSS和OSTOST以内核模块的形式加载。它和obdfilter紧密合作,完成了服务器/OST端的大部分工作。在这两层中, 阅读全文
深入理解Lustre文件系统-第5篇 LDLM:锁管理者
2012-03-16 23:13 by myjava2, 896 阅读, 收藏,
摘要:
Lustre锁管理者的基本思想来自于VAXDLM。在我们深入源码理解它如何工作之前,我们需要解释一些基本的概念。5.1名字空间我们首先涉及的概念是名字空间。当你请求锁时,你都在请求某个名字空间中的锁,每个Lustre服务都定义了一个名字空间。为了在一个实际的情景中讨论这个问题,假设你的Lustre文件系统有十个OST,从LDLM的观点看,有十个名字空间。另外,MDS和MGS各自有它们的名字空间。Lustre中的名字空间由结构体ldlm_namespace定义。在源码中,对于许多字段有适量的注释,所以我们只聚焦于其中不大显而易见的几个。类型字段描述ldlm_side_tns_client这是否是 阅读全文
深入理解Lustre文件系统-第4篇 LOV和OSC
2012-03-15 22:54 by myjava2, 457 阅读, 收藏,
摘要:
从高层的图景看,LOV的任务是将页指向正确的OSC,而OSC的任务是收集脏页向量、组合(group)它们、将它们从传输线上发送到OST(当然,通过PortalRPC和LNET)。4.1 OBD设备操作OBD面向设备操作是一个在LOV、OSC和MDC中使用并能被看到的一般性的源码组织模式和实现方法。OBD设备由obd_ops结构体定义的方法表描述,该方法表有点类似于前面提到的VFS文件、索引节点、dentry操作。其中的思想是,你不需要确切知道你所正在处理的OBD设备,只需使用以OBD_开头的一般性封装方法。让我们来看一眼这个表所定义的方法:struct struct obd_ops { str 阅读全文
深入理解Lustre文件系统-第3篇 lustre lite
2012-03-08 22:50 by myjava2, 1237 阅读, 收藏,
摘要:
在这一节,我们将描述Lustre Lite怎样接入Linux VFS并与之融为一体,这对于支持VFS语义和POSIX接口非常必要。作为概要,Lustre Lite以方法表(method table)的形式提供了如下函数:Lustre特有的文件操作,通过ll_file_operations表。Lustre特有的dentry操作,通过ll_d_ops和它的cache。Lustre特有的directory操作,通过ll_dir_operations表。Lustre特有的索引节点操作,通过ll_dir_inode_operations和file_inode_operations表。Lustre特有的文 阅读全文
深入理解Lustre文件系统-第2篇 体系结构的模块视图
2012-03-05 22:27 by myjava2, 1465 阅读, 收藏,
摘要:
Lustre是一个以GNUGeneral Public为许可证的,开源的分布式并行文件系统,由Sun Microsystems Inc. 公司开发和维护。由于Lustre文件系统的体系结构具有极好的可扩展性,它得以在科学计算、石油天然气、制造业、rich media、金融等领域得到广泛部署。Lustre为其客户端提供了包含对共享文件对象的并行存取能力在内的POSIX接口。截止本文编写时为止,根据Top500的数据,在全世界前30个超级计算机中,有15个使用了Lustre文件系统。Lustre是一个面向对象的文件系统。它由三个部件组成:元数据服务器(Metadataservers, MDSs)、 阅读全文
深入理解Lustre文件系统-第1篇 前言
2012-03-05 22:26 by myjava2, 897 阅读, 收藏,
摘要:
Lustre文件系统是由U.S.Department of Energy Office of Science and National Nuclear SecurityAdministration laboratorie于近十年之前发起并提供基金支持的的,旨在满足当时和以后的超级计算平台中对于开源、高可扩展的、高性能的并行文件系统的需求。经过十年的发展,它得以在众多中型到大型超级计算平台和集群中部署,达到了Lustre用户社区的预期。截止本文编写时为止,根据Top500的数据,在全世界前30个超级计算机中,有15个使用了Lustre文件系统。本报告旨在提供一个关于Lustre内部是如何工作的s 阅读全文
浙公网安备 33010602011771号