linux随笔系列6----文件系统
q1: 文件系统类型有那么多,那么linux如何管理和认知它们的呢?
整个 Linux 认识的 filesystem 其实都是 VFS 在进行管理,我们使用 者并不需要知道每个 partition 上头的 filesystem 是什么~ VFS 会主动的帮我们做好读取的动作。如下图所示
EXT2
Ext2 文件系统中所支持的 block 大小有 1K, 2K 及 4K
Block 大小 | 1KB | 2KB | 4KB |
---|---|---|---|
最大单一文件限制 | 16GB | 256GB | 2TB |
最大文件系统总容量 | 2TB | 8TB | 16TB |
block还有什么限制?
原则上,block 的大小与数量在格式化完就不能够再改变了(除非重新格式化);
每个 block 内最多只能够放置一个文件的数据;
如果文件大于 block 的大小,则一个文件会占用多个 block 数量;
若文件小于 block ,则该 block 的剩余容量就不能够再被使用了(磁盘空间会浪费)。
-
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 bitmap (区块对照表)
block bitmap 记录的是使用与未使用的 block 号码
-
inode bitmap (inode 对照表)
inode bitmap 记录使用与未使用的 inode 号码
-
Inode table
-
该文件的存取模式(read/write/excute);
-
该文件的拥有者与群组(owner/group);
-
该文件的容量;
-
该文件建立或状态改变的时间(ctime);
-
最近一次的读取时间(atime);
-
最近修改的时间(mtime);
-
定义文件特性的旗标(flag),如 SetUID...;
-
该文件真正内容的指向 (pointer);
-
q1:文件如果很大,inode 哪有这么多可记录的信息?
我们的系统很聪明的将 inode 记录 block 号码的区域定义为 12 个直接,一个间接, 一个双间接与一个三间接记录区
xfs
xfs 文件系统在资料的分布上,主要规划为三个部份,一个资料区 (data section)、一个文件系统活动登录区 (log section)以及一个实时运作区 (realtime section)
q1:磁盘分区和文件系统有啥关系?