目录
什么是文件系统
常规认知: 根目录下的文件【类比于此电脑下的驱动器】
实际上:是文件管理系统的简称,是一种方法,用来管理文件在存储设备上存储方式
文件系统的种类有哪些
文件系统的种类:FAT 、VFAT 、NTFS 、EXT1/2/3/4(linux标准的文件系统) 、HFS …
windows 的驱动器采用的是NTFS的文件系统
在根目录下,树莓派查看文件系统的命令: df -T
vfat : 是boot相关的内容(bootloader, kernel)
ext4 : 系统的根目录
tmpfs : 内存文件系统
什么是分区?
windows: 随意分区(面向普通用户PC),目录即分区
C(装系统的位置)也可以随意在C盘存放文件,
D盘(用户随意发挥)
Linux: 按照功能来分区,每个分区严格存放文件(开发者)
嵌入式系统可以分为4个区,分别是
bootloader 启动代码
para 启动代码向内核传递参数的位置
kernel 内核分区(前面内核编译时SD卡映射的data1)
根分区等 文件系统结构,例如/、bin、usr等(前面内核编译时SD卡映射的data2)
windows的驱动器与linux的文件系统结构
window
- 驱动器内的文件是连续存放的,同一个驱动器内的文件来自一个分区
linux
- 文件系统结构内的文件不一定连续存放在根分区,而是由四个分区所组成
- 文件系统结构内的文件由不同的文件系统种类组成
什么是文件系统目录结构?
windows的根目录下即为分区,而linux根目录(linux根分区)下是文件系统目录结构,文件来自不同的分区,且文件系统的种类不一样
文件系统目录结构:是 linux的根目录的树形结构,不是分区
该树形结构也是安装功能进行划分
- /:根目录,位于Linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中。
- /bin : binary的缩写,提供用户使用的基本命令,如ls,rm,touch,cat等, 存放二进制命令,不允许关联到独立分区,OS启动会用到里面的程序。
- /boot:用于存放引导文件,内核文件,引导加载器.包括一些核心文件和镜像文件
- /sbin:管理类的基本命令,不能关联到独立分区,OS启动时会用到的程序(重要的命令通常处于bin,不重要的则安装在sbin)。
- /lib:存放系统在启动时依赖的基本共享库文件以及内核模块文件. 系统使用的函数库的目录 也存放了大量的脚本库文件 ,程序在执行过程中,需要调用时会用到。类似于windows里的DLL文件
- /lib64:存放64位系统上的辅助共享库文件.
- /etc: 系统配置文件存放的目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件 。可以设置一些开机自动启动的配置。包括网络配置文件(netinterfaces NetManager),文件系统,X系统配置文件 ,设备配置信息,设置用户信息等,比如cd /etc/init后,可以看到配置文件。一般是通过修改vi etc/rc.local里面的内容完成启动配置,例如之前的IP地址固定。
- /home:普通用户主目录,当新建账户时,都会分配在此,建议单独分区,并分配额外空间用于存储数据。
- /root: 系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
- /media:便携式移动设备挂载点目录。光驱和软驱的挂载点 linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /mnt:临时文件系统挂载点.
- /dev: 设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件 (b 随机访问,c 线性访问)。/dev/char是字符设备软连接
- /opt:第三方应用程序的安装位置.
- /srv: 服务启动之后需要访问的数据目录,存放系统上运行的服务用到的数据,如www服务需要访问的网页数据存放在/srv/www内。
- /tmp:存储临时文件, 任何人都可以访问,重要数据一定不要放在此目录下。
- /usr: 应用程序存放目录,/usr/bin 存放保证系统拥有完整功能而提供的应用程序, /usr/share存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local 存放软件升级包,第三方应用程序的安装位置,/usr/share/doc 系统说明文件存放目录。/usr/src:内核源码默认放置目录。类似windows下的program files
- /var :放置系统中经常要发生变化的文件,如日志文件。/var/log 日志目录及文件./var/tmp:保存系统两次重启之间产生的临时数据.
- /proc: 用于输出内核与进程信息相关的虚拟文件系统,目录中的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间(cat /proc/cpuinfo 查看cpu型号,核数以及其它信息)(通过cat /proc/meminfo查看内存信息)
- /sys: 用于输出当前系统上硬件设备相关的虚拟文件系统.
- /selinux:存放selinux相关的信息安全策略等信息.
什么虚拟文件系统Virtual File System ?
- VFS是用户的应用程序与文件系统实现之间的抽象层。
- VFS作为内核子系统,为用户空间程序提供了文件系统相关的接口。用户空间程序可以利用标准的UNIX文件系统调用,**对不同物理介质上的不同文件系统进行操作。**不管文件是磁盘还是设备,都可以用open read write统一操作
- VFS提供文件系统抽象层:VFS提供了一个通用文件系统模型,该模型囊括了所有实际文件系统的常用功能和行为。VFS抽象层定义了所有实际文件系统支持的基本的、概念上的接口和数据结构,所以VFS能衔接各种实际文件系统。
虚拟文件系统有什么作用?
简化应用程序员的开发。文件对应的分区可能不一样,有的来自ext4,或者tmps。即为文件系统的类型可能不一样,数据存储的方式不一样,访问方式也就不一样,没办法做到操作统一化,给编程开发带来困难。而虚拟文件系统的存在正是解决了这个问题:简化上层应用程序员的开发,不管是什么文件类型,磁盘还是设备,通通都是用open,read,write统一操作。