磁盘与文件系统管理

1.文件系统
windows 98 以前的微软操作系统主要利用的文件系统是 FAT (或 FAT16)
windows 2000 以后的版本有所谓的 NTFS文件系统
至于 Linux 的正统文件系统则为 Ext2 (Linux second extended file system, ext2fs)这一个

一个分区槽就是只能够被格式化成为一个文件系统,所以我们可以说一个 filesystem 就是一个 partition。但是由于新技术的利用,例如我们常听到的 LVM 与软件磁盘阵列(software raid), 这些技术可以将一个分区槽格式化为多个文件系统(例如 LVM),也能够将多个分区槽合成一个文件系统(LVM, RAID)! 所以说,目前我们在格式化时已经不再说成针对 partition来格式化了, 通常我们可以称呼一个可被挂载的数据为一个文件系统而不是一个分区槽

文件系统通常会将文件
实际内容和属性这两部份的数据分别存放在不同的区块,权限与属性放置到inode 中,至于实际数据则放置到 data block 区块中。 另外,还有一个超级区块 (superblock) 会记录整个文件系统的整体信息,包括 inode 与 block 的总量、使用量、剩余量等。

 superblock:记录此 filesystem 的整体信息,包括 inode/block 的总量、使用量、剩余量, 以及文件系统的
格式与相关信息等;
 inode:记录文件的属性,一个文件占用一个 inode,同时记录此文件的数据所在的 block 号码;
 block:实际记录文件的内容,若文件太大时,会占用多个 block 。
通过iNode读取block数据,这种数据存取的方法我们称为**索引式文件系统(indexed allocation)
与之对比的有随身碟使用的文件系统一般为 FAT 格式。FAT 这种格式的文件系统并没有 inode 存在,所以 FAT 没有办法将这个文件的所有 block 在一开始就读取出来。每个 block 号码都记录在前一个 block 当中,这个文件系统没有办法一口气就知道四个 block 的号码,他得要一个一个的将 block 读出后,才会知道下一个 block 在何处
常常会听到所谓的
『碎片整理』**吧? 需要碎片整理的原因就是文件写入的 block 太过于离散了,此时文件读取的效能将会变的很差所致。 这个时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起,这样数据的读取会比较容易啊! 想当然尔,FAT 的文件系统需要经常的碎片整理一下,那么 Ext2 是否需要磁盘重整呢?由于 Ext2 是索引式文件系统,基本上不太需要常常进行碎片整理的。但是如果文件系统使用太久,常常删除/编辑/新增文件时,那么还是可能会造成文件数据太过于离散的问题,此时或许会需要进行重整一下的。 不过,老实说,鸟哥倒是没有在 Linux 操作系统上面进行过 Ext2/Ext3 文件系统的碎片整理说!似乎不太需要啦!^_

filesystem 里面可能含有的 inode/block/superblock 等。标准的 Linux 文件系统 Ext2 就是使用这种 inode 为基础的文件系统。

在这里插入图片描述
1.1data block
 原则上,block 的大小与数量在格式化完就不能够再改变了(除非重新格式化);
 每个 block 内最多只能够放置一个文件的数据;
 承上,如果文件大于 block 的大小,则一个文件会占用多个 block 数量;
 承上,若文件小于 block ,则该 block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。
在 Ext2 文件系统中所支持的 block 大小有 1K, 2K 及4K 三种而已。在格式化时 block 的大小就固定了,且每个 block 都有编号,以方便 inode 的记录
啦。 不过要注意的是,由于 block 大小的差异,会导致该文件系统能够支持的最大磁盘容量与最大
单一文件容量并不相同。
由于每个 block 仅能容纳一个文件的数据而已,因此如果你的文件都非常小,但是你的 block 在格式化时却选用最大的 4K 时,可能会产生一些容量的浪费喔,如果 block 较小的话,那么大型文件将会占用数量更多的 block ,而 inode 也要记录更多的 block 号码,此时将可能导致文件系统不良的读写效能。在您进行文件系统的格式化之前,请先想好该文件系统预计使用的情况。我的数值模式仿真平台随便一个文件都好几百 MB,那么 block 容量当然选择较大的
在这里插入图片描述
在这里插入图片描述
Superblock 是非常重要的,因为我们这个文件系统的基本信息都写在这里,因此,如果 superblock 死
掉了, 你的文件系统可能就需要花费很多时间去挽救啦!一般来说, superblock 的大小为 1024bytes。
相关的 superblock 讯息我们等一下会以 dumpe2fs 指令来呼叫出来观察喔!
此外,每个 block group 都可能含有 superblock 喔!但是我们也说一个文件系统应该仅有一个
superblock 而已,那是怎么回事啊? 事实上除了第一个 block group 内会含有 superblock 之外,后
续的 block group 不一定含有 superblock , 而若含有 superblock 则该 superblock 主要是做为第一
个 block group 内 superblock 的备份咯,这样可以进行 superblock 的救援呢
在这里插入图片描述
经过上面的说明你也应该要很清楚的知道 inode 本身并不记录文件名,文件名的记录是在目
录的 block 当中。 因此在第五章文件与目录的权限说明中, 我们才会提到『新增/删除/更名文件名
与目录的 w 权限有关』的特色!那么因为文件名是记录在目录的 block 当中, 因此当我们要读取
某个文件时,就务必会经过目录的 inode 与 block ,然后才能够找到那个待读取文件的 inode 号码,
最终才会读到正确的文件的 block 内的数据。

  那么如果是新建一个文件或目录时,我们的文件系统是如何处理的呢?

这个时候就得要 block bitmap 及 inode bitmap 的帮忙了!假设我们想要新增一个文件,此时文件系
统的行为是:

  1. 先确定用户对于欲新增文件的目录是否具有 w 与 x 的权限,若有的话才能新增;
  2. 根据 inode bitmap 找到没有使用的 inode 号码,并将新文件的权限/属性写入;
  3. 根据 block bitmap 找到没有使用中的 block 号码,并将实际的数据写入 block 中,且更新 inode 的 block
    指向数据;
  4. 将刚刚写入的 inode 与 block 数据同步更新 inode bitmap 与 block bitmap,并更新 superblock 的内容。
    一般来说,我们将 inode table 与 data block 称为数据存放区域,至于其他例如 superblock、 block
    bitmap 与 inode bitmap 等区段就被称为 metadata (中介资料) 啰,因为 superblock, inode bitmap 及
    block bitmap 的数据是经常变动的,每次新增、移除、编辑时都可能会影响到这三个部分的数据,因
    此才被称为中介数据的啦。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值