`
cloudeagle_bupt
  • 浏览: 534068 次
文章分类
社区版块
存档分类
最新评论

存储技术之卷管理和文件系统

 
阅读更多

转自:http://segmentfault.com/blog/p_chou/1190000000698405

原文:存储技术之卷管理和文件系统

存储技术如今已经越来越重要,而且在云计算时代,涌现出了很多专注于云存储的厂商。存储技术本身也十分复杂,从硬件到协议到软件到接口几乎覆盖计算机科学的方方面面。笔者借助《大话存储II》这本书,开始了这块知识空白的补充。本文的图片均来源于网络。

卷管理(Volume Manager)

卷管理的原理

RAID在硬件层面提高了物理磁盘的性能、可靠性和利用率,它提供给上层操作系统虚拟的磁盘,在操作系统看来是物理磁盘。但是,随之带来的问题是,如果某块虚拟的磁盘哪一天不够用了怎么办?无法动态的添加容量。为了解决这个问题,在操作系统和RAID(或直接的磁盘控制器)之间产生了一种叫卷管理器(Volume Manager)的软件。

卷管理器将RAID提交上来的磁盘进行再划分和再重组,使得操作系统可以自由的对卷进行管理。为了理解卷管理,首先来看几个概念:

  • PV(Physical Volume):即是RAID提交上来的虚拟磁盘(对于卷管理器而言它是物理磁盘),只是换个名词,提交上来几个虚拟磁盘就有几个PV
  • PE(Physical Extends):将PV进行等大小划分出来的物理区块,每个PE都代表着PV上从几号扇区到几号扇区,PE是分割和合并的最小单位,可以在卷管理中设置
  • VG(Volume Group):卷管理器将PE进行组合,组成逻辑上的大的容器池,称为VG
  • LV(Logical Volume):从VG中将若干数量的PE组合成逻辑卷。在Linux中,一个逻辑卷就可以被挂在到相应的目录。

下面的图可以说明上述的概念之间的关系:

卷管理通过划分PE,将物理的磁盘分割,并进行再重组。这样就可以在某个逻辑卷空间不足时将其他逻辑卷的PE搬一些过来使用。所以对于上层操作系统而言,逻辑卷是灵活多了。但是,这些关系是如此的繁杂,卷管理需要维护这些对应关系,所以需要在磁盘上保存卷配置信息,比如PE大小、初始偏移、PV的数量和信息、排列顺序等。存储这个配置信息的区域叫做VGDA(Volume Group Descriptor Area)。当卷管理器初始化时需要从VGDA上加载信息,并生成映射公式,当上层系统发起IO请求时,卷管理器需要换算成实际磁盘及物理扇区位置(当然这些磁盘和物理扇区本身可能都是虚拟的),并通过驱动程序告知下层的控制器如何存取磁盘。

卷管理器甚至还具有软RAID功能,可以将逻辑卷看成物理磁盘,组成RAID。

分区

分区实际上也可以看成一种简单的卷管理,是操作系统自带的卷管理程序,但是只能管理单个磁盘,不能将多个磁盘组合成虚拟卷再划分,不具备灵活的功能。我们通常见到的C:D:E:...盘就是通过分区得到的逻辑卷。操作系统可以针对分区(逻辑卷)进行格式化。

BIOS在进行引导时,总是会执行LBA1扇区上的指令,以加载操作系统,这个扇区称为MBR(Master Boot Recorder),其中还保存着分区表。通常第一条指令都是跳转到活动分区读取操作系统的代码并执行。在修改了分区设置的后,分区表会被更新。

卷管理程序同样需要遵从BIOS和MBR,只不过它除了各个磁盘上写入VGDA外,也要更新MBR中的分区表,划分出一个小分区,将启动操作系统的代码放在这个分区中,并表明bootable类型。在Linux中,这个分区就是/boot分区,其中包含有操作系统的启动代码,大约只需要100MB。

BIOS执行的第一条指令位置总是LBA1,这是固定的。现在提出的新的EFI规范,可以配置第一条指令的所在扇区

在Linux中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。Linux 把各种IDE设备分配了一个由hd前缀组成的文件;而对于各种SCSI设备,则分配了一个由sd前缀组成的文件。例如,第一个IDE设备,Linux就定义为hda;第二个IDE设备就定义为hdb;下面以此类推。而SCSI设备就应该是sdasdb等。每一个硬盘设备最多能有4个主分区(其中包含扩展分区)构成,任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最多是4个。主分区的作用就是计算机用来进行启动操作系统的,因此每一个操作系统的引导程序,都应该存放在主分区上。扩展分区可以进一步划分为逻辑分区。以第一个IDE硬盘为例说明,主分区(或者扩展分区)占用了hda1hda2hda3hda4,而逻辑分区占用了hda5hda16等12个号码。因此,Linux下每一个硬盘总共最多有16个分区。下面是一个分区的例子:

从图中我们解读到如下信息:

  • 上图是一块SCSI设备硬盘,大小320G,被映射到/dev/sda
  • 划分了一个主分区用于装系统本身,大小41G左右,分区号1
  • 剩余的空间划分了一个逻辑分区,分区号2,5-10号的逻辑分区都是由这个扩展分区划分出来的
  • 5-10是逻辑分区,有多种文件系统类型

文件系统

扇区是存储的最小单位。然而,如果应用程序直接以扇区为单位进行存取,不但大大增加了复杂度,而且还增加了安全隐患。所以,需要由操作系统提供同一个管理接口,应用程序通过调用接口来完成数据的存取。也就是说,操作系统实际上就是在裸(Raw)设备的基础上,对磁盘进行逻辑上的结构化调整,并向上提供操作接口。这样的东东就是文件系统。文件系统对磁盘不同的组织方式就形成了不同的文件系统。例如FAT32NTFSEXT...

从磁盘的角度,读写的最小单位是扇区,但是如果读取文件都以扇区为单位的话,效率将是低下的。因为,扇区的只有512字节,读取较大体积的文件将极大增加IO的次数。于是,有了逻辑块的概念,也就是文件系统中的最小存储单元。一般,逻辑块的大小为4KB,这样比以扇区为单位读写数据要减少了8倍的IO数量。不过,由于逻辑块是文件系统的最小存储单位,所以,如果存储的文件小于4KB,也必须占用完整的4KB,因此,逻辑块也不是越大越好,太大的话会导致空间利用率下降。

EXT2文件系统

ext2文件系统是Linux使用的默认文件系统。在ext2文件系统中,文件的属性和内容被分开存放。其中,文件的属性存放在inode中,而文件的内容放在逻辑块中。一个文件有可能占用一个或多个逻辑块(block),但是一个文件仅仅对应一个inode,下面介绍inode

  • inode好比文件的索引,除了记录文件的属性外,还要记录文件内容所在地逻辑块号。因此,读取文件时必须从inode中得到文件的块号
  • inode本身大小有限,如果文件比较大,inode的数据结构无法容纳所有的逻辑块号的话,就需要借用逻辑块来存放
  • inode的数量决定了文件的最大数量
  • 目录也要占用一个inode,一个目录最少需要一个inode和一个block,在block中存放相关的文件或目录。因此如果要查找一个目录下的文件,需要从根目录的inode开始,一层层往下找

参考:EXT2 文件系统

inode/block示意图

较大的文件需要动用block来记录块号

文件系统的IO类型

文件系统的IO类型分为同步IO异步IO阻塞/非阻塞IO和Direct IO。这些分类不是同一层次的,需要分开讨论:

对于应用程序而言,需要调用操作系统文件系统的接口,这种接口可以分为同步IO和异步IO:

  • 同步IO是指应用程序的线程发起IO请求后,会被操作系统挂起,直到IO完成后,重新唤醒线程并把结果告知线程。此时,线程会处于等待状态,无法继续执行。
  • 异步IO是指操作系统不会挂起发起请求的线程,而是会继续执行该线程,当IO完成后跑到线程的回调函数中,以处理完成的IO结果。异步IO下,线程得以继续执行而不会等待。

阻塞/非阻塞IO是个广义的概念,是指普遍意义上的上层程序向下层程序发起IO请求后是否等待下层程序:

  • 阻塞IO情况下上层程序会等待下层程序的返回才继续执行后面的代码
  • 非阻塞IO情况下上层程序不会等待下层程序,而是继续执行自己的代码,直到下层程序发起完成通知

同步IO是阻塞IO的一种,异步IO是非阻塞IO的一种。

文件系统具有自己的缓存系统和缓存算法,以实现写速度的提升和“预读”。Direct IO就是告诉文件系统不使用缓存,而是直接将数据写入磁盘。数据库应用是使用Direct IO的典型应用,因为数据库自己有实现一套数据缓存和Flush算法。比如Oracle甚至有独立的进程DBWR来完成数据的Flush。

分享到:
评论

相关推荐

    管理信息系统 试卷 期末试卷

    信息系统是一个人造系统,它由人、计算机硬件、软件和数据资源组成,目的是及时、正确地收集、加工、存储、传递和提供决策所需的信息,实现组织中各项活动的管理、调节和控制。 35.原型法的基本思想是:开发者和...

    Oracle中自动存储管理技术原理及应用

    自动存储管理(ASM)是Oracle Database 10g 软件自带的功能,可以将一组磁盘转换成一个高可伸缩的(重点是在“可伸缩”上)和高性能的文件系统/卷管理器。ASM的引进提供了显著的价值,它使得在Oracle数据库中管理文件...

    java Smart系统-题库及试卷管理模块的设计与开发(源代码+论文).rar

    在技术实现上,该系统采用了Java语言进行开发,使用了MySQL数据库来存储数据,利用了Servlet和JSP技术来实现Web界面。在设计上,该系统遵循了MVC(模型-视图-控制器)设计模式,使得数据层、业务逻辑层和表示层分离...

    Java毕业设计:基于ssm的在线教育资源管理系统(源码+文档+PPT+录像演示).zip

    系统中管理员主要是为了安全有效地存储和管理各类信息,还可以对系统进行管理与更新维护等操作,并且对后台有相应的操作权限。 基本功能: 管理员;个人中心、学生管理、教师管理、公告信息管理、课程信息管理、...

    51.在线教育资源管理系统-基于JSP技术+ Mysql+Java(可运行源码+数据库+开发文档+lw)

    51.在线教育资源管理系统|基于JSP技术+ Mysql+Java的在线教育资源管理系统设计与实现(可运行源码+数据库+开发文档+lw) 在线教育资源管理系统,主要的模块包括管理员;个人中心、学生管理、教师管理、公告信息管理、...

    基于asp的在线考试管理系统+文档

    本系统是一个完整的ASP应用项目,合适有初步ASP编程经验的朋友们提高和学习之用。 系统含全套源码,合适朋友们在此基础上举一反三结合实际开发出优秀的ASP应用系统。 学生毕业设计好教材! 本系统是Web模式的在线...

    AIX系统管理

    14.2.3 文件系统的挂接和拆卸 136 14.2.4 更改/显示日志文件系统特性 137 14.2.5 删除文件系统 138 14.2.6 整理文件系统碎片 138 14.2.7 文件系统检查 139 14.2.8 获取文件系统信息 139 14.3 磁盘空间管理 139 ...

    毕设源码-VB+ACCESS自动组卷系统(源代码+系统).rar

    4. **二次开发定制**:为了满足不同用户的个性化需求,本系统提供了丰富的API接口和开发文档,方便用户进行二次开发和定制。用户可以根据自身需求对系统功能进行扩展和优化,实现个性化的自动组卷功能。

    计算机设计 - VB+ACCESS自动组卷系统(源代码+系统),保证可靠运行,毕业生可参考,免费资源下载

    基于这些需求,我们利用ACCESS数据库技术建立了试卷题库,实现了对试题信息的有效存储和管理。 在组卷过程中,系统能够根据教师设定的组卷参数,如试卷总分、题型比例、难度系数等,自动从题库中选取合适的试题进行...

    药品管理系统课程设计.doc

    该系统主要是药品信息管理的库存管理、药品管理、入库单管理和出库单管理等模块 的结合实现,使用C++技术加以实现。通用此课题以及我们在以往学习数据库的基础上, 灵活运用C++和查询语言SQL,开发出基本上能供应...

    在Linux分区或逻辑卷中创建文件系统的方法

    文件系统通过为存储数据的文件提供名称,并且在文件系统中的磁盘上维护文件和目录表以及它们的开始和结束位置、总的大小等来帮助管理所有的这些信息。 在 Linux 中,当你创建一个硬盘分区或者逻辑卷之后,接下来通常...

    java 论文 图书馆管理系统

    所以图书馆借阅信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理图书、期刊、试卷合订本等查询信息,这种查询管理方式存在着许多缺点,如:效率低、保密性差,另外时间...

    基于Java+SpringCloud微服务设计的题库管理系统设计与实现-源代码压缩包.zip

    本程序通过运用SpringCloud微服务搭建,将各种各样的题目存储到这个题库管理系统中,通过用户登录该系统对题库进行管理,同时随机生成相应的试卷进行管理。 设计要求和技术指标: 【1】技术架构选用Springcloud...

    大数据存储方式概述.doc

    虚拟存储技术 存储虚拟化的核心工作是物理存储设备到单一逻辑资源池的映射,通过虚拟化技术, 为用户和应用程序提供了虚拟磁盘或虚拟卷,并且用户可以根据需求对它进行任意分割 、合并、重新组合等操作,并分配给特定...

    基于JAVA语言,SpringBoot+Vue+Mysql开发的学习平台系统设计与实现(含:源码+设计文档+部署说明+视频演示)

    该系统采用了JAVA语言开发,SpringBoot作为后端框架,Vue作为前端框架,MySQL作为数据存储,具备较高的技术稳定性和可扩展性。 具体功能: 1.系统功能模块 学习平台,在平台首页可以查看首页,课程信息,作业信息,...

    WindowsServer2016系统管理视频教程csdn.txt

    5-9文件资源管理器限制文件夹的大小和存放文件的类型12:54 5-10分布式文件系统(DFS)整合企业共享资源17:08 5-11配置DFS实现多服务器上的文件夹实时同步和访问负载均衡15:45 5-12配置DFS单向复制12:06 5-13DFS实现...

    深入解析Windows操作系统中文.part2.rar

    ■ Windows系统之父Jim Allchin亲自撰文推荐! ■ Windows NT首席设计师David N. Cutler亲自撰文推荐! ■ 深入解析Windows操作系统!彻底揭开Windows技术内幕! ■ Csdn、博客堂、博客园、《程序员》杂志鼎力推荐!...

    2019年全国职业院校技能大赛高职组“云计算技术与应用”赛项试题(样卷)

    为了公司生产系统安全高可用,同时能够统一存储、收集、管理、分析和挖掘这些海量数据,为实现系统弹性扩展、资源按需供给、促进信息技术和数据资源充分利用。该公司拟搭建安全的云计算平台,系统既要满足云网络、云...

    毕设源码-VB+ACCESS计算机等级考试管理系统(源代码+系统+答辩PPT).rar

    本资源是一个完整的VB+ACCESS计算机等级考试管理系统,包含了源代码、系统文件以及答辩PPT。该系统旨在提供一个高效、便捷的途径来管理计算机等级考试的各项事务,从考生报名到成绩查询,再到证书打印,一应俱全。 ...

Global site tag (gtag.js) - Google Analytics