自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李希的博客

一个文件系统开发者的笔记

  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 文件系统开发手记-第2篇 我为什么要在Lustre上做QoS

QoS是Quality of Service的简写,顾名思义,就是保证服务质量。小希我经过多年的苦熬,终于将服务端QoS(NRS TBF)加入主线,同时各种对于QoS改进也在进行中,另外客户端的QoS也在测试阶段。纵观各类文件系统,QoS并不常见,因此我猜想有人会有疑问,为什么要在Lustre实现QoS呢?实用场景对Lustre的诸多要求,首先最重要的是性能和容量。容量基本上在体系结构设计

2016-06-26 23:58:47 3345 1

原创 深入理解iputils网络工具-第8篇 rdisk:路由表更新程序

8.1       引言    初始化路由表有很多种方法,其中使用ICMP路由器发现报文就是一种方法。rdisc程序正是使用ICMP路由器发现报文来完成路由表的初始化和更新。    rdisc程序根据编译的不同可以程序可以编译成具有或没有服务器功能。如果设置了RDISC_SERVER宏,则会有服务器的功能,也就是会对ICMP报文路由器请求报文进行回复。否则,不会对ICMP报文路由器请求报文

2012-12-28 11:18:59 4181

原创 深入理解iputils网络工具-第7篇 tftpd:简单文本传输

7.1       引言    TFTP ( Trivial File Transfer Protocol)即简单文件传送协议,是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供简单的、低开销的文件传输服务。tftpd程序就是进行tftp服务的服务程序。TFTP协议可以参看RFC 1350。7.2       tftpd程序的使用    由于这个程序需

2012-12-28 11:02:13 4029

原创 深入理解iputils网络工具-第6篇 rarpd:逆地址解析程序

6.1       引言    通过逆地址解析协议RARP,客户端可以通过硬件地址得到对应的IP地址,一般用于无盘系统中,用以获得自身的IP地址。rarpd就是处理RARP请求的服务器程序。    RARP分组的格式与ARP分组基本一致。它们之间主要的差别是RARP请求或应答的帧类型代码为0x8035,而且RARP请求的操作代码为3,应答操作代码为4。6.2       rarpd程序

2012-09-16 13:57:56 3645

原创 深入理解iputils网络工具-第5篇 arping:地址解析程序

5.1       引言    ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。在同一以太网中,通过地址解析协议,源主机可以通过目的主机的IP地址获得目的主机的MAC地址。arping程序就是完成上述过程的程序。    ARP协议可以参看RFC 826。5.2       arping程序的使用    敲入命令:lixi@lixi-

2012-08-25 12:16:12 6679

原创 深入理解iputils网络工具-第4篇 tracepath:路由追踪程序

4.1       引言    tracepath和更为强大和更为广泛使用的程序traceroute一样,可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。    tracepath的作者是Alexey Kuznetsov。4.2       tracepath程序的使用lixi@lixi-desktop:~$ tracepath 210.45.74.25/8888

2012-08-19 21:19:37 29882 1

原创 深入理解iputils网络工具-第3篇 clockdiff:时间比对程序

3.1       引言    在IP报文的首部和ICMP报文的首部都可以放入时间戳数据。clockdiff程序正是使用时间戳来测算目的主机和本地主机的系统时间差。3.2       clockdiff程序的使用lixi@lixi-desktop:~$ ping -T tsandaddr www.ustc.edu.cn -c 1PING www.ustc.edu.cn (202.38

2012-08-15 09:22:05 8643

原创 深入理解iputils网络工具-第2篇 ping:通路检测程序

2.1       引言   “ping”这个名字源于声纳定位操作。Ping程序由Mike Muuss编写,目的是为了测试另一台主机是否可达。该程序发送一份ICMP回显请求报文给主机,并等待返回ICMP回显应答。2.2       ping程序的使用    敲入命令:lixi@lixi-desktop:~$ ping -Vping utility, iputils-sss2007

2012-08-14 22:46:24 11584

原创 深入理解iputils网络工具-第1篇 简介

1.1       iputils软件包简介    iputils软件包是linux环境下一些实用的网络工具的集合。一开始由Alexey Kuznetsov维护。    iputils包含以下几个工具:    1. ping。使用 ping可以测试计算机名和计算机的ip地址,验证与远程计算机的连接。ping程序由ping.c ping6.cping_common.c ping.h

2012-08-14 12:55:02 12455 1

原创 深入理解Lustre文件系统-第3篇 LNET:Lustre网络

LNET是Lustre Networking的缩写,是Lustre的网络子系统,负责提供消息传递API。LNET源自于Sandia Portals,但又与之存在着差异。3.1      结构    LNET由两部分组成:LNET层。它以通信API的方式,向被称为LNET客户端的高层提供一个与网络类型无关的服务。在LNET层,以LNet作为前缀的函数名是为高层提供的外部API,而以l

2012-07-29 22:51:08 12658

原创 Lustre可靠性增强系统MTFS:第6篇 编程风格

遵循约定总会使得多人协作的成本降低,对于软件开发来说也是这样。6.1       编程风格    MTFS的编程风格基本与内核的风格基本保持一致。可以用indent命令查看是否有较大出入。一段代码如下所示:int mtfs_setxattr(struct dentry *dentry, const char *name,const void *value, size_t size,

2012-07-27 11:43:15 3178

原创 Lustre可靠性增强系统MTFS:第5篇 在Lustre文件系统中的使用

MTFS虽然适用于多种类型的下层文件系统,但是其主要目的在于为分布式文件系统提供可靠性增强方法。本文选取分布式文件系统Lustre作为下层文件系统,提出了一种使用MTFS的副本模式增强分布式存储系统可靠性的方法。    Lustre是一种基于对象的并行分布式文件系统,因其高性能和高可扩展性而被广泛应用在高性能计算领域中。Lustre采用数据与元数据分离的存储方式,将元数据存储在元数据存储目标(

2012-07-24 22:41:47 4452

原创 Lustre可靠性增强系统MTFS:第4篇 下层文件系统支持

4.1       为何需要下层文件系统支持?    MTFS的目的是为众多文件系统提供一种通用的高可用框架。为了这个目的,MTFS的大部分实现方式都是通用的。但是下层文件系统千奇百怪,因此还需要一种机制来处理下层文件系统的差异性,这个机制就是枢纽机制。4.2       如何添加下层文件系统支持?    对于每种作为MTFS的下层文件系统,首先需要定义structlowerfs_op

2012-07-14 19:34:21 3043

原创 深入理解Lustre文件系统-第2篇 Portal RPC

远程进程调用(Remote Procedure Call,RPC)是构建分布式系统时所使用的一种常见组件。它使得客户端可以像进行本地调用一样进行远程的过程调用,即客户端可以忽略消息传递的细节,而专注于过程调用的效果。    Portal RPC是Lustre 的RPC组件,它构建于LNET之上,提供客户端和服务器之间进行消息通信的接口。2.1      消息通信连接的建立    进行P

2012-07-11 23:13:08 5849 1

原创 深入理解Lustre文件系统-第1篇 跟踪调试系统

一直以来,Linus Torvalds对内核调试器都秉持着抵触态度,并且摆出了我是bastard我怕谁的姿态。他保持了一贯风格,言辞尖锐却直指本质。相信这是经验之谈。在调试内核时,最关键的问题是如何获取出错相关的信息,准确定位出错位置。获取信息有很多方法,其中内核调试器只能提供有限的帮助,而分析日志则是最基本也是最主要的方法。为内核层软件提供一种方便的日志工具,将大大简化其调试工作。在Linux社

2012-06-18 23:24:37 6479 1

原创 Lustre可靠性增强系统MTFS:第3篇 系统结构

MTFS是一种扇出式的内核层堆叠式文件系统。那么什么是堆叠式文件系统?堆叠式文件系统是一种轻量级的文件系统,它可安装在其他文件系统之上,从而为已有文件系统提供了一种增量式开发方法。堆叠式文件系统本身不提供数据存储功能,而是堆叠在下层文件系统之上,调用下层文件系统接口,完成文件系统操作。按照堆叠方式的不同,堆叠式文件系统可分为线性和非线性两类,非线性堆叠式文件系统又可分为扇入式(fan-in)和扇出

2012-06-13 23:17:10 3470

原创 互联网商业模式之我见:从电子邮箱为什么无法收费谈起

熟悉中国互联网发展历史的人,相信对2001年到2002年间爆发的那场电子邮箱收费门都有所耳闻。在这场巨大的风波中,中国互联网行业经历了一场关于邮箱是否收费与容量增减的大战。2001年8月,新浪将免费邮箱的容量从50M直接缩水到5M,并声称这个容量对于98%的用户都够用,引发了用户的广泛抗议。2002年3月,坐拥2000多万用户的263突然宣布“免费邮箱死亡”。此后的两月间,其用户锐减至59万,相当

2012-06-13 01:43:57 13575

原创 Lustre可靠性增强系统MTFS:第2篇 安装

2.1       硬件环境需求除了硬件环境能被一定版本的Linux操作系统支持之外,MTFS对硬件环境没有其他的特殊需求。2.2       软件环境需求对使用环境上,MTFS具有一下要求:MTFS支持有限的linux内核版本。MTFS支持的安装方式包括源码安装和rpm包安装。如需通过rpm包安装,则需要安装有相应的rpm包管理工具。为了使用MTFS的工具,需要包含rea

2012-06-12 17:54:29 3808 3

原创 Lustre可靠性增强系统MTFS:第1篇 简介

1.1       MTFS是什么?MTFS(MulTi File System)是一个基于副本的可靠性增强系统。它通过维持文件的多个副本,提高分布式存储系统的可靠性。MTFS是一个堆叠式的(stackable)文件系统,它本身不提供数据的存储能力,而直接利用下层文件系统存储数据。因此MTFS可独立于下层文件系统的具体实现,专注于副本策略的设计。MTFS支持包括本地文件系统、网络文件系

2012-06-10 19:45:46 10481 4

原创 欢迎共同参与开源内核文件系统开发项目:Lustre可靠性增强系统MTFS

一、MTFS是什么? 1. MTFS(MulTi File System)是一个基于副本的可靠性增强系统。它通过维持文件的多个副本,提高分布式存储系统的可靠性。 2. MTFS是一个堆叠式的(stackable)文件系统,它本身不提供数据的存储能力,而直接利用下层文件系统存储数据。因此MTFS可独立于下层文件系统的具体实现,专注于副本策略的设计。MTFS支持包括本地文件系统、网络文

2012-06-09 21:52:24 3241 3

翻译 深入理解Lustre文件系统-第13篇 未来的工作

Lustre文件系统是由U.S. Department of Energy(DOE)Office of Science and National Nuclear Security Administration (NNSA)Laboratories于近十之前发起并提供基金支持的,旨在满足当时和以后的超级计算平台中对于开源、高可扩展性、高性能的并行文件系统的需求。在过去十年间,在满足了不同的超级计算平

2012-05-29 17:37:40 2725 1

翻译 深入理解Lustre文件系统-第12篇 Lustre磁盘文件系统:ldiskfs

ldiskfs(有些时候被错误地称为Linux ext4文件系统)是对Linux ext3文件系统的打了很多补丁的一个版本,由Sun Microsystems公司开发和维护。ldiskfs是Linux ext3和ext4文件系统的超集。现在它只被Lustre文件系统用在服务器端,作为底层的本地文件系统。本节给出了对ldiskfs机器与ext3文件系统不同之处的简要介绍。就各自的I/O路径而言,

2012-05-24 22:02:35 4721

原创 文件系统开发手记-第1篇 文件系统开发的八大苦处

首先从下面的统计图说起。该图是Linux源码中各类系统所占的比例。可以发现设备驱动占内核源码中最大一块,紧接着是架构。这两块占据了超过70%。文件系统是除此之外的第三大块,其重要性不言而喻。Linux内核中文件系统有不下60种。但是各类文件系统的差异性并不是天生的,这与驱动程序不同。驱动程序的差异性是因底层设备的差异决定的,因而彼此间天然地存在差异。文件系统则与此不同,它们都与一样的底层块设备接口

2012-05-09 20:37:23 4647 7

翻译 深入理解Lustre文件系统-第11篇 Lustre一般化文件系统封装层:fsfilt

Lustre在底层本地文件系统和Lustre之间提供了一个称为fsfilt的封装层。在上层中,obd_filter使用fsfilter层提供的一般化的函数,而fsfilter曾将这些调用传送到一个文件系统特有的实现中。这些特有的实现是特定的底层文件系统接口。fsfilt通过使用针对特定文件系统的小(tiny)封装(即对ext3使用的fsfilt和对Reiserfs3文件系统使用的fsfilt_re

2012-05-03 19:56:48 3681

翻译 深入理解Lustre文件系统-第10篇 LNET:Lustre网络

LNET是一个消息传递API,源自Sandia Portals。虽然它们俩有一些共同点,但是它们俩是不同的东西。我们将探讨LustreLNET,但是不会深入研究这两者的不同。10.1   核心概念首先,我们需要澄清一些在本节接下来的部分使用的一些术语,特别是进程ID、匹配项、匹配位和内存描述符。LNET进程IDLNET使用LNET进程ID来区分它的peer们,定义如下:

2012-05-01 22:14:11 6029

翻译 深入理解Lustre文件系统-第9篇 Portal RPC

Portal RPC为如下内容提供了基础机制:通过输入口发送请求,接受请求通过输出口接收和处理请求,发送请求执行块数据传输错误恢复9.1   客户端接口我们将首先探讨Portal RPC的接口,而不深入到实现细节中。我们将用LDLM的发送机制作为例子。对这个实例,LDLM向客户端发送一个阻塞ASTRPC(ldlm_server_blocking_

2012-04-27 17:26:50 3367

翻译 深入理解Lustre文件系统-第8篇 基础结构支持

此节探讨关于Lustre初始化、客户端注册、OBD设备管理等多个方面。8.1   Lustre客户端注册Lustre客户端或者Lustre Lite以名字lustre注册为一个文件系统,文件系统类型定义为:structfile_system_type lustre_fs_type = {      .owner = THIS_MODULE,      .name = "lust

2012-04-07 22:57:48 3540

翻译 深入理解Lustre文件系统-第7篇 MDC和Lustre元数据

7.1   MDC概论MDC模块是处在Lustre Lite之下的一层。它定义了一些元数据相关的函数, Lustre Lite可以调用这些函数来向MDS传输元数据请求。这些函数在lustre/mdc中实现,我们将在6.3节讨论它们。Lustre Lite在mdc_op_data数据结构中传递请求参数,所有的请求最终要转化为ptl_request结构。所以,在RPC请求执行之前,有一些准备步

2012-04-01 21:17:53 4344

翻译 深入理解Lustre文件系统-第6篇 OST和obdfilter

/* 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源码

2012-03-26 21:54:36 5015

翻译 深入理解Lustre文件系统-第5篇 LDLM:锁管理者

Lustre锁管理者的基本思想来自于VAXDLM。在我们深入源码理解它如何工作之前,我们需要解释一些基本的概念。5.1   名字空间我们首先涉及的概念是名字空间。当你请求锁时,你都在请求某个名字空间中的锁,每个Lustre服务都定义了一个名字空间。为了在一个实际的情景中讨论这个问题,假设你的Lustre文件系统有十个OST,从LDLM的观点看,有十个名字空间。另外,MDS和MGS各自有

2012-03-16 23:13:02 5049

原创 文件系统那些事-第5篇 并行文件系统之蓝色选择GPFS

GPFS[i](General Parallel File System)是一个IBM为在RS/6000 SP服务器上使用的一般目的(general-purpose)的可扩展文件系统。GPFS继承了PIOFS文件系统。它是为高端的并行编程需要而设计的高性能文件系统。可扩放性也许是GPFS最突出的特性。可扩放性指的是可以通过添加附加的相同甚至更少容量的硬件来获得读写性能的提升。一个真正可扩展

2012-03-15 22:54:50 3383

翻译 深入理解Lustre文件系统-第4篇 LOV和OSC

从高层的图景看,LOV的任务是将页指向正确的OSC,而OSC的任务是收集脏页向量、组合(group)它们、将它们从传输线上发送到OST(当然,通过PortalRPC和LNET)。4.1     OBD设备操作OBD面向设备操作是一个在LOV、OSC和MDC中使用并能被看到的一般性的源码组织模式和实现方法。OBD设备由obd_ops结构体定义的方法表描述,该方法表有点类似于前面提到的VFS文

2012-03-15 22:54:32 4525

翻译 深入理解Lustre文件系统-第3篇 lustre lite

在这一节,我们将描述Lustre Lite怎样接入Linux VFS并与之融为一体,这对于支持VFS语义和POSIX接口非常必要。作为概要,Lustre Lite以方法表(method table)的形式提供了如下函数:Lustre特有的文件操作,通过ll_file_operations表。Lustre特有的dentry操作,通过ll_d_ops和它的cache。Lustr

2012-03-08 22:50:58 8742

翻译 深入理解Lustre文件系统-第2篇 体系结构的模块视图

Lustre是一个以GNUGeneral Public为许可证的,开源的分布式并行文件系统,由Sun Microsystems Inc. 公司开发和维护。由于Lustre文件系统的体系结构具有极好的可扩展性,它得以在科学计算、石油天然气、制造业、rich media、金融等领域得到广泛部署。Lustre为其客户端提供了包含对共享文件对象的并行存取能力在内的POSIX接口。截止本文编写时为止,根据T

2012-03-05 22:27:07 22719 2

翻译 深入理解Lustre文件系统-第1篇 前言

Lustre文件系统是由U.S.Department of Energy Office of Science and National Nuclear SecurityAdministration laboratorie于近十年之前发起并提供基金支持的的,旨在满足当时和以后的超级计算平台中对于开源、高可扩展的、高性能的并行文件系统的需求。经过十年的发展,它得以在众多中型到大型超级计算平台和集群中部

2012-03-05 22:26:38 6493 2

原创 文件系统那些事-第4篇 并行文件系统之开源解决方案Lustre

在高性能存储领域,Lustre是一个如雷贯耳的名字。据统计(2011年7月),世界十大超级计算中心当中的七个以及超过50%的全球top50超级计算机都在使用Lustre。Lustre是一个基于对象的,分布式文件系统,一般用于大规模集群计算。Lustre的名字是由Linux和集群(cluster)融合得来。该项目旨在为有成千上万的节点的集群提供一个支持PB的存储容量的文件系统,同时又不损害其

2012-03-05 22:25:02 2854 1

原创 文件系统那些事-第3篇 影响文件系统性能的关键因素:存储块分配和布局策略

文件系统的分配和布局策略直接影响到文件系统访问的性能。为此,现代的文件系统都采用各种优化手段。3.1   块的再分配为了让设计简单,而且对最差情况下产生的文件系统碎片进行限制,传统的文件系统将磁盘分成大小相等的磁盘块。由于磁盘扇区的大小一般为512,块的大小一般也为512的整数倍字节。在传统的文件系统中,整个磁盘块只能分配给单独的一个文件。但是由于文件大小并不总是文件系统块大小的整数倍

2012-03-04 10:25:51 2608

原创 并行博弈树搜索算法-第7篇 另辟蹊径:其他的博弈树并行搜索算法

除了基于Alpha-Beta算法的博弈树并行搜索算法外,还有其他的博弈树搜索算法.现简要介绍如下.7.1    SSS*算法及其并行化Alpha-Beta算法是一种基于Min-Max方法的固定深度(fixed-depth)搜索算法.说它是固定深度的搜索算法,是因为对每个结点,它依序从左到右搜索其所有子结点.与Alpha-Beta算法相同的是,SSS*算法[19](或者其对称算法DUAL*)

2012-03-02 22:12:18 2871

原创 文件系统那些事-第2篇 不可不知的文件系统特性

判断一个文件系统是否具有某些特性,是听从不同方面区分和对比文件系统的一种有效方式。一些常见的文件系统的特性如下。2.1   硬链接硬链接是指向存储卷上文件的目录引用(reference)或者指针(pointer)。与该文件关联的名称是一个存储在目录结构中的标签。这个标签将操作指向文件的数据。通过这种方法,同一个文件就可以和多个名字相关联。当使用这些不同的名字时,所作的任何改动都将影响到同一

2012-03-02 22:11:52 1744

原创 文件系统那些事-第1篇 丰富多样的文件系统

什么是文件系统,文件系统可以进行怎样的分类?这是本篇将要谈论的问题。文件系统[i]是存储和组织计算机文件和文件中所包含的数据,以方便地找到和存取它们的方法。更加正式地说,文件系统是一个用来存储、分级管理、处理、导航(navigation)、访问和恢复数据的抽象数据种类(例如元数据)的集合。本篇[ii]从各个方面对诸多常见文件系统进行了对比。文件系统可以分为磁盘文件系统、网络文件

2012-03-02 00:45:55 2237

iputils源码深度注释版

本源码包含了在阅读和分析源码过程中添加的大量的注释。与本源码同时发布的是《iputils网络工具源码分析》系列文章,可在http://blog.csdn.net/fsdev中找到。

2012-08-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除