Linux文件系统基础

Linux文件系统基础

文件和目录

文件是以单个名称在计算机上存储的信息集合.

Linux文件的分类

ls -l 列表开头字符代表当行文件类型

列表如下

文件类型 类型符号 描述
普通文件 - 指ASCII文本文件,二进制可执行文件,以及硬链接文件
块设备文件 b 块输入/输出设备文件
字符设备文件 c 原始输入输出设备文件,每次IO操作仅送一个字符
目录文件 d 包含若干文件或子目录
符号链接文件 l 只保留了所指向文件的地址,而不是文件本身
管道文件 p 用于进程间通信的管道文件
套接字文件 s 套接字是方便进程之间通信的特殊文件.与管道文件不同的是,套接字能通过网络连接使不同的计算机的进程之间进行通信

Linux 目录结构

目录是一类特殊的文件,利用它可以构成文件系统的分层树型结构.如同普通文件那样,目录

/={binbootdevetchome libmntrootusrproc.... /=\left\{ \begin{matrix} bin \\ boot \\ dev \\ etc \\ home \\\ lib \\ mnt \\ root \\ usr \\ proc \\ .... \\ \end{matrix} \right. /=⎩ ⎨ ⎧binbootdevetchome libmntrootusrproc....

目 录 功能说明
/etc 存放系统配置文件
/bin 常用命令存放目录
/sbin 存放指令文件(root)
/home 用户主目录
/boot 包含内核和启动文件
/dev 设备文件存放目录
/usr 应用程序放置目录
/mnt 挂载目录
root root账号主目录
proc process缩写,主要描述系统进程详细信息
lib 常用库文件的目录
lost+found 在该目录中可找到一些误删除的文件,并恢复它们

文件系统

1)磁盘文件系统

2)网络文件系统

3)专用/虚拟文件系统

文件系统体系结构

|--------------User Applications

|--------------GNU C Library

-----------------------------------------------------------------------------以上是User space 以下Kernel space

|--------------system call interface

|Inode------| -------Virutal file system------|--------Directory cache

|--------------Individual file system

|--------------Buffer cache

|--------------Device Drivers

用户空间包含一些应用程序和GNU C 库 glibc 它们为文件系统调用提供了用户接口.系统调用接口的作用就像是交换器,它将系统谳用从用户空间发送到内核空间中适当端点.

VFS(Virtual File Systemc)是底层文件系统的主要接口,这个组件导出一组接口,然后将它们抽象到各个文件系统,各个文件系统的行为可能差异很大.有两个针对文件系统对象的缓存(inode和dentry).它们会缓存最近使用过的文件系统对象

每个文件系统实现导出一组通用接口,供VFS使用,缓冲区缓存会缓存文件系统和相关设备之间的请求.例如,对底层设备驱动程序的读写请求会通缓冲区缓存来传递.这就允许在其中缓存请求,从而减少访问物理设备的次数,加快访问速度.

Linux 系统允许众多不同种类的文件系统共存,通过使用一套文件I/0系统调用,即可对Linux中的任意文件进行操作,而无需考虑其所在的文件系统具体格式.此外,Linux还支跨文件系统的文件操作,即对文件的操作可以跨文件系统进行.

LInux文件系统分为三个部分,第一部分Virtual File System(VFS,虚拟文件系统),它是Linux文件系统对外的接口,任何要使用文件系统的程序都必须经由这层接口来使用它.另外两部分属于文件系统的内部实现,分别Cahce和真正的文件系统.

虚拟文件系统是Linux内核中的一个软件抽象层,它一方面用于给用户空间的程序提供文件系统接口,另一方面还提供了内核中的一个抽象功能,它通过一些数据结构及其方法向实际的文件系统提供接口,实现不同文件系统在Linux中共存.系统中所有文件系统不但依赖于VFS共存,同时也要依靠VFS协同工作.

为了能支持各种文件系统,VFS定义了所有文件系统都必须支技基本的,概念上的接口和数据结构,如超级块,节点,文件操作函数入口等.换句话说,一个实际的文件系统要想被 LInux支持,就必须提供一个符合VFS标准接口,这样才能与VFS协同工作.VFS不是实际的操作系统,它只是一种专换机制,仅存在于内存中,不存在于任何外存空间.

制作根文件系统

有BusyBox,buildroot.

相关推荐
律宏阔2 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔2 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴2 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千2 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei372 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei372 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei372 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
GeW2 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux
百万蹄蹄向前冲2 小时前
双端同步!云服务器装最新Node.js v26.10全过程追踪
服务器·人工智能·node.js
GeW2 小时前
工业场景中的Linux与数据库选型:高端化转型的技术底座
linux