linux文件系统
文件系统特性 索引式文件系统
格式化的作用 使操作系统能够利用特定的文件系统格式进行操作
新技术LVM与磁盘阵列 可以将一个分区格式化为多个文件系统 也可以将多个分区合成一个文件系统
linux中文件的权限rwx和文件属性owner group time等分别放在不同的区块 权限和属性放置到inode中,至于实际的文件数据则放置到datablock区块中 还存在一个超级区块superblock会记录整个我呢间系统的整体信息 包括inode与block的总量、 使用量 剩余量等等。
简略说明
superblock记录文件系统的真题信息 包括所有的inode/block 的总量 使用量等的统计信息
inode 记录文件的属性 一个文件占用一个inode 同时记录文件的数据的block号
block 实际记录文件的内容 如果文件太大会占用多个block
MBR 一块硬盘有一个MBR 引导区块
boot sector 引导区域 整个文件系统前面有一个启动扇区 此扇区可以安装开机管理程序 例如grub Lilo等等 如此可以将不同的开机管理程序安装到个别的文件系统的最前端 而不用覆盖整个硬盘的唯一的MBR 所以才会有多重引导的环境
datablock 数据区域 block的大小决定最大单一文件的大小和最大文件系统总容量的大小 】
格式化之后不能再改变
每个block内最多只能放置一个文件的数据
如果文件大于block的大小 则此文件会占用多个block
如果文件小于block的大小 则block的剩余容量不能再被使用了
inode table inode 表格内容如下
该文件的存取模式 读 写还是执行
文件的owner group
文件的容量
文件建立或状态改变的时间ctime status-time
文件最后读取的时间 atime access-time
文件最后修改的时间 mtime modify-time
文件特性 flag 例如setuid
文件真正内容的指向 pointer 指向内容的指针
每个inode大小固定为128字节
每个文件仅仅会占用一个inode
所以文件系统能够建立的文件数量与inode的数量有关
系统读取文件时先找inode 并且分析inode表中的权限与用户是否符合 如果符合才能开始实际读取block的内容 即读取文件的真实数据
inode与block的关系如下 分为4种不同的类型
superblock 超级区块 一般大小为1024字节
记录整个filesystem相关信息的地方 没有superblock 就不会有这个filesystem
记录的主要信息有:
block与inode的总量
未使用与已使用的inode/block数量
block与inode的大小
文件系统的挂载时间 最近一次写入数据的时间 最近一次检验磁盘fsck的时间等文件系统 的先骨干信息
一个vllid bit数值 如果文件系统挂载 则此值为0 否则为1
一般的一个文件系统仅有一个superblock 如果后续的block group含有superblock 那么也是第一个superblock的 备份 达到救援的目的
filesystem description 文件系统描述说明
区域描述每个block group 的开始与结束的block号码 以及说明每个区域 superblock bitmap inodemap datablock 分别介于哪个block号码之间 可以通过dumpefs来观察
block bitmap 区块对照表 记录哪些block是空的 包括删除文件后释放的block号码
inode bitmap inode对照表 对应于block bitmap 记录已经使用的block号码
dumpe2fs b 列出保留为坏磁道的部分
h列出superblock的数据 仅仅
df 列出当前挂载的装置
与目录树的关系
建立一个目录时 文件系统会分配一个inode与至少一块block给该目录 其中inode记录该目录的相关权限与属性 并记录分配到那块block号
inode本身不记录文件名 文件名的记录是在目录的block中
举例 系统读取 /etc/passwd文件的过程
ll -di / /etc /etc/passwd
2 * * /
1912 ** /etc
1913 ** /etc/passed
前面的数字分别为目录文件的inode号
如果用普通用户身份访问文件的方式
1 /的inode
通过挂载点的信息找到 inode 为2
2 /的block块 实际文件的存储位置
通过1步骤可以得到block的号码 并且找到该内容有etc目录的inode号为1912
3 /etc/的inode
读取1912号 inode 得知 普通用户具有rx的权限所以可以读取/etc/的block的内容
4 /etc/的block
通过3 可以取得block号 并找到该内容有passwd文件的inode号码 1913
5 /etc/passwd 的inode
读取1913 得知有r的权限 所有可以读取passwd的所属block的内容
6. passwd的block的内容读取
LINUX文件系统的运行 文件系统的异步处理 在文件加载到内存后 如果文件有改动 系统会随时将文件写入到硬盘 而不是等到最后文件修改完成后 统一写入到硬盘中
可以手动利用sync指令来强迫写入硬盘
挂载点的意义 mount point
每个文件系统都有独立的inode block superblock 等信息 将文件系统与目录树相结合的动作我们称为挂载
挂载点一定是目录 该目录为进入该文件系统的入口 因此必须要挂载到某个目录后 才能够使用该文件系统
系统通过VFS虚拟文件系统来调用各种不同的文件系统
文件系统的简单操作