Linux笔记 11
Linux
Linux 档案系统简介
1. 档案系统特性:索引式档案系统
- superblock:记录此 filesystem 的整体资讯,包括 inode/block 的总量、使用量、剩余量,以及档案系统的格式与相关资讯等;
- inode:记录档案的属性,一个档案占用一个 inode ,同时记录此档案的资料所在的 block 号码;
- block:实际记录档案的内容,若档案太大时,会占用多个 block 。
2. Linux的 Ext2 档案系统(inode)
- 档案系统一开始已将 inode 与 block 规划好了,除非重新格式化(或者利用 resize2fs 等指令变更档案系统大小),否则 inode 与 block 固定后就不再变动。
- Ext2 档案系统在格式化的时候基本上是区分为多个区块群组(block group)的,每个区块群组都有独立的 inode/block/superblock 系统。
- 在整体的规划当中,档案系统最前面有一个开机磁区(boot sector),这种开机磁区可以安装开机管理程式。
每个区块群组(block group)的六个主要内容:
data block
- data block 是用来放置档案内容资料的地方,在 Ext2 档案系统中所支持的 block 大小有 1K, 2K 及 4K 三种。
- 由于 block 大小的差异,会导致该档案系统能够支持的最大磁盘容量与最大单一档案容量并不相同。
Block 大小 |
1KB |
2KB |
4KB |
最大单一档案限制 |
16GB |
256GB |
2TB |
最大档案系统总容量 |
2TB |
8TB |
16TB |
Ext2 档案系统的 block 基本限制:
- 虽然 Ext2 已经能够支持大于 2GB 以上的单一档案容量,不够某些应用程序依然使用旧的限制,只能够捕捉到小于 2GB以下的档案;
- 原则上,block 的大小与数量在格式化完就不能够再改变了(除非重新格式化);
- 每个 block 内最多只能够放置一个档案的资料;
- 如果大于 block 的大小,则一个档案会占用多个 block 数量;
- 若档案小于 block,则该 block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。
inode table(inode 表格)
基本上,inode 记录的档案资料至少有底下这些:
- 该档案的存取模式(read/write/execute);
- 该档案的拥有者与群组(owner/group);
- 该档案的容量;
- 该档案建立或状态改变的时间(ctime);
- 最近一次的读取时间(atime);
- 最近修改的时间(mtime);
- 定义档案特性的 flag ,如 SetUID...;
- 该档案真正内容的指向(pointer);
inode的特色:
- 每个 inode 大小均固定为 128 bytes(新的 ext4 与 xfs 可设定到 256 bytes);
- 每个档案都仅会占用一个 inode ;
- 档案系统能够建立的档案数量与 inode 的数量有关;
- 系统读取档案时需要先找到 inode ,并分析 inode 所记录的权限与使用者是否符合,若符合才能够开始实际读取 block 的内容。
Superblock(超级区块)
Superblock 是记录整个 filesystem 相关资讯的地方。它记录的资讯主要有:
- block 与 inode 的总量;
- 未使用与已使用的 inode/block 数量;
- block 与 inode 的大小(block 为1,2,4K, inode 为 128bytes 或 256bytes);
- filesystem 的挂载时间、最近一次写入资料的时间、最近一次检验磁碟(fsck)的时间等档案系统的相关资讯;
- 一个 valid bit 数值,若此档案系统已被挂载,则 valid bit 为 0,若未被挂载,则 valid bit 为 1。
Filesystem Description(档案系统描述说明)
这个区块可以描述每个 block group 的开始与结束的 block 号码,以及说明每个区段(superblock, bitmap, inodemap, data block)分别介于哪一个 block 号码之间。
block bitmap(区块对照表)
- 当需要新增档案时,通过 block bitmap 可获知哪个 block 是空的。
- 当删除档案时,原本档案占用的 block 就会释放出来,此时在 block bitmap 中相对应到该 block 号码的标志就会修改成【未使用中】。
inode bitmap(inode 对照表)
功能和 block bitmap 类似,只是 block bitmap 记录的是使用与未使用的 block 号码,至于 inode bitmap 则是记录使用与未使用的 inode 号码。
dumpe2fs:查询 Ext 家族 superblock 资讯的指令
每个区段与 superblock 的资讯都可以使用 dumpe2fs 这个指令来查询。
CentOS 7 现在是以 xfs 为预设档案系统,无法使用 dumpe2fs来查询。
dumpe2fs [-bh] 装置档名
选项 |
参数 |
-b |
列出保留为坏轨的部分 |
-h |
仅列出 superblock 的资料,不会列出其他区段的内容 |
blkid
这个指令可以叫出目前系统有被格式化的装置
UUID:Linux对装置的定义码