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.

相关推荐
晴天¥10 小时前
计算机网络-Linux配置-DNS解析/为什么会出现ping: www.baidu.com: 未知的名称或服务
linux·运维·计算机网络
代码游侠10 小时前
应用——Linux FrameBuffer图形显示与多线程消息系统项目
linux·运维·服务器·开发语言·前端·算法
Caitlin_lee_10 小时前
计算机网络期末复习SCAU-第六章
运维·服务器·计算机网络
深圳市恒讯科技10 小时前
如何从损坏的Windows或Linux VPS中恢复文件
linux·运维·windows
gravity_w10 小时前
vscode配置SSH远程服务器
服务器·经验分享·vscode·ssh
neo_will_mvp10 小时前
通过commit创建镜像
linux·运维·服务器
开发者导航10 小时前
【开发者导航】完全免费且灵活的域名注册与托管平台:FreeDomain
服务器·程序人生·开源软件
go_bai10 小时前
生产消费模型-简洁线程池
linux·c++·笔记
Knight_AL10 小时前
深入解析数据库四大事务隔离级别及其实际应用
服务器·数据库·oracle