linux-开发与管理 P7 文件系统
文件目录
文件简介
文件是一个具有符号名字的一组相关联元素的有序序列
系统和用户都可以将具有一定独立功能的一个程序模块、一组数据或一组文字命名为一个文件,在计算机里看见的东西都叫文件
文件是以单个名称在计算机上存储的信息集合,文件可以是文本文档、图片、程序等
文件分类
在Linux系统下,文件不是以后缀名来区分文件的类型
在Linux系统中每一种文件的类型都用一个字符进行标识,主要有7种类型,可以简单地记忆为b、c、d、-、l、p、s
文件类型 | 类型符号 | 描述 |
---|---|---|
普通文件 | - | 值ASCII文本文件、二进制可执行文件,以及硬链接文件 |
块设备文件 | b | 块输入/输出设备文件 |
字符设备文件 | c | 原始输入/输出设备文件,每次I/O操作仅送一个字符 |
目录文件 | d | 包括若干文件或子目录 |
符号链接文件 | l | 只保留了所指向文件的地址,而不是文件本身 |
管道文件 | p | 用于进程间通信的管道文件 |
套接字文件 | s | 套接字是方便进程之间通信的特殊文件。与管道文件不同的是,套接字能通过网络连接使不同计算机的进程之间进行通信 |
目录结构
目录是一类特殊的文件,利用它可以构成文件系统的分层树型结构
1.i节点(Inode,全称Index Node,即索引节点)号是检索i节点表的下标,i节点中存放有文件的状态信息
2.文件名是给一个文件分配的文本形式的字符串,用来标识该文件
Linux文件系统采用带链接的树型目录结构,即只有一个根目录,其中含有下级子目录或文件的信息;子目录中又包含有更下级的子目录或者文件的信息。这样一层层的延伸下去,构成了一棵倒置的树
常用的根目录下文件功能说明
目录 | 功能说明 |
---|---|
/etc | 存放系统配置文件 |
/bin | 常用命令存放目录 |
/sbin | 存放指令文件 |
/home | 用户主目录,新建用户后,该用户的源文件默认建立在此目录下 |
/boot | 包含内核和启动文件 |
/dev | 设备文件存放目录 |
/usr | 应用程序放置目录 |
/mnt | 挂载目录 |
/root | root用户主目录 |
/proc | process的缩写,主要描述系统进程的详细信息 |
/lib | 常用库文件的目录 |
/lost+found | 在该目录中可找到一些误删除或丢失的文件,并恢复它们 |
文件系统
文件系统指文件存在的物理空间,在Linux系统中,每个分区都有一个文件系统
由于系统已将Linux文件系统的所有细节进行了转换,所以Linux核心的其他部分及系统中运行的程序将看到统一的文件系统
1.磁盘文件系统:指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列
2.网络文件系统:是一种可以远程访问的文件系统
3.专有/虚拟文件系统:不驻留在磁盘上的文件系统
文件系统体系结构
结构简介
用户空间包含一些应用程序和GNU C库,它们为文件系统调用提供了用户接口
VFS(Virtual File System)是底层文件系统的主要接口;这个组件导出一组接口,然后将它们抽象到各个文件系统,各个文件系统的行为可能差异很大。有两个针对文件系统对象的缓冲(inode和dentry),它们会缓存最近使用过的文件系统对象。
Linux系统允许众多不同种类的文件系统共存;通过使用同一套文件I/O系统调用,即可对Linux中的任意文件进行操作,而无需考虑其所在文件系统的具体格式
Linux文件系统分为三部分,第一部分是Virtual File System(VFS 虚拟文件系统),它是Linux文件系统对外的接口,任务要使用文件系统的程序都必须经由这层接口来使用它;另外两部分是属于文件系统的内部实现,分别是Cache和真正的文件系统
为了能支持各种文件系统,VFS定义了所有文件系统都必须支持基本的、概念上的接口和数据结构;一个实际的文件系统要想被Linux支持,就必须提供一个符合VFS标准的接口,这样才能与VFS协同工作
BusyBox根文件
BusyBox是很多标准Linux工具的一个单个可执行实现;BusyBox包含了一些简单工具,还包含一些更大、更复杂的工具
根文件系统首先是一种文件系统,但是相对于普通的文件系统,它有特殊之处;这特殊之处在于,它是内核启动时所挂载的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行