基本功能
- 按照块来存储
- 使用inode进行索引
- 缓存热点文件
- 用文件夹来组织
- 用文件描述符来在内核记录使用情况
相关命令
# 格式化 分区文件系统 最大支持2T
fdisk -l
# 超过2T使用
parted
# 挂载 将文件系统挂载到目录下
mount unmount
硬盘文件系统
-
inode 与块的存储
- 块 硬盘分成相同大小的单元。一块的大小是扇区大小的整数倍,默认是 4K
- inode 文件的元数据和块的位置
-
间接块 extents(ext4)
i_block 保存成一棵树
-
inode 位图和块位图
为了提高寻找速度
-
文件系统整体格式
超级块: 对整个文件系统的情况进行描述
-
目录也是特殊的inode
-
软链接和硬链接
- 硬链接与原始文件共用一个 inode 的,但是 inode 是不跨文件系统的,每个文件系统都有自己的 inode 列表,因而硬链接是没有办法跨文件系统的。
- 软链接相当于重新创建了一个文件。这个文件也有独立的 inode,只不过打开这个文件看里面内容的时候,内容指向另外的一个文件
虚拟文件系统
- dentry (directory entry) 目录项 保存着诸如文件名、路径等信息
- inode 索引节点,保存具体文件的数据
- mount mount point mount root
文件缓存
-
缓存 I/O
大多数文件系统的默认 I/O 操作都是缓存 I/O。对于读操作来讲,操作系统会先检查,内核的缓冲区有没有需要的数据。如果已经缓存了,那就直接从缓存中返回;否则从磁盘中读取,然后缓存在操作系统的缓存中。对于写操作来讲,操作系统会先将数据从用户空间复制到内核空间的缓存中。这时对用户程序来说,写操作就已经完成。至于什么时候再写到磁盘中由操作系统决定,除非显式地调用了 sync 同步命令
- 带缓存的写入操作
- 用户主动调用 sync, 将缓存刷到硬盘上去,
- 当内存十分紧张,以至于无法分配页面的时候,
- 脏页已经更新了较长时间,时间上超过了 timer,需要及时回写
- 带缓存的写入操作
-
直接 IO
应用程序直接访问磁盘数据,而不经过内核缓冲区,从而减少了在内核缓存和用户程序之间数据复制。