浅谈Linux文件系统
Linux系统中所有数据都是以文件形式来呈现,即一切皆文件,文件目录采用树形结构,以根目录/为主,向下呈现分支状展开,
但这只是逻辑上的一种显示和查找方式,文件数据实际是存储在磁盘分区里的,
通过挂载,将目录树架构与磁盘分区内的数据进行结合,进入该目录就可以读取该分区数据,该目录即挂载点,
根目录一定要挂载到某个分区,在系统安装时设定,其他目录可依需求挂载到不同分区,若不挂载则都将在根目录分区中,
树形结构在实际文件系统内部是并行存储机制,在根目录分区用不同的目录名指向对应所在的分区;
文件管理系统,简称文件系统(file system),是操作系统中负责管理和存储文件信息的软件机构,
用于明确存储设备(一般是磁盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法,
包括指定命名规则,命名长度,文件大小,存储位置等;
文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性,
从系统角度看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索;
文件系统也指用于存储文件的磁盘或分区,同一硬盘不同分区可以是不同文件系统,
格式化也即是建立文件系统,所以可以理解为该分区就是该文件系统,是一体的;
种类如FAT,NTFS,Ext,XFS等
几个概念:
硬盘:用于存储数据的物理硬件设备,含 种类,组成结构,性能指标等,需先分区,然后格式化
分区:将硬盘的整体存储空间划分成多个独立的区域,方便管理和使用,提高存取性能
格式化:根据所用文件系统对分区进行初始化的一种操作,使其具有存储能力,其实是创建文件系统
文件系统:操作系统中负责管理和存储文件信息的软件,包括命名规则,命名长度,文件大小,存储位置等,
从系统角度看是对存储空间进行组织和分配,
同一硬盘不同分区可以是不同文件系统,
格式化也即是建立文件系统,所以可以理解为该分区就是该文件系统,是一体的
VFS:虚拟文件系统,内核功能,为各类文件系统提供了一个统一的操作界面和应用编程接口
目录树:一切皆文件,所有文件都是由根目录/开始,向下呈现分支状,
是一种逻辑显示结构,实际是并行存储,指针指向
挂载:将硬件设备,如硬盘或分区与一个已经存在的目录文件进行关联
挂载点即对应目录,为进入文件系统的入口
根目录/是唯一必须挂载的目录,且在安装linux时已挂载,其他目录可挂可不挂
如果根目录下的挂载点(目录)没有单独的分区,它们都将在根目录的分区中
/dev/sda*只是用来管理分区,即属性信息,并不存储实际文件数据
交换分区SWAP:磁盘中单独划分出来的分区,不存储数据,用来模拟内存,
当内存不够用时,将内存中不常用的数据放到硬盘交换分区中,而将内存空间释放给真正需要的程序使用,
若内存足够大,则不需要交换分区,但服务器最好还是预留一些出来以防万一,做到备而不用,
当用到交换分区时,主机磁盘灯会开始闪个不停,
不会使用到目录树的挂载,不需要指定挂载点;
目录树读取流程如下:
由根目录/开始,系统首先根据挂载点找到根目录inode,若有rx,找到根目录block,
根据相应目录名找到目录inode,若有rx,找到该目录block,
根据文件名找到文件inode,若有r,找到文件block,读取文件内容;
新增文件流程如下:
系统首先确定用户有wx,然后根据inode对照表找到未使用的inode,并写入新文件权限和属性,
根据区块对照表中找到未使用的区块号码,写入实际数据,并更新inode指向,
将inode和区块数据同步更新到对照表,并更新超级区块内容;