(计算机应用技术专业论文)基于内容存储设备文件系统的设计与实现.pdf_第1页
(计算机应用技术专业论文)基于内容存储设备文件系统的设计与实现.pdf_第2页
(计算机应用技术专业论文)基于内容存储设备文件系统的设计与实现.pdf_第3页
(计算机应用技术专业论文)基于内容存储设备文件系统的设计与实现.pdf_第4页
(计算机应用技术专业论文)基于内容存储设备文件系统的设计与实现.pdf_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中南民族大学硕士学位论文 i 摘要 随着信息化程度的不断提高,数据对于企业的重要性凸现,存储技术在其 中起到的作用日益增加,而网络技术的发展以及数据量的飞速增长,需要新的 存储网络技术适应现有的网络存储环境。基于对象存储(obs)这种新的存储 网络体系结构,结合了存储区域网(san)和附网存储(nas)的优点,逐渐 成为学术界和工业界关注的热点。在对象存储中,基于内容存储(cas)是一 种已成功应用于固定内容存储的对象存储范例。它使用基于内容存储设备 (casd)作为基本存储节点,利用它的智能特性和对象机制获得了良好的系 统性能,扩展性和安全性。 为了优化 casd中对象的存储,本文在研究 casd 的基础上,设计和实现 了一个用于基于内容存储设备的文件系统 casdfs。casdfs 是一个用户态的 文件系统,其基本策略是针对 casd的特性来优化磁盘布局结构。casdfs 使 用两种磁盘块大小:小磁盘块,等于通用文件系统中的逻辑块大小;大磁盘块, 等于最大对象的大小,并使用区域来组织和管理相同大小的磁盘块。这种策略 在提高 casd 中对象的存储性能的同时,又保证较高的磁盘利用率,使系统产 生相对较少的磁盘碎片量。 实验表明, 我们实现的用户态文件系统 casdfs 有非常好的磁盘布局结构, 能更有效地管理 casd 中水平的对象命名空间。虽然 casdfs 是为了优化 casd中大对象的存储性能而开发的,但 casdfs 的性能不论对象的大小,都 要比 linux中 ext2文件系统好得多。 因此 casdfs 除了适应于高性能计算环境 (大文件占绝大多数)外,同样也适用于通用计算环境(小文件占绝大多数) 下的固定内容的存储。 关键字:基于内容存储;对象存储;文件系统 基于内容存储设备文件系统的设计与实现 ii abstract with the continuous improvement of information technology, the data become more and more important to enterprises, in which storage technology plays an important role. however, developments in network technology and the rapid growth in volume of data need new storage technique to meet the existing network storage environment. a new object- based storage network architecture, which takes advantage of san and nas, comes into focus of both the academe and the industrial community. in the object storage, content aware storage (cas) is a kind of sample which has been successfully applied to fixed- content storage. it uses content- based storage device (casd) as the basic storage node, and uses its intelligence and object mechanisms to achieve good system performance, scalability and security. in order to optimize the storage of objects in casd, in this paper, we design and implement a file system for casd based on the casd research, casdfs. casdfs is a user mode file system. its basic strategy is to optimize the characteristics of casd disk layout. casdfs uses two disk block size: small disk blocks, equal to the logic block size of general- purpose file system; large disk blocks, equal to the size of the maximum object, and uses area to organize and manage the same size of disk block. this strategy improves the storage performance of the object in casd, at the same time, also guarantees a higher disk utilization and allow the system to have a relatively small amount of disk fragmentation. experiments show that our implemented user mode file system casdfs has a very good disk layout, and can more effectively manage the level of casd object in the namespace. although casdfs is developed for optimizing the storage performance of big object in casd, but regardless of the size of the object, the performance of casdfs is much better than the linux ext2 file system. in addition to casdfs adapted to the storage of fix content in high- performance computing environment (the majority of large files), the same also applies to general- purpose computing environment (the vast majority of small files). key words: content aware storage; object storage; file system 中南民族大学 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所 取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任 何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡 献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的 法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意 学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文 被查阅和借阅。本人授权中南民族大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存 和汇编本学位论文。 本学位论文属于 1、保密,在_年解密后适用本授权书。 2、不保密。 (请在以上相应方框内打“” ) 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 中南民族大学硕士学位论文 1 第1章 绪论 1.1 研究背景 在如今这个信息爆炸的时代,数据的存储具有越来越重要的地位,从而使 得企业在存储硬件设备和存储管理软件上的花费在其整个运营成本中的比重也 越来越大。当前大量地密集型数据的应用,如数字图书馆、网络播放多媒体系 统、气象数据处理、医药视频图像处理等对存储系统的性能、可扩展性和可管 理性等方面提出了越来越高的需求。巨大的数据量使得传统的以主机为中心的 存储结构无法再满足密集型数据存储应用的要求,为了解决传统存储系统的不 足,存储技术逐渐从传统的主机为中心的存储结构向网络存储技术发展。 当前比较流行的网络存储技术主要有: 附网存储 (network attached storage, nas)和存储区域网(storage area network,san) 。nas 使用的是基于文件 的通信协议,它以文件服务器的方式进行文件共享操作,其性能从而会受到文 件服务器的限制;san 通过专用高速网络将若干个网络存储设备和服务器连接 起来的存储系统,它采用基于块的通信协议直接与外接存储设备交互,使得其 安全性比较差,管理上也比较复杂。为了解决 nas 和 san 存储技术的缺陷, 发展了基于对象存储技术(object- based storage,obs)1。在基于对象存储系 统中,文件是以对象的形式存储在基于对象存储设备(object- based storage device,osd)2中,并使用对象 id 作为对象的唯一标识符。osd 标准是由 incits(international committee for information technology standards)的 t10 技术委员会负责开发的,2005 年 1 月被存储网络工业协会(storage networking industry association,snia)批准,目前版本是 2.0。经过多年地努力,对象存 储概念已被普遍接受,osd 标准2,3也得到了工业界的认可。 基于对象存储的思想主要是将数据内容和其相关属性、操作封装为对象的 形式,并存储到存储设备中,用户对于存储设备的访问接口就由传统的文件或 块接口变成为了对象接口。一个对象不但包括了对象的数据,还包括访问其数 据的属性、属性描述和用户访问的安全策略等信息,从而使得对象具有文件和 块两者所有的优点,它可以在存储设备上按照块级的方式来直接访问,也可以 通过对象操作接口,像文件一样,在不同的系统平台上实现共享访问。 基于内容存储设备文件系统的设计与实现 2 基于内容存储(content- aware storage,cas)4是基于对象存储的一个典 型范例,它使用文件内容的 hash值表示对象 id,即以文件内容作为存储依据, 通过其 hash 值(通过 md5、sha1 等一些散列算法计算获得)建立文件内容 数据与对象之间的映射关系。 1.2 基于对象存储技术 基于对象存储技术有效结合了 san 和 nas 系统的优点,支持直接访问存 储介质以提高性能,同时通过共享的文件和元数据以简化管理,目前基于对象 存储技术已成为未来存储技术的研究热点。 1 . 2 . 1 基本思想 传统的文件系统可分为两个部分:用户组件部分和存储组件部分。用户组 件部分主要负责给用户提供一组文件和目录操作的调用接口,而存储组件部分 负责文件和目录的相关数据的存储管理。基于对象存储的基本思想就是存储组 件部分和用户组件分离,并且基于 osd 构建存储系统,每个 osd 具有一定的 智能性,能够自动管理其上的数据分布。 在基于对象存储系统中,对象是系统中数据存储的基本单元,它是文件的 数据和其相关属性的组合,这些属性可以是定义基于文件的安全参数、服务质 量和数据分布等信息,而传统的存储系统中用文件或块作为基本的存储单位, 在块存储系统中还需要始终追踪系统中每个块的属性,对象通过与存储设备通 信维护自己的属性。在存储设备中,所有对象都有一个对象标识,即对象 id, 并通过对象 id 访问该对象。存储设备上通常有多种类型的对象,如根对象标识 存储设备和该设备的各种属性,组对象是存储设备上共享资源管理策略的对象 集合等。 在一个由 osd 构成的对象存储系统中,用户组件部分只负责把文件名等逻 辑名称映射为对象 id,而将存储组件部分下移到 osd 中,相应的调用接口也 从基于块的接口变为了基于对象的接口,如图 1.1 所示。 中南民族大学硕士学位论文 3 应用层 系统调用接口 文件系统用户管理 文件系统存储管理 扇区/lba接口 块i/o接口 磁盘 应用层 系统调用接口 文件系统用户管理 对象接口 文件系统存储管理 块i/o接口 磁盘 传统模型osd模型 图 1.1 传统文件系统和 obs 文件系统 1 . 2 . 2 系统结构 基于对象存储系统主要由客户端、osd、元数据服务器组成,并通过高速 网络相连的5,如图 1.2 所示。 直接数据访问 元数据访问 元数据更新 高速网络 基于对象存储设备(osd)客户机 元数据服务器集群 图 1.2 obs 体系结构 基于内容存储设备文件系统的设计与实现 4 其中 osd 具有一定的智能,它有自己的 cpu、内存、网络和存储介质,主 要为用户提供数据存储,优化数据分布和元数据管理等功能。osd 不提供块接 口访问方式,而是提供基于对象的访问接口,同时还验证用户访问的权限。元 数据服务器构造、管理描述每个文件分布的视图,并提供文件和目录的访问管 理,同时还维护客户端 cache 一致性。客户端通常提供 posix 文件系统接口, 使应用程序像执行标准的文件系统操作一样。 obs 既可以在 tcp/ip 上实现,如客户端主机通过 iscsi6协议访问 osd, 将 scsi osd命令封装在 tcp/ip 包中传送给 osd;也可以将 obs 建立在其它 非 tcp/ip 协议之上,如 obs 与虚拟接口体系结构( virtual interface architecture ,via)7结合可构建更为高效的存储系统。 基于对象存储系统的工作流程如下:首先客户端向元数据服务器发送文件 访问请求,如 open、read、write、close 和 delete 等。元数据服务器收到客户 端访问请求后,先对其进行身份验证,通过验证后,就向客户端发送相关证书 (主要描述客户端可进行的操作以及与文件有关的元数据) , 然后客户端与osd 建立连接,连接过程中 osd 对其证书的权限和完整性进行检查,通过验证后, 就向相应的 osd 发送对象访问请求。最后,osd 与客户端之间就直接进行数 据传送。 1 . 2 . 3 技术优势 因为基于对象存储技术的富于表现力的对象访问机制,与传统网络存储技 术(san 和 nas)相比,其具有以下优势: (1)高性能。在基于对象存储系统中,客户端直接发送数据到osd,osd 自动优化数据的分布和管理对象的元数据,这样减少了元数据服务器的负担, 并允许向多个 osd 并行读写,最大化单个客户端的吞吐率。 (2)可扩展性。将负载分布到多个智能的 osd,并用网络和软件将它们有 机结合起来,消除了可扩展问题。因为 osd 拥有自己的处理器、内存、磁盘介 质等,增加一个 osd 不仅可以增加磁盘容量,而且还可以增加系统元数据管理 资源,使得对象存储系统在容量扩展时,还确保持续的吞吐率,而传统的 nas 服务器增加更多的磁盘,则性能将更慢, 中南民族大学硕士学位论文 5 (4)易管理。智能化的分布对象存储结构可以简化存储管理任务,可以简 化数据优化分布的任务, 同时其 cache 策略8还保证了客户端访问数据的一致 性,使得文件级的数据共享更容易。 (5)安全性。传统的存储系统通常依赖于客户端的身份认证和私有的网络 确保系统安全。基于对象存储结构在每个级别都提供安全功能,主要包括存储 设备、计算结点以及计算结点命令的身份认证和基于 ipsec 的私有数据和命令 的完整性检查等。 1.3 基于内容存储技术 基于内容存储(cas)是基于对象存储的一个典型范例,起源于德尼森大 学和卡内基梅隆大学的研究9。在基于内容存储中,获取数据不是通过用户定 义的传统文件名,而是根据文件的内容。传统的文件名由一个根据文件内容计 算出来的固定长度的 hash值所取代,它是通过某种散列算法(如 md5、sha1 等散列算法)根据其的内容数据计算出来的,是一个表示该数据对象的全局唯 一的数字标识符,即对象 id。对于基于内容存储系统中的客户端而言,只需使 用这一数字标识符(对象 id)通过 cas 网络存储系统的应用软件服务器来实 现对文件内容的存取即可。 基于内容存储是内容寻址的,这意味着我们无须其他应用程序的协助,便 能够了解和管理对象数据在存储设备上的存储位置。由于地址是根据对象数据 内容本身计算的,因此它可以作为应用程序在查找和检索存储对象时的唯一的 归属检查参考。此归属检查机制不仅简化了大量对象的管理任务,而且还能确 保内容本身的真实性。 因此对于固定内容数据的存储, cas 具有很高的优越性。 同时,在应用 cas 技术的同时辅以归档技术,将极大程度地提高 cas 技术的 影响力。 cas 将应用和内容的存储位置完全隔离,可以自动检测对象数据的变化, 实时保护对象数据不会被恶意的修改,并维持对象数据的完整性。同时,对象 的对象 id 是从其内容得到的全局唯一的标识符,它可以用于内容验证,允许建 立智能的基于策略,基于元数据和基于数据的信息生命周期管理规则。基于内 容存储除了具有基于对象存储的优点之外,还具有以下几个优势: 基于内容存储设备文件系统的设计与实现 6 (1)快速的定位方式:每一个对象都有其唯一的 id,cas 系统根据这个 id 能够迅速地定位到其对应的对象。而在传统的文件系统中,在定位文件时, 需要搜索文件目录和文件;在访问文件时,又需要将文件的逻辑地址转换为块 设备的物理存储地址,这些都需要较大的系统开销; (2)全局的数据压缩,节省存储空间。由于每个内容或数据分段都被赋予 一个唯一的 id,当有重复内容被存储时,因产生同样的 id 将被系统识别,就 避免了相同内容的重复存储。这不仅节省大量空间,提高存储效率,而且极大 简化了数据管理。 (3)确保数据完整性。由于 cas 存储数据的唯一性和不可更改性,而且 可通过赋予数据保留时间等属性轻松实现 worm(只写一次,多次读取) ,使 数据的真实性与完整性得到完全保护。 cas 提供了一种全新的信息管理方法, 特别适合于固定内容的需要。 与nas 和 san 进行对比,如表 1.1 所示,我们不难知道,cas 在固定内容数据的存储 方面上有天然的优势。 表 1.1 san、nas 和 cas 的存储特点对比 比较项目 san nas cas 传输类型 ip/光纤通道 ip/光纤通道 ip 数据类型 块级 文件级 基于对象 关键需求 性能确定 多协议共享 持久、确保完整性 典型应用 数据仓库、erp 文件服务器 内容管理、数据归档 信息周期 所存储内容创建并积极共享 所存储内容固定并保存 寻址类型 基于位置 基于内容 数据内容 内容可变的 内容固定的 1.4 国内外研究现状 麻省理工大学的 sswallow10是最早实现分布式对象存储的原型系统, 而基于对象存储的研究获得实质性进展则要源于卡内基梅隆大学(carnegie 中南民族大学硕士学位论文 7 mellon university,cmu)并行数据实验室(parallel data lab, pdl)的网络 附加安全磁盘(network- attached security disks, nasd)11项目。nasd系 统中采用了基于对象接口的网络附加磁盘,并运用加密技术和基于证书的认证 机制来加强系统的安全性。在 nasd项目的基础上,诞生了两个重要的基于对 象的分布式文件系统 lustre12和 panasas13。 在基于对象存储的研究中,有两个分支得到了学术界和工业界的广泛关注。 其中一个是研究和开发存储级的智能化。该领域的研究主要以 cmu 的 pdl 为 代表。 此外, 美国威斯康星麦迪逊分校 (university of wisconsin- madison, uwm) 提出了一种基于语义的智能磁盘设备14,它可以在现有的基于数据块的接口下 学习文件系统的相关数据结构和信息。 用数据内容的 hash 值来标识文件的方法已有了若干的研究,如 single instance storage2用文件内容的 hash 来删除重复的文件以达到数据压缩的效 果,贝尔实验室研究开发的 venti 15网络存储系统和 intel 与 cmu 研究开发的 casper16分布式文件系统也采用了相同的方法在数据块级进行了数据压缩。 工业界基于内容存储的产品最著名的有 emc 的 centera17,avanmar technologies 的 axion18和 ibm 的 antara19,它们都使用了基于内容存储 (content- aware storage,cas)技术,也称为内容可寻址存储(content addressable storage,cas)技术1720。 中国传媒大学是国内最早研究与开发 cas 存储系统的单位之一,开发的 castor21系统也采用了 cas 技术,是国内最早自主开发的 cas 产品。castor 系统遵循以下三个基本原则:使用户能够根据内容 存储、管理和查找他们的信 息。 1.5 研究意义和目的 据 idc 的调查,全球每年增长的数据量中,绝大多数来自于非结构化的数 据,也即通常所讲的参考数据、固定内容数据、多媒体数据,这些非结构化的 数据大约占据了企业数据处理的 85%。面对如此大规模的非结构化数据,如何 存储已成为每个企业首要解决的一个难题。 虽然传统网络存储系统(如 san、nas 等)在一定程度上可以满足几十、 基于内容存储设备文件系统的设计与实现 8 几百 tb 的网络存储应用需求,但这类存储系统的可扩展性、管理效率以及扩 展整个存储系统后的性价比远远不能满足动辄几百 tb,乃至 pb 的大规模面向 固定内容的网络存储需求,因此传统的网络存储技术并不能适应大量的固定内 容存储。不仅如此,对数据的安全访问和长久保存要求苛刻的新存储系统亦对 传统网络存储系统解决方案提出了严峻的挑战。 基于对象存储这种新的存储网络体系结构,结合了 san 和 nas 的优点, 逐渐成为学术界和工业界关注的热点。在基于对象存储中,基于内容存储系统 是一种已成功应用于固定内容存储的对象存储范例,它采用基于内容存储设备 (content aware storage device,casd)22作为基本存储节点,利用它的智能 性和对象机制来获得良好的系统性能,扩展性和安全性。 然而,当前大多数研究都是专注于基于对象存储系统的层次管理,可扩展 性和可用性,如 afs23,lustre 等,而相对很少研究有针对于提高系统存储设 备的存储管理性能。因现代的存储系统中可能会使用成千上万个存储设备,即 便存储管理方面的一点小缺陷都会造成整个系统很大的性能损失。现实中,大 多数基于对象存储系统都是使用通用文件系统作为存储管理模块,如 lustre 使 用 ext3 文件系作为它的存储管理模块,而通用文件系统并不能很好的满足基于 对象存储系统中存储管理的需要。 为了优化 casd中对象的存储,本文在对 casd 研究的基础上,根据其对 象的存储特点,设计和实现了一个用于 casd的文件系统 casdfs,主要负责 casd中对象数据内容的快速访问和存取,以及存储介质的存储空间管理 1.6 论文组织结构 本文的组织结构如下: 第一章主要阐述研究基于对象存储技术和基于内容存储技术的目的和意 义,并介绍课题研究背景以及国内外研究现状。 第二章详细介绍基于内容存储系统中的基于内容存储设备 casd,包括其 功能,所存储的对象和体系结构。 第三章针对 casd 中对象的存储特点,设计一个用于 casd 的文件系统 casdfs。详细介绍其设计思想、存储空间管理、对象元数据、对象管理策略 中南民族大学硕士学位论文 9 和对象操作接口。 第四章详细介绍了 casdfs 的实现细节。casdfs 实现为一个基于 fuse 的用户态文件系统。 第五章对实现的用户态 casdfs 进行性能测试,并与 linux中的 ext2 进行 比较,且对测试结果做了相应的分析。 第六章对全文进行总结并展望未来工作。 基于内容存储设备文件系统的设计与实现 10 第2章 基于内容存储设备 在基于对象存储中,基于内容存储是一种已成功应用于固定内容存储的对 象存储范例,它采用 casd作为基本存储节点,利用它的智能性和对象机制来 获得良好的系统性能,扩展性和安全性。 2.1 casd的功能 基于内容存储设备(casd)是整个基于内容存储系统的核心,它包括处理 器、内存、存储介质如磁盘、网络接口卡等以及运行在其上的控制软件。它以 对象为基本数据管理单元, 针对不同的数据访问命令执行对应的数据处理操作, 然后将结果返回给用户。casd的功能主要有: (1)数据的存取。casd管理对象数据,并将它们放置在标准的存储介质 上,casd 不提供块接口访问方式,而是对象访问接口,客户端请求数据时用 对象 id、偏移进行数据读写。 (2)数据智能分布。casd用其自身的 cpu 和内存优化数据分布,并支持 数据的预取。由于 casd可以智能地支持对象的预取,从而可以优化磁盘的性 能。 (3)元数据的管理。casd管理存储在其上对象的元数据,该元数据与传 统的 inode 元数据相似, 通常包括对象的数据块和对象的长度。 而在传统的 nas 系统中,这些元数据是由文件服务器维护的,对象存储架构将系统中主要的元 数据管理工作由 casd来完成,降低了元数据服务器的开销 (4)安全性。 在 casd中,不需要担心存储系统中客户端对其安全的影响, 因而其将安全性提高到了一个新的水平,对每个数据传输命令,都要核准数据 发送者及其动作的合法性才能执行。 2.2 casd中的对象 基于内容存储作为一种已成功应用于固定内容存储的范例,它使用文件内 容的 hash 值来表示基于对象存储中的对象 id,即以文件内容作为存储依据, 中南民族大学硕士学位论文 11 对其采用某种散列算法(如 md5、sha1 等)计算生成固定长度的输出,该输 出就是 hash值,并通过 hash值来建立对象内容与对象之间的映射关系。数据 内容的 hash值 (对象 id) 通常在客户端或元数据服务器中计算生成, 因为 hash 值在统计意义上可以认为是全局唯一的, 所以 cas 中的对象具有全局唯一的命 名空间,这提高了系统共享的可管理性,同时还可以用来提供对象数据内容的 完整性校验。 基于内容存储系统表示文件为一组对象的集合,并将它们分布存储到若干 casd 中。在基于内容存储系统中,文件通常是按一定的粒度进行分块后存储 到所有的 casd中。假如分块的粒度为 512kb,则大文件被分成若干个 512kb 大小的对象,而小于 512kb的文件将作为单个对象来存储,从而在系统中,没 有任何对象的大小超过系统分块的粒度, 对于与系统分块粒度一样大小的对象, 称为大对象,其它对象就称为小对象。文件的分块大小可以根据整个系统的设 计要求来确定,分块粒度太小将会减少每个 casd的吞吐量,然而太大将会降 低每个文件的并发性。 2.3 casd的体系结构 casd 的体系结构如图 2.1 所示,它是一个自组织系统,其逻辑结构可以划 分为以下几大功能模块: (1)网络协议模块。主要用于从网络获取和发送 casd命令数据包。 (2)casd协议模块。主要用于解析从网络中获取的 casd命令数据包, 同时将系统处理后的返回结果转化为 casd命令数据包。 (3)会话管理模块。用于维护用户访问 casd的会话,并管理会话间和任 务间的调度,从而能保证多用户同时访问时的效率 (4)安全性模块。用于验证用户的合法性。 (5)文件系统模块。管理存放在 casd中的对象,并提供对象访问接口, 完成 casd 命令。 (6)块设备 i/o 驱动层,它包括传统的块设备驱动和通用块设备驱动,如 scsi 驱动、ata驱动、sata 驱动等。 基于内容存储设备文件系统的设计与实现 12 网络协议模块 casd协议模块 安全性模块会话管理模块 文件系统模块 块设备i/o驱动层 存储介质设备 图 2.1 casd的体系结构 casd 处理用户请求的基本流程:首先网络协议栈模块获得由客户端或元 数据服务器发送过来请求数据包后,将其解析生成 casd命令后发往 casd协 议模块。casd协议模块接收到 casd命令后,获得其安全参数、命令操作码 和操作参数。然后安全性模块根据 casd命令中的安全参数验证命令请求的完 整性以及用户(客户端或元数据服务器)是否具有合法的访问权限。如果无法 通过安全性检查,则拒绝执行该 casd命令,同时返回错误信息给用户。如果 是合法的用户请求访问,并且还是新用户,会话管理模块就会为该用户建立一 个新会话并插入会话链表,并初始化该新会话的命令队列,否则该命令就会由 一个已建立的会话来处理, 即将接收到的 casd命令插入该会话的命令队列中。 casd 判断该命令类型,如果是普通的对象操作命令,casd 则调用文件系统 模块去执行相应操作。在执行之前,文件系统可能需要检查用户对所访问对象 是否具有相应的操作权限,如果用户具有合法的操作权限则执行相应操作。最 后当命令执行完成后, casd协议模块负责将命令请求的操作结果封装成casd 命令数据包,同时可能会根据客户的安全需求需要通过安全模块来加上相应的 安全参数,再将 casd命令数据包通过网络返回给用户。 中南民族大学硕士学位论文 13 第3 章 基于内容存储设备文件系统的设计 当前大多数基于对象存储系统都是使用通用文件系统作为存储管理模块, 如 lustre 使用 ext3 文件系作为它的存储管理模块, 而通用文件系统并不能很好 的满足基于对象存储系统中存储管理的需要。为了优化 casd中对象的存储, 我们根据 casd 的对象存储特性设计和实现了一种用于 casd 的文件系统 (content aware storage device file system, casdfs) 。 它是专门针对固定内容 存储需求而设计的一个高效的文件系统,主要负责基于内容存储设备中对象数 据内容的快速访问和存取,存储介质的存储空间管理,具有以下特性: (1)面向对象 在 casd 中,数据是以对象的方式来存储和访问,并给用户提供一组基于 对象的访问接口。 (2)水平的命名空间 在 casdfs 中,对象是以对象 id 来管理的,从对象 id 即可映射到对象的 属性和数据的存储位置。casdfs 中不再有目录的概念,所有对象共享一个水 平的命名空间,因此 casdfs 所采用的是一种水平的名字管理机制。 (3)更高的智能水平 casdfs 的数据存储管理策略采用动态可配置的方法,在初始化的过程中 根据对象服务类型的不同而选择不同的数据存放策略,这样的设计能让 casd 智能的提供很好的 i/o 性能。 (4)无重复的数据内容 由于每个文件内容或数据分块都被赋予一个惟一的对象 id,当有相同数据 内容被存储时,因会产生同样的对象 id 而将被系统识别,从而避免了相同内容 的对象重复存储。这不仅节省大量存储空间,还提高存储效率,并且极大地简 化了数据管理。 3.1 设计思想 基于内容存储系统表示文件为一组对象的集合,并将它们分布存储到若干 casd 中。在基于内容存储系统中,文件通常是按一定的粒度进行分块后存储 基于内容存储设备文件系统的设计与实现 14 到 casd 中。假如分块的粒度为 512kb,则大文件被分成若干个 512kb 大小 的对象,而小于 512kb的文件将作为单个对象来存储,从而在系统中,没有任 何对象的大小超过系统分块的粒度,对于与系统分块粒度一样大小的对象,称 为大对象,其它对象就称为小对象。文件的分块大小可以根据整个系统的设计 要求来确定,分块粒度太小将会减少每个 casd的吞吐量,然而太大将会降低 每个文件的并发性。 在我们的 casd中,所要存储的对象大小范围从几个字节到几百 kb,且绝 多数对象都是大对象。为了提高系统的吞吐量,casdfs 需要优化大对象的存 储性能,同时也要避免因小对象的存储而过多浪费存储空间。虽然简单的增大 文件系统的磁盘分块大小能提高大对象的存储性能,但在存储小对象时容易产 生较多的内部碎片。为此,casdfs 采用多种磁盘块大小的区域管理策略,即 将存储空间划分成若干的相同大小的区域,每个区域中的磁盘块大小相同,不 同区域中的磁盘块不一定相同,根据对象大小来使用不同大小的磁盘块,从而 既能提高大对象的存储性能,又防止了存储小对象时过多浪费存储空间。 在 casdfs 运行的过程中,所有区域通过两个区域链表来维护,空闲区域 链表和当前已使用区域链表,每个区域中的磁盘分块大小在初始化时才会被确 定,即若当前的已使用的所有区域无法满足对象写请求时,casdfs 就从空闲 区域链表中取出一个空闲区域,并根据需要对该空闲区域进行初始化,再添加 到当前已使用区域链表中。当某个区域中所有分配的磁盘块都被释放后, casdfs 就将该区域放到空闲区域链表中。 3.2 存储空间管理 为了提高系统的存储性能和有效利用磁盘存储空间,casdfs 将磁盘分成 若干个相同大小的区域,每个区域包含一组连续的磁盘块。磁盘块大小是可配 置的,虽然 casdfs 支持的磁盘块大小种类可以与区域总个数相同,但使用太 多种磁盘块大小, 会让我们的空间分配和数据管理非常复杂, 在当前的 casdfs 实现中,使用两种磁盘块大小:小磁盘块和大磁盘块。小磁盘块的大小为 4kb, 也是一般 linux 文件系统中逻辑块的大小,而大磁盘块的大小为 512kb,即 casd中存储的对象的最大大小,也是应用程序中文件的分片大小。 中南民族大学硕士学位论文 15 3 . 2 . 1 磁盘布局结构 磁盘头对象查找表区域区域区域 区 域 头 空闲 磁盘 块表 空闲 元数 据表 元数据表磁盘块区域 图 3.1 casdfs 的磁盘布局结构 图 3.1 是 casdfs 中的磁盘布局结构,其中磁盘头描述了整个文件系统的 相关信息,对应于 ext2 文件系统中的超级块,主要包括如下消息:文件系统标 识号、总对象个数、总区域个数、每个区域大小,对象查找表的起始地址和大 小等信息。 磁盘头随后就是对象查找表,即 hash- metadata 映射表。hash- metadata 映 射表是一个哈希表,用来实现对象 id(对象数据内容的 hash 值)到对象元数 据的映射,每个对象在哈希表中都有一个入口,主要存放对象 id、对象元数据 所在区域的序号和对象元数据的序号等信息。哈希表的大小至少要与磁盘中所 存放的总对象个数成比例。 在对象查找表的后面,就是若干个相同大小的区域,主要用来存储对象元 数据和对象数据内容。每个区域都有一个区域头,主要用来描述该区域的相关 信息:区域序号、磁盘块大小、总磁盘块个数、空闲磁盘块表起始地址和大小、 空闲元数据表起始地址和大小和元数据表起始地址和大小等信息。其中空闲磁 盘块表和空闲元数据表主要分别用来描述该区域磁盘块和元数据的使用情况。 元数据表用来存放该区域中对象的元数据,以元数据的序号为索引,每一个元 数据主要包括对象的大小和存储位置信息。元数据表后面就是逻辑块区域,用 来存放对象的数据内容。 3 . 2 . 2 磁盘空间分配 存储空间管理主要是完成系统的存储空间分配和回收的功能目前有常用的 存储空间管理方法有以下几种22:位示图法、空闲表法、空闲链表法和成组链 基于内容存储设备文件系统的设计与实现 16 接法等。 其中位示图法速度较快,但须加载整个位示图到内存中,现在大多数存储 系统的存储容量越来越大,会使得位示图大于系统内存大小,所以这种方法不 适合 casdfs 的空闲空间管理。空闲链表法和成组链接法也不适合需要为对象 分配连续存储空间的 cas 系统。综上考虑,本文 casdfs 选择空闲表法来管 理空闲磁盘存储空间。casdfs 维护一个空闲表,每个表目对应一个包含连续 空闲扇区的空闲区,这些空闲区的大小是可变的。表目的内容包括空闲区第一 个扇区号和该空闲区的扇区总数。当空间被释放时,相邻的空闲区要被合并成 一个大的空闲区。空闲空链表必须存储在磁盘上,所以空闲空间表对应一个元 数据。像 hash- metadata 映射表一样,空闲空间表也在 casdfs 加载后被装入 内存中,并且当被改变后要更新到磁盘上。 3.3 对象元数据管理 在 casdfs 中,对象元数据主要记录对象的长度和存储位置等信息,预先 分配在各个区域的元数据表中,如图所示。为了提高对象的访问效率,最好采 用直接寻址策略, 即在对象的元数据中记录所有分配给对象的磁盘块位置信息。 因为 casdfs 的分配策略是将对象的数据都分配到单个区域中,所以我们可以 使用相对地址来记录所分配的磁盘块。对于大对象,其元数据只需记录所分配 的磁盘块的区域内序号就行了, 而对于小对象, 假如每个区域的大小为 256mb, 也是当前 casdfs 中的每个区域的大小,因为小磁盘块的大小为 4kb,则在一 个区域中将至多有 216个小磁盘块, 要索引区域内所有的磁盘块只需要我们使用 2bytes 的地址空间就可以了。在最坏的情况下,一个略小于 512kb的对象则需 要 128 个小磁盘块,因而记录其所有分配的小磁盘块的索引空间最大为 256bytes。 我们知道,每个对象都有一个元数据。对于 casdfs 来说,通过对象内容 计算出的 hash 值是对象的唯一标识,所以 casdfs 需要为每个对象维护一个 hash 值到元数据的映射,即 hash- metadata 映射表。在 casdfs 中, hash- metadata 映射表中每一项用来存放元数据的索引,主要包括对象 id、对 象所在区域序号和对象所在区域中的元数据序号等信息。 中南民族大学硕士学位论文 17 因为 casdfs 是根据对象 id 来访问对象的,它维护一个对象 id 到对象元 数据的映射表。虽然每个元数据的索引占用的空间很小,但随着存储对象的越 来越多,元数据的索引个数也有惊人的数量,通过遍历整个 hash- metadata 映射 表找到特定对象的元数据也是非常耗时的, 所以 hash- metadata 映射表采用哈希 表的结构存储以提高检索效率。该哈希表的构造方法是先将对象 id 进行 hash 运算,得到的 hash 值位于一个小范围内,再按 hash 值组成一个线性表。在 casdfs 运行时,把该线性表加载到内存中,有利于加快查找速度。 3.4 对象管理策略 3 . 4 . 1 对象分配方法 因为 casd中对象的大小是已经知道的,为了使磁盘 i/o 操作尽可能地快, 应该尽可能给对象分配连续的磁盘块,在 casdfs 中,对象空间的分配策略非 常简单,当要存放一个对象时,casdfs 首先决定该对象将使用哪种类型的磁 盘块,如果对象大小等于或略小于大磁盘块大小,则分配一个大磁盘块给改对 象,否则就分配小磁盘块给该对象。 对于使用大磁盘块进行分配的对象,casdfs 只需要将该对象直接写到最 近一个包含有空闲磁盘块的区域中,然后更新空闲磁盘块表和空闲元数据表等 相关信息就可以了。而对于要使用小磁盘块进行分配的对象,则采用类似于快 速文件系统(fast file system,ffs)的分配策略18,即casdfs 首先从当前 已使用的所有区域中找到最近一个包含有足够分配空间的区域,如果找到了这 样的区域,casdfs 首先试着在该区域中寻找一段足够的连续空闲磁盘块空间 分配给对象,假如找不到这样一段连续的空闲磁盘块空间,则 casdfs 就先将 该区域中最大得一段连续的空闲磁盘块空间分配给对象,然后再将该区域中余 下最大的一段连续空间磁盘块空间分配给对象的剩余数据,重复以上过程,知 道整个对象都存储在单个区域内。如果在当前已使用的所有区域中找不到包含 有足够分配空间的区域, casdfs 就从系统空间区域链表中找到一个空闲区域, 并根据对象的需要进行初始化,添加到当前已使用区域链表中,然后将对象分 配到该对象中。 casdfs 的分配策略保证了每个大对象都分配到了一段连续的磁盘块空 基于内容存储设备文件系统的设计与实现 18 间,小对象都尽可能地分配到单个区域中的连续磁盘块空间中。因此,无论文 件系统运行多久,在存取大对象时都不需要额外的寻址操作,读写小对象时, 只需要少量的寻址操作,与通用的文件系统相比,当磁盘使用过久后,casdfs 所产生的磁盘碎片量要少的多,同时性能的下降也小的多。 3 . 4 . 2 对象寻址 在一个层次结构的命名空间中,数据的查找是通过沿着与对象关联的路径 查找到目标目录,然后在目标目录中查找对象,这种查找方法通常是线性的。 在一个水平的命名空间中,线性的查找通常花费是非常大的,因此,casdfs 通过构造一个哈希表去管理对象 id 到对象元数据的映射。 每个有效的对象在对 象查找表(hash- metadata 映射表)中都有一个入口,其中主要包括对象 id 和 对象元数据索引等信息,其中对象元数据索引由两部分构成:所在区域的序号 和区域内元数据序号。要查找某个对象在磁盘上的物理块,首先必须根据对象 的对象 id 查找 hash- metadata 映射表得到该对象的元数据索引,然后根据元数 据索引从磁盘中取回其对应的对象,具体的寻址过程如图: 区 域 头 空闲磁 盘块表 空闲元 数据表 元数据表磁盘块区域 对象id 对象查找表 对象id区域id元数据id 哈希函数 图 3.2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论