title: Linux系统文件子系统
date: 2022-12-18 15:48:24
modify: 2022-12-18 16:48:43
author: wangjianfeng
tags: 001-computer-technology, OS, Linux
aliases:
Linux系统文件子系统
特此说明: 刘超的趣谈linux操作系统是比较重要的参考资料,本文大部分内容和图片来源于这个专栏。
1 数据&文件系统&存储介质
关键词: 文件系统、格式、索引区、缓存层、目录结构
理解: 对数据如何在存储介质上组织和存取访问的一套机制,这种抽象的概念是文件系统。
- 在文件系统上,需要维护文件的严格的格式,要通过 mkfs.ext4 命令来格式化为严格的格式。
- 每一个硬盘上保存的文件都要有一个索引,来维护这个文件上的数据块都保存在哪里。文件通过文件夹组织起来,可以方便用户使用。
- 为了能够更快读取文件,内存里会分配一块空间作为缓存,让一些数据块放在缓存里面。
- 在内核中,要有一整套的数据结构来表示打开的文件。
- 在用户态,每个打开的文件都有一个文件描述符,可以通过各种文件相关的系统调用,操作这个文件描述符。
2 相关命令行
# 查看设备信息
fdisk -l
# 分区
fdisk /dev/vdc
# 格式化
mkfs.ext4 /dev/vdc
# 挂载 `etc/fstab`
mount <设备名> <挂载点>
# 查看文件信息
ls -l
3 系统调用接口
open write lseek read close
stat fstat lstat
readdir closedir
....
4 内核实现机制
001、硬盘文件系统
# inode与数据块概念: 逻辑图
# inode位图与数据块位图概念: 如何检索空闲块
# 文件系统格式: 实际上如何存储大文件
002、虚拟文件系统
# 1. mount: do_mount->do_new_mount->vfs_kern_mount->mount_fs
register_filesystem(&ext4_fs_type); # ext4类型注册到内核
# 1. open:
**003、文件缓存
# 1. read: vfs_read->__vfs_read-->file_operations::read
# 2. write: vfs_write->__vfs_write-->file_operations::write
9 References
N/A