文件系统的作用就是在应用概念的文件和存储设备之间提供一个中间层,以使多个文件驻留在一个存储设备上,由文件系统来管理所有文件的存储。文件系统将每个存储设备化为一系列目录,每个目录含有若干文件。 块(block)分配 传统的 Unix 文件系统使用块分配机文件系统的作用就是在应用概念的文件和存储设备之间提供一个中间层,以使多个文件驻留在一个存储设备上,由文件系统来管理所有文件的存储。文件系统将每个存储设备化为一系列目录,每个目录含有若干文件。

块(block)分配
传统的Unix文件系统使用块分配机制,例如UFS,并且提供一个灵活有效的块分配策略(policy)。磁盘块在被使用时分配,就是说只为文件分配一个最小的文件系统块数,以保存存储空间。
当文件扩展时,从一个空闲块位图中分配块,所以有时块是随机分配的。随机分配会导致过多的磁盘搜寻,随后从文件系统读数据会导致磁盘机制搜寻文件扩展期间所分配的所有随机块位置。随机块分配可以通过块分配策略的优化来避免,它试图分配连续序列的块。
更小的块分配获得大的连续分配,大量减少了磁盘搜寻。然而,连续的文件系统块分配最终导致了文件系统中的文件块碎片,结果文件系统访问最终又会回到随机的本质。
块分配方案也要保存文件扩展时每个被分配的新块的位置信息,以及文件是否是每次一块的扩展。额外的磁盘I/O被要求读写文件系统块结构信息。文件系统块结构信息成为元数据(metadata)。文件系统元数据总是同步写入存储设备,所以对一个文件大小的改变需要等待每个元数据操作完成。因此,元数据操作极大降低了文件系统的整体性能。

范围(extent)分配
基于范围的文件系统每次按一大群来分配磁盘块,因此要强制进行顺序分配。一个文件被写入时,大量块在文件创建时被分配给文件;然后,可以进行大群或簇顺序块的写入。文件系统元数据在文件首次创建是写入;在块的第一个分配范围内的写不要求额外的元数据写,直到被分配下一个范围。
这种方法优化了磁盘搜寻方式,到簇的群化块写入允许文件系统提交对存储设备的更大的物理磁盘写入,节省了许多小SCSI转换的开销。图1比较了块分配和范围分配。我们可以看到,在块分配的文件中每个逻辑块都需要有一个块地址号,导致每个文件有许多的元数据。在范围分配方法中,每个接连的数据块范围只需有起始块号和长度就够了。所以包含有一些大范围块的文件只有少量的元数据。

范围分配的文件系统为顺序文件访问提供了更好的性能,因为他的顺序分配策略以及块聚集为更大的写。然而,对于正在用来作随机I/O的文件系统,范围文件系统的长处往往得不到发体现。
举个例子,如果我们想要通过一个基于范围的文件进行顺序读,只需读取起始块号和长度;然后可以继续读取此范围内的所有数据,这意味着在顺序读时只有很小的元数据读开销。相反,如果要以随机方法来读,就要先查询我们想要的每个数据块的块地址,这相当于必须要处理一个基于块的文件系统。

元数据日志
最常见的文件系统日志形式是元数据日志。文件系统要对它磁盘上的结构作改动时,使用几个无连接的同步写来完成这些操作。如果期间发生断电或其它故障,则文件系统的状态未知,必须对整个文件系统作一致性检查。
举个例子,如果在一个文件末尾加上一个块(block),就需要对告诉文件系统文件的每一块的位置信息的磁盘位图进行读、修改和重写,然后才能写入这个数据块。故障发生时,必须在系统引导时检查文件系统,文件系统不知道这个块的位图是否正确,也不知道崩溃期间哪个文件发生的改动。这种状态意味着要扫描整个文件系统,经常要花费几分钟,甚至几小时。
元数据日志文件系统在磁盘上有一个循环的只附加的日志域,可以用来记录每次磁盘事务的状态。任何磁盘结构改动前都要写一个目的改变(intent-to-change)记录到日志。然后才改变目录结构,完成后,此日志条目被标记为完成。由于文件系统的所有改动都记录在日志中,我们就可以通过查看日志来检查文件系统的一致性,而不必扫描整个文件系统。在挂载时,如果找到一个目的改变条目,而且它没有标记为完成,则检查那个块对应的文件结构,并在需要是进行调整。

这种日志方法已经在几个文件系统上成功实现,并成为SolarisUFS文件系统日志的基础。它为UFS在磁盘上保存文件系统结构,并且可以随时启动或禁止而无需改变磁盘上的数据。Veritas VxFS文件系统也使用元数据日志。
有一些文件系统将日志嵌在文件系统数据的相同分区内,还有一些文件系统则允许日志独立于文件系统。Solaris DiskSuite中非绑定的UFS日志允许日志和数据隔离开;Solaris 7中绑定的UFS日志则不。Veritas则只在你购买了Verista Aclearcase/" target="_blank" >ccelerator选装件时才能将日志单独放置。

数据和元数据日志
一些文件系统提供了一个选项以使文件数据和元数据都记录进日志。这种方法对小的同步写尤其有用,它会为每个应用write申请对磁盘不同部分的两个或更多的写(一个写数据,一个写日志)。通过将数据记入日志,可以避免二次搜寻和写入。数据首先写入日志,然后再放入文件系统。这种技术所作工作有两个:确保数据完整性直到(但不包括)最后的块写入,,同时帮助提高小的同步写的性能。Veritas VxFS文件系统有一个选装件来对数据和元数据都记日志。

日志结构的文件系统
传统的文件系统是按块分配的,设备块分配自一个空闲块位图。另一种替代的文件系统形式是日志结构的文件系统,它将整个文件系统作为一个日志来实现。日志结构的文件系统在每次块被写到一个文件时将数据块加到日志的末尾,进行时将以前写的块置为无效。这种方法允许每个文件被顺序写入;不管写的块顺序,因此提供了更快的写速度。

日志结构的文件系统用降低读性能的代价换来很高的写性能,同时也增加了复杂性。读性能性能经常由于块按照写时的顺序分配而变得更慢,因为这样可能会使文件以随机顺序在磁盘中分散放置。由于要增加一个单独的垃圾收集或清除程序来扫描文件系统、移除无效块,所以会增加复杂性。然而,需要一个复杂的缓存/查询机制来支持高效的查询,因为块是以随机顺序分配的,并且每个文件的块位置信息必须保存起来。
日志结构的文件系统在元数据密集环境中证明是高效的,但是还要被证明对数据密集的工作量更有效。注意日志结构的文件系统和文件系统日志的不同是重要的。日志结构的文件系统也叫做“随机写文件系统结构”(WAFL)。
Solaris目前没有日志结构的文件系统。

扩大和缩小文件系统
对在线存储管理的一个普通要求是有增大和缩小文件系统的能力。早期的文件系统不支持这种能力,因为那时的磁盘大小是固定的。如今通过卷管理可得到虚拟磁盘,因此可以改变底层设备的大小。如果不能使文件系统的大小扩大,就需要备份文件系统,再次用mkfs/newfs构造文件系统,然后恢复所有的文件系统数据。能够在线扩张大小的文件系统则无须进行这些步骤。Soalris UFS文件系统可以用mkfs 命令进行扩展,对挂载的文件系统要用 –M 选项,对未挂载的文件系统要使用 –G 选项。
我们有时不单要扩大文件系统,还可能需要缩小文件系统。比如,从一个设备收取一些空间分配给另一设备,就需要首先缩减这个文件系统,以便从这个正在被缩减的文件系统尾端移出一些被分配的文件块。

文件系统 扩大 缩小
基本的UFS Yes,使用mkfs -M No
VxFS Yes,使用fsadm Yes,使用fsadm
QFS Yes,使用growqfs No

LINUX文件系统介绍相关推荐

  1. Linux文件系统介绍:Ext、XFS、Btrfs

    作为 Windows 或 macOS 系统用户,人们一般不会去考虑他们的磁盘使用了什么文件系统,因为微软和苹果已经帮他们选定了 NTFS 和 APFS.而对于 Linux 用户,受益于自由开源软件,文 ...

  2. linux 文件系统 代码,Linux文件系统介绍

    本篇博文介绍一下Linux系统的文件系统, 由于Linux标准委员会制定了一个文件系统标准FHS, 文件系统层级标准, 规定Linux发行版应该创建哪些目录存储特定类型的文件. 根目录记为 / 一级目 ...

  3. 【Unix/Linux】文件系统介绍 入门

    文件系统是一个操作系统最重要的部分之一.下文以Linux为例介绍以下Unix操作系统的文件系统. Unix文件系统介绍 Unix中的文件类型 目录详述 重要的目录 主目录和工作目录.绝对路径名和相对路 ...

  4. Linux开发从入门到精通——基础篇 :1、计算机常识、Linux操作系统和文件系统介绍

    Linux开发从入门到精通--基础篇 :1.计算机常识.Linux操作系统和文件系统介绍

  5. Linux驱动入门(三)——源码下载阅读、分析和嵌入式文件系统介绍

    文章目录 从内核出发 获取内核源码 使用Git 安装内核源码 使用补丁 阅读Linux内核源码 Source Insight简介 阅读源码 内核开发的特点 无libc库抑或无标准头文件 GNU C 没 ...

  6. 获取系统信息3——proc文件系统介绍和使用

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 一.proc文件系统介绍 1.操作系统级别的调试 简单程序,可以单步调试:(多线程不行,linux内核不行) 复杂 ...

  7. Linux文件系统概述:硬盘驱动>通用块设备层>文件系统>虚拟文件系统(VFS)

    目录 一.概述 1. 硬盘驱动 2. 通用块设备层 General Block Device Layer 3. 文件系统 4. 虚拟文件系统(VFS) 二.存储介质 闪存(Flash Memory) ...

  8. linux文件2的权限,2_Linux_文件和权限处理命令

    三.Linux的常用命令 1.文件命名规范 1)除了/之外,所有的字符都合法,文件名中不能包含/符号 2)有些字符最好不用,如空格.制表符.退格符和字符@#$&() 3)避免使用.作为普通文件 ...

  9. Flash文件系统介绍和平台采用squashfs+ubifs原因

    Flash文件系统介绍和平台采用squashfs+ubifs原因 嵌入式系统与通用PC机不同,一般没有硬盘这样的存储设备而是使用Flash闪存芯片.小型闪存卡等专为嵌入式系统设计的存储装置.因此在嵌入 ...

最新文章

  1. 电信充q币短信怎么发_王者荣耀充值中心Q币充值IOS系统游戏点券的办法_云奇付Q币寄售...
  2. Extjs Window用法详解 3 打印具体应用,是否关掉打印预览的界面
  3. symbian 中自动寻找cmwap连接点,通杀uiq 2nd 3nd和s60 2nd 3nd 5nd
  4. 个人或结对项目 - 动态显示程序运算的过程
  5. Java SecurityManager getThreadGroup()方法与示例
  6. linux系统win,Windows10安装运行linux系统的方法
  7. MacBook取消自启动程序
  8. 带你了解关系网络在反欺诈领域的常见应用
  9. 深度学习(13):pointnet++论文翻译与学习
  10. ThinkPHP在前台模板格式化输出时间
  11. 触摸式计算机屏幕,触控屏笔记本好不好 触摸屏笔记本优缺点分析【详细介绍】...
  12. rm -rf 真是删库跑路的一把好手
  13. 自动化爬取网贷黑名单
  14. 读书笔记:重来 Rework
  15. 第三方网站不能调用微信公众平台里的图片了 显示此图片来自微信公众号平台未经允许不可引用...
  16. 计算机专业买笔记本有什么要求,笔记本电脑什么配置好?硬核选购指南来了!...
  17. c语言用星号输出大写字母H,如何在C语言中用星号或自定义字符打印方形图案
  18. 语音增强算法的概述[转]
  19. 仿网易新闻评论“盖楼”效果实现
  20. [linux] 命令对应英文全称

热门文章

  1. QT QML 在qml中自定义信号
  2. 【287】◀▶ arcpy 常用类说明
  3. ACM的fflush(stdin)的问题
  4. SimpleDateFormat使用详解——日期、字符串应用
  5. log4j+logback+slf4j+commons-logging的关系与调试
  6. Linux使用错误小结(CentOS)- yum更新软件失败
  7. 批量管理Linux服务器,命令行工具Omnitty
  8. vue中用的swiper轮播图的用法及github的地址
  9. r语言怎么做经验分布_R语言如何做马尔科夫转换模型markov switching model
  10. 2013年上半年全国高等学校(安徽考区)计算机水平考试试卷,2013年上半年全国高等学校(安徽考区)计算机水平考试试卷...