文件系统特性

来源:互联网 发布:矩阵没有分配律 编辑:程序博客网 时间:2024/06/02 02:03

我们知道磁盘分区完毕后还需要进行格式化(format),之后操作系统才能够使用这个分隔槽。为什么要进行格式化呢?这是因为每种操作系统所设定的文件属性/权限并不相同,为了存放这些档案所需的数据,因此就需要将分隔槽进行格式化,所以成为操作系统能够利用的文件系统。

由此,我们也能够知道,每种操作系统能够使用的文件系统并不相同。举例来说,windows98以前的微软操作系统主要利用的文件系统是FAT,windows2000以后版本有所谓的NFTS文件系统,至于linux的正统文件系统则由Ext2(Linux second extended file sysytem,ext2fs)着一个。此外,在默认情况下,windows操作系统只是不会认识linux的Ext2的。

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

那么文件系统如何运作呢?这与档案系统的档案数据有关。较新的操作系统的档案数据除了档案的实际内容外,通常含有非常多的属性,例如linux操作系统的恶档案权限(rwx)与文件属性(拥有者,群组,时间参数等)。文件系统通常会将这两部分的数据分别放在不同的区块,权限与属性放在inode中,至于实际数据则放在data block区块中。另外,还有一个超级区块(superblock)会记录整个文件系统的整体信息,包括inode与block的总量,使用量,剩余量等。

每个inode与block都有编号,而每个档案都会占用一个inode,inode内则由档案数据放置的block号码。因此,我们可以知道,如果能够找到档案的inode的话,那么就会自然知道这个档案所放置数据的block号码,当然也就能够读出该档案的实际数据了。这个时比较有效率额做法,因为如此一来我们的磁盘就能够在段时间内读取出全部的数据,读写的效能比较好。

我们将inode与block区块用图解来说明一下,如下图所示,文件系统先格式化inode与block的区块,假设某一个档案的属性与权限是放置到inode4,而这个inode记录了档案数据的实际放置点为2,7,13,15这四个block号码,此时我们的操作系统就能够据此来排列磁盘的阅读顺序,可以一口气将四个block内容读取出来。

这里写图片描述

这种数据存取方法我们称为索引式文件系统(indexed allocation).那么没有其他惯用文件系统可以比较以下阿?有的,那就是我们惯用的随身碟(闪存),随身碟使用的文件系统一般为FAT格式,FAT这种格式的文件系统并没有inode存在,所以FAT没有办法将将这个档案的所有block在一开始就读取出来。每个block号码都记录在前一个blcok当中,他的读取方式有点像底下这样的:

这里写图片描述

上图中我们假设档案的数据依序写入1->7->4->15这四个block号码中,但这个文件系统没有办法一口气将知道block的号码,他的要一个一个的将block读取出来,才会知道下一个block在何处。如果同一个档案数据写入block太分散,则我们的磁盘读取头无法将磁盘转一圈就读取道所有的数据,因此磁盘就会多转几圈才能完整的读取到这个档案的内容。

常常听到所谓的碎片整理吧?需要碎片整理的原因就是档案写入block过于离散了,此时档案读取的效能将会变得很差,这个时候你可以透过碎片整理将同一个档案所属的block汇聚在一起,这样读取数据就会比较方便,想当然了,FAT系统需要三不五时的碎片整理以下,那么EXT2是否需要磁盘重整呢?

由于EXT2是索引式文件系统,基本上不太需要常常进行碎片化整理的。但是文件系统使用太久,常常删除/编辑/新增档案时,那么还是可能会造成档案数据太过离散的问题。

0 0
原创粉丝点击