1 格式化后才能使用文件系统,格式化以一个分区为基础,经过格式化就把磁盘分为多个 block 了
2 格式化为分为 superblock, inode , data block等,他们的作用为:
即
超级快就来记录整个文件系统,包括这个文件系统的 inode/block 的总量、剩余量等
inode 即一个文档拥有一个inode,记录文档属性及其拥有的 block
block 记录实际的文档内容,大小可以为 1K 2K 4K
3 整个文件系统格式化时,不是把所有的 inode和block 都放在一个大组中,而是分成许多小组,每个小组有其 block 块的开始与结束
如上图所示,其中每个分区的最前面都预留了一个 BootSector,这是用来双启动系统的
每个Group 分为, superblock, inode table, data block, inode bitmap, data block bitmap
虽然有多个 Group 但 superblock 只有一个,或者是第一个 Group的备份。
其中 inode bitmap 记录这个组中还有哪些 inode 没有使用, block bitmap 记录还有哪些 block没有使用。
4 目录
目录只占用一个 inode 节点, 且目录的 block 中记录的是“此目录下的文档名及文档名所对应的 inode 号”,目录也是占用硬盘空间的,它占用的空间可以使用
ll -d 目录名来查看,它所占用的空间都是 1024 byte 的倍数,因为 block 是1,2,4中大小的。
因为目录的 inode 不记录其目录下的文档名,其目录下的文档名是记录在 block中的,所以如果要修改目录下的文档名,则应该拥有对此目录的“w” 权限。
在鸟哥的系统上面与 /etc/passwd 有关的目录与档案资料如上表所示,该档案的读取流程为(假设读取者身份为 vbird 这个一般身份使用者):
5 文件系统的不一致状态
当写入数据到一个文件时,刚刚写好 inode table 和 data blocks 但没有来得及更新 inode bitmap, block bitmap, superblock 那么这些已经更改过的 block 就没有记录在 bitmap中,这时就存在不一致状态了。
为了避免这种不一致就产生了日志文件,ext3就具有这个功能,日志所做的工作是:
1 准备写入前做记录, 2 写入中做记录, 3 写好后做记录,
这样即使写文档时出错,也能通过日志恢复,而不用全区查找,进行比对。
6 我们知道如果要对硬盘上的数据进行操作,要先读入内存, 为了使对内存的修改写到硬盘中,应该使用 sync命令。
7 如果我们要读一个文件时才从硬盘上加载,这样就会降低速度,为了提高速度 Linux 在启动时把常用的文档调入到内存,这也就是为什么 Linux的内存总是用完的原因。
8 用ls -ild / /. /.. 查看一下,会发现 inode 都是2, 同时这三个目录也在一个挂载点内,所以这三个目录指的就是同一个目录,也就是说 / 目录的上一级目录就是它本身。
9 linux支持的文件系统
10 VFS (Vritual filesystem)
Linux上层是通过VFS访问底层的文件系统的。