Linux学习-文件系统

正在学习Linux,记录一下学习历程。奋斗


什么是文件

文件:一个有名称的数据集合

文件是一个源,有一个名称,可以从中读取数据。或是任意目标,有一个名称,可以向其中写入数据。

不仅指像磁盘文件那样的数据存储库,还指任意的物理设备(如:键盘(输入源),显示器(输入目标))。

还有不存在物理实体的文件,也接受输入或产生输出,从而提供具体的服务。

程序可以使用简单的过程从任意的输入源读取数据,向任意的输出源写入数据。


文件类型

普通文件,目录,伪文件

普通文件

包含数据,位于某种类型的存储设备上(如磁盘,CD,DVD,闪存)

普通文件有两种类型:文本文件,二进制文件

文本文件:包含的数据行由可显示的字符(字母,数字,标点符号,空格,制表符)和每行末尾的新行字符构成。

用于存储文件数据。包括纯文本,shell脚本,源程序,配置文件,HTML文件。

二进制文件:包含非文本数据,这种类型的数据只有在执行或者由其他程序解释时才有意义。

包括可执行程序,对象文件,图像,音乐文件,视频文件,电子表格,数据库等。

目录

不存放常规数据,用来组织,访问其他文件。驻留在某种类型的存储设备上。

目录中包含文件,文件也可以是目录,这样就可以按照层次结构系统组织文件。

整个文件系统就是大的层次结构树。

伪文件

不用来存储数据,本身不占用任何空间。是文件系统的一部分,并按目录进行组织。

目的:提供一种服务,采取和常规文件相同的访问方式进行访问。

多数情况下,伪文件用来访问内核(操作系统的核心部分)提供的服务。

类型:设备文件,命名管道,proc文件

设备文件:也称特殊文件,是物理设备的内部表示,包括计算机和网络中的每个设备都可以当作特殊文件来访问。如键盘,显示器,打印机,磁盘驱动器。

命名管道:管道功能的一个扩展,经一个程序的输出连接到另一个程序的输入上。

proc文件:运行访问内核中的信息。

伪文件的详细介绍:点击打开链接



文件系统是什么

在Linux文件系统中,目录基于一个被称为”根目录“的主目录组织成树形结构。

文件系统使用目录和子目录组织文件。

目录并不存放实际的文件,它指包含定位文件所需的信息。

文件系统的任务是存储和组织数据,并向用户和程序提供数据的访问功能。

/是父目录与子目录之间的分界符,根目录省略名称。


挂载文件系统

每个存储设备都有自己的本地文件系统,其目录和子目录按照标准组织成树。

在访问本地文件系统时,它的树必须附加在主树上。

挂载:将小型文件系统的根目录连接到主文件系统中的特定目录上

挂载点:小文件系统在主树中附加到的目录

卸载:断开文件系统

作为启动过程的一部分,系统每次启动时,都会自动挂载一些本地文件系统。

当需要手动挂载一个设备时,使用mount程序,卸载时使用umount程序。

储存设备类型:固定介质,可移动介质

固定介质:永久附属于计算机(如:硬盘驱动器)

可移动介质:在系统运行时可以改变(如:CD,DVD,软盘,磁带,闪存,存储卡)

通常将固定介质挂载在/mnt,将可移动介质挂载在/media


目录漫游
漫游根目录

顶级目录:根目录下的子目录

目录 内容
/bin 基本程序

/boot

启动系统时所需的文件
/dev 设备文件
/etc 配置文件
/home 用户的home目录

/lib

基本共享库,内核模块
/lost+found 由fsck恢复的受损文件
/media 可移动介质的挂载点
/mnt 固定介质挂载点
/opt 第三方应用软件(可选软件)
/proc proc文件
/root 根用户(超级用户)的home目录
/sbin 由超级用户运行的基本系统管理程序
/srv 本地系统所提供服务的数据
/temp 临时文件
/usr 静态数据使用的辅助文件系统
/var 可变数据使用的辅助文件系统

ps:

给每个用户一个home目录可以任由用户自己处置,一般位于/home下。

除了root(超级用户),因为超级用户必须总是能控制系统,所以超级用户的home目录必须总是可用的,即使在系统启动过程中,或是单用户模式运行时。/home目录属于辅助文件系统,所以在挂载前不可用,/root属于根文件系统,总是可用的。


漫游/usr目录

目录 内容
/usr/bin 非基本程序(大多数用户程序)
/usr/include C程序的头文件
/usr/lib 非基本共享库
/usr/local 本地安装程序
/usr/sbin 由超级用户运行的非基本系统管理程序
/usr/share 共享系统数据
/usr/src 源代码(只用于参考)
更多详情可见: 漫游根目录和/usr目录


根文件系统
引导过程:在开机自检后,一个称为引导加载程序的程序接管计算机,从引导设备(通常是本地磁盘驱动器上的一个分区)中读取数据,从而将操作系统加载到内存中。

根文件系统:储存在引导设备上的初始的文件系统。

/bin  /boot  /dev  /etc  /lib  /root  /sbin  /tmp

根文件系统自动挂载,其中存放着启动系统所需的全部程序和数据文件,还包含系统出现问题时系统管理员需要使用的工具。

一旦挂载了根文件系统,内核也启动完毕。就会自动挂载其他设备文件系统。


程序类型

通用程序:可以由任何人使用

/bin 基本程序
/usr/bin 非基本程序
/usr/local/bin 本地安装程序

系统管理程序:只能由超级用户使用

/sbin 由超级用户运行的基本系统管理程序
/usr/sbin 由超级用户运行的非基本系统管理程序
/usr/local/sbin 本地安装的系统程序

第三方应用程序:可选程序,用户自行安装的第三方(非用户自己,非系统)提供的程序。

/opt/xxx 应用程序xxx的静态数据,包括程序
/var/opt/xxx 应用程序xxx的可变数据


虚拟文件系统

虚拟文件系统(virtual file system,VFS)充当程序和各种文件系统的中间人。

每当程序需要I/O操作时,它就向VFS发送一个请求。VFS定位合适的文件系统,同时设备驱动程序执行I/O与之进行通信。

通过这种方式,VFS允许程序以一个单独的,一致的树形结构(Linux文件系统)协调工作,即便数据实际来源于各种独立的异构文件系统。

在每个文件操作的一端,VFS以程序语言和程序沟通,在另一端,VFS以设备文件系统的语言与各种设备文件沟通。最终,程序能够与任何文件系统交互,而且不必与文件系统直接沟通。

每当开发新类型的文件系统时(假设为新设备开发),只需使新文件系统可以与VFS进行沟通即可。

基于磁盘的文件系统  
ext3 第3代扩展文件系统(Linux)
ext4 第4代扩展文件系统(Linux)
FAT32 32位文件分配表文件系统(Windows)
HFS+ 层次式文件系统(Mac)
ISO 9660 ISO 9660 标准文件系统(CD-ROM)
NTFS NT文件系统(Windows)
UDF 通用磁盘格式文件系统(可重写CD和DVD)
UFS2 Unix文件系统(BSD,Solaris)
网络文件系统  
NFS 网络文件系统(广泛使用)
SMB 服务器信息块(Windows网络)
特殊用途文件系统  
devpts 伪终端的设备界面(PTY)
procfs proc文件系统
sysfs 系统数据文件系统(设备与驱动器)
tmpfs 临时存储文件系统


猜你喜欢

转载自blog.csdn.net/qq_31730735/article/details/80519879