第七章 Linux磁盘与文件系统管理

7.1 认识Linux文件系统

Linux最传统的磁盘文件系统使用的是EXT2。物理组成可参考第零章,磁盘分区可参考第二章。

7.1.1磁盘组成与分区的复习

  • 扇区(Sector)为最小的物理存储单位,
  • 将扇区组成一个圆
  • @TODO

至于磁盘的文件名,所有实体磁盘的文件名都被模拟成/dev/sd[a-p]的格式。分区槽的文件名若以第一颗磁盘为例,则为/dev/sda[1-128]。除了实体磁盘外,虚拟机的磁盘通常为/dev/vd[a-p]格式。

若使用到软件磁盘阵列的话,还有/dev/md[0-128]的磁盘文件名。使用LVM时,文件名则为/dev/VGNAME/LVNAME等格式。

  • /dev/sd[a-p][1-128]:为实体磁盘的磁盘文件名;
  • /dev/vd[a-d][1-128]:为虚拟磁盘的磁盘文件名

7.1.2文件系统特性

磁盘分区完,还需要进行格式化(format),之后操作系统才能使用。每种操作系统设定的文件属性/权限并不同,因此需要格式化,之后才能为操作系统利用的:文件系统格式(filesystem)。

Windows98前的用FAT,Windows2000以后用NTFS,Linux的正统文件系统则为Ext2(Linux second extended file system,ext2fs)。默认情况下,Windows是不会认识Linux的Ext2。

传统磁盘与文件系统应用中,一个分区槽只能被格式化成一个文件系统。由于新技术的应用,例如LVM与软件磁盘阵列(softWare raid),这些技术可以将一个分区槽格式化为多个文件系统,也能将多个分区槽合成一个文件系统(LVM,RAID)。所以,现在我们说:一个可挂载的数据为一个文件系统而不是一个分区槽。

文件系统如何运作?@TODO

三个数据的意义如下:

  • superblock:记录此filesystem的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息。
  • inode:
  • block

文件系统先格式化出inode与block的区块,假设文件的属性与权限放置到inode4号,而此inode记录了文件数据的实际放置点为block区的2,7,13,15四个block块。这种数据存取方法称为索引式文件系统(indexed allocation)。

于索引式文件系统不同,还有FAT格式文件系统,U盘就是FAT格式。这种文件系统没有inode,所以不能一开始就读取出来所有的block,每个block号码都记录在前一个block中。

听说过[碎片整理]吧?需要碎片整理的原因是文件写入的block太过于离散,此时文件读取的效能将会很差。此时透过碎片整理将同一个文件所属的blocks汇整在一起,就能提高速度。

7.1.3Linux的EXT2文件系统(inode)

通过前面一小节我们知道filesystem里面含有inode/block/superblock等。标准的Linux文件系统Ext2就是使用这种inode为基础的文件系统。

文件系统一开始就将inode与block规划好了,除非重新格式化,否则就固定不再变动。如果仔细考虑下,如果文件系统高达数百GB时,将所有的inode与block放置在一起讲很不理智的决定,不易管理。

为此,Ext2文件系统在格式化时基本上是区分为多个区块群组(block group),每个区块群组都有独立的inode/block/superblock系统。类似军队建制。

整体规划中,文件系统最前面有一个启动扇区(boot sector),可以安装开机管理程序。这种设计很重要,如此就能将不同开机管理程序安装到个别的文件系统前端,而不用覆盖整颗磁盘唯一的MBR,如此才能制作多重引导。每个区块群组(block group)六个主要内容说明如下:

data block(资料区块)

@TODO

Ext2文件系统的block基本限制如下:

inode table

inode记录的文件数据至少有底下这些:

inode的数量大小也在格式化时就已经固定了,此外inode还有如下特色:

inode本身(128 bytes),里面有12个直接指向block号码的对照,1个间接,1个双间接,1个三间接。

所以文件系统将block格式化为1K大小时,能容纳最大文件为16GB。

Superblock(超级区块)

Superblock是记录整个filesystem相关信息的地方,记录信息主要有:

  • block与inode总量;

Superblock非常重要,@TODO。superblock信息可以用dumpe2fs指令来观察。

每个block group都可能含有superblock。

Filesystem Description(文件系统描述说明)

block bitmap(区块对照表)

inode bitmap(inode对照表)

dumpe2fs:查询Ext家族superblock信息的指令

7.1.4与目录树的关系

我们已经知道,每个文件都会占用一个inode,且可依据文件内容大小来分配多个block给文件使用。第五章中权限的说明中我们知道目录的内容在记录文件名,一般文件才是实际记录数据内容的地方。那么目录与文件在文件系统中如何记录数据呢?

目录

文件

目录树读取

发布了593 篇原创文章 · 获赞 57 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/ThePromonkeyOf_HeLuo/article/details/93173957
今日推荐