linux文件

linux的哲学:在linux中一切皆是文件

而虚拟文件系统正是实现上述两点 Linux 特性的关键所在。虚拟文件系统(Virtual File System, 简称 VFS), 是 Linux 内核中的一个软件层,用于给用户空间的程序提供文件系统接口;同时,它也提供了内核中的一个 抽象功能,允许不同的文件系统共存。系统中所有的文件系统不但依赖 VFS 共存,而且也依靠 VFS 协同工作。

为了能够支持各种实际文件系统,VFS 定义了所有文件系统都支持的基本的、概念上的接口和数据 结构;同时实际文件系统也提供 VFS 所期望的抽象接口和数据结构,将自身的诸如文件、目录等概念在形式 上与VFS的定义保持一致。换句话说,一个实际的文件系统想要被 Linux 支持,就必须提供一个符合VFS标准 的接口,才能与 VFS 协同工作。实际文件系统在统一的接口和数据结构下隐藏了具体的实现细节,所以在VFS 层和内核的其他部分看来,所有文件系统都是相同的。图显示了VFS在内核中与实际的文件系统的协同关系。

VFS在内核中与其他的内核模块的协同关系

我们已经知道,正是由于在内核中引入了VFS,跨文件系统的文件操作才能实现,“一切皆是文件” 的口号才能承诺。而为什么引入了VFS,就能实现这两个特性呢?在接下来,我们将以这样的一个思路来切入 文章的正题:我们将先简要介绍下用以描述VFS模型的一些数据结构,总结出这些数据结构相互间的关系;然后 选择两个具有代表性的文件I/O操作sys_open()和sys_read()来详细说明内核是如何借助VFS和具体的文件系统打 交道以实现跨文件系统的文件操作和承诺“一切皆是文件”的口号。

1、根目录

根目录是一个非常重要的目录,
而且所有的目录都是由根目录衍生出来的,还与很多过程有关,例如开机启动,重要文件等都相关。

/就代表根目录,这就是他的符号

下面再说说根目录下边的其他重要文件

2、文件夹

(1)/bin

主要是被root用户使用,下边存放着root用户使用的命令的程序包,

如里边放着cat  chmod  chown等命令。  

(2)/boot

存放着开机所用到的各种文件,包括linux核心文件。linux kernel常用的存档名是vmlinuxz.

如果是用grub2管理开机项,则应该还有一个/boot/grub2这个目录  

(3)/dev

这个文件夹下面放着各种接口设备和装置,因为在linux下一切皆是文件,

所以我们的键盘鼠标u盘磁盘等设备都会以文件的形式存放在这个目录下。 

(4)/etc

系统的主要配置文件,几乎都放在这个目录下,比如账号的密码等文件,

就在/etc/passwd这个目录下。这个文件夹可以被使用者访问查阅,但是只有root用户可以更改。  

(5)/lib

这个文件夹一看就是放函数库的,

只不过这里放的是开机时会用到的函数库。  

(6)/media

放置挂载项,这个单词的意思大概就是媒体的意思,

所以DVD CD等光盘一般都挂载在这里  

(7)/mnt

这个目录也是用来放临时挂载用的目录,

比如我们在虚拟机中的共享文件夹就挂载在这个目录下边,/mnt/hgfs  

(8)/opt

这个目录一般放第三方下载软件用的目录
比如虚拟机中的KDE集成桌面就放在这个目录下。

我们也可以把自己安装的软件放在这个目录下,

但是按照以前的习惯,我们都是放在/usr/local目录下。  

(9)/sbin目录

root用户才可以使用的一些命令,其他用户只能查询,

放置了与开机还原等相关的东西。    

(10)/usr

这个usr是Unix Software Resource的缩写,这个目录下边还有许多目录。

/usr/local目录,就是用来放置自己安装的软件的。

/usr/bin一般用户可以用的命令,就在这里

/usr/lib库函数,刚才的/lib应该就是链接这里的。   

(11)/tmp

用来存放一些临时文件,可能会定期清理,

所以重要文件可不敢放在这里。所有用户均可以访问。  

(12)/var

用来存放软件运作产生的文件,以及程序文件等。会慢慢的占用磁盘空间。

比如

/var/bin程序运行语言的库文件。

/var/log用户登录信息等文件。
Last modification:November 1st, 2019 at 02:56 pm
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment