文件系统概述

一、文件系统

《Linux磁盘调度》的磁盘格式化中,介绍了磁盘的低级格式化和高级格式化,高级格式化就是为磁盘构件文件系统,那文件系统是什么呢?

可以将文件系统看作一个软件,它需要在磁盘上写入一些数据结构和数据,以扇区为单位写入,这个过程就叫做构建文件系统

1.1 文件系统概念
  • For most users,the file system is the most visible aspect of an operating system

    对于大多数用户来说,文件系统是操作系统中最显而易见的,时刻都是使用文件系统

  • It provides the mechanism for on-line storage of and access to data and programs of the operating system and all the users of the computer system

    文件系统为计算机系统提供了一种机制,这种机制可以在线存储和访问操作系统和所有用户的数据和程序

  • File systems live on devices,such as magnetic disk,SSDs

    文件系统存在于设备上,例如磁盘SSD,

  • The file system consists of two distinct parts:a collection of files,each storing related data,and a directory structure,which organizes and provides information about all the files in the system

    文件系统包含两个明显的部分:一个存储相关数据的文件集合和一个目录结构,目录结构用于组织和提供所有操作系统文件

磁盘格式化过程:

image-20210901190823621

磁盘经过地址格式化之后,被分成了大小相等的扇区,将不同的扇区进行了分区,然后进行高级格式化,在每个分区中,最前面若干个扇区存放的是分区表,记录分区大小、分区性质(主分区/扩展分区)等,后面若干个扇区存放的是目录信息,每个分区都有一个根目录,根目录下面有若干个文件或目录,这些文件和目录的信息都存在目录信息中

1.2 文件概念

文件系统的概念中说明了文件系统包含文件和目录结构两个部分,那文件是什么?

1.2.1 文件定义
  • 文件是信息的逻辑存储单位

    说文件是信息的逻辑存储单位,是从用户的角度来看,对用户来说,一个文件可能包含段落、标题等这些逻辑信息结构

    • 在用户看来,文件是具有结构的信息集合
    • 在系统看来,文件的本质就是存储在外存当中的二进制集合
  • 文件可以存储不同类型的信息,如文本文件、可执行文件、doc文档文件、xls表格文件

1.2.2 文件属性
  • 文件名称

    文件是“按名存取”的

  • 文件类型

    通常通过文件的后缀区分文件类型(pdf,txt,doc,exe,py等)

    文件类型可用于指示文件的内部结构,操作系统通过了解文件类型决定对文件如何进行解释

    一般地,操作系统至少要解释两种文件类型:文本文件(ASCII+控制符构成)、二进制可执行文件(win:.exe linux:./执行文件)

    Unix认为每个文件由字节序列构成,解释这些字节的工作交给对应的应用程序完成。

    以word应用程序为例,对于test.doc的文件,操作系统并不能解释,但word应用程序向操作系统注册了它可以解释test.doc文件,于是操作系统执行word的可执行文件启动应用,然后由应用程序来解释test.doc文件,如果找不到能解释test.doc文件的应用程序,操作系统就会提示无法打开,需要手工打开一个应用程序来解释该文件

  • 位置

    文件存放目录

  • 大小

    文件本身大小可能要比占用的磁盘空间小

  • 时间、日期和用户标识

    包含文件的创建时间、修改时间、访问时间;操作系统中用户标识有三种:当前用户、同组用户和其他所有人

  • 保护

    对于不同的用户,文件拥有者、同组用户和其他用户对文件的访问权限可能是不一样的,

1.3 文件的内部结构

磁盘是以扇区为基本读写单元,假设每个扇区的大小为512Bytes

  • 文件被划分为若干个逻辑记录,每个逻辑记录占1Byte,假设文件刚好是512Bytes,操作系统将文件将这512个逻辑记录放进一个扇区,这个过程称为打包或成组,从扇区读取分解为不同的逻辑记录的过程称为分解
image-20210905102945952

Linux里面,通常一个文件就是以一个字节为单位的

  • 文件被划分为若干个逻辑记录,每个逻辑记录占xBytes,假设文件两个逻辑记录占512Bytes,操作系统将文件将每两个逻辑记录打包放进一个扇区
image-20210905103351956

这种方式的文件系统主要用于数据库,数据库以每行记录为单位,每个记录可能占用若干个字节

1.4 访问方法
1.4.1 顺序访问
  • 这种访问文件的方式最为常见,文件信息按顺序排序,读取/写入当前文件信息后,将文件指针移向下一个邻接区域

  • 磁带模型

    image-20210905110037258

    当前指针指示了当前读取的位置,如果继续读或者写,指针继续向前移动,如果需要读取前面的数据,则通过倒带,把指针移到前面的位置,然后再往后读,实现重复读写的能力

1.4.2 直接访问
  • 若干文件的逻辑记录(logical record)的长度固定,那么允许在访问文件信息时可以按任意顺序进行快速读取和写入
  • 磁盘模型
  • 假设逻辑记录长度为L,若要访问某个文件的第N个逻辑记录(编号从0开始),则可转换为:“访问从文件起始位置L*N开始的L字节”
1.5 文件目录
1.5.1 文件目录作用
  • The directory can be viewed as a symbal table that translates file names into their directory entries

    文件目录作为一个符号表,用于将文件名转换对应的目录条目

    在前面磁盘格式化过程中已经说到,在磁盘的每个分区中,第一个扇区存放的是分区信息,第二个分区存放的是目录信息

    image-20210905144935858

    每个目录条目包含了文件名,基本属性,文件位置以及读写权限等信息

    文件目录提供了以下功能:

    1、查找文件(根据文件名)

    2、创建文件、删除文件

    3、文件重命名

    4、列出文件目录所有文件和子目录

    5、遍历文件系统,文件目录的除了可以包含文件,还可以包含子目录,遍历文件系统就是可以遍历所有目录以及子目录中的文件

1.5.2 文件目录结构
  • 单层目录

    单层目录是最简单的目录结构,所有的文件都存放在一个相同的目录中(只有一个目录),这方结构比较容易理解和实现

    这种方式最大的缺点是文件命名是一个很麻烦的是事情

    image-20210905150351796
  • 两层目录

    在两层目录结构中,系统中的每个用户有一个独立的文件目录(user file directory UFD),每个UFD有相似的结构,但是每个用户只能看到自己的文件,当访问某个文件时,首先在系统中查找这个用户下的文件目录,然后判断当前目录是否有该文件

    image-20210905150653923
  • 树型结构目录

    1、树型结构目录允许用户在当前目录下再创建的子目录,并且管理对应的文件

    2、每个树型结构都有一个根目录(Linux用“/”表示当前分区的根目录),并且每个文件在系统中都有一个独一无二的路径名(相同路径下不能有同名文件,不同路径下可以有同名文件)

    3、树型结构中,一个文件目录就是文件和子目录的集合

    image-20210905151228886

现在常用的操作系统,都使用树型结构的文件目录

1.6 共享与保护
1.6.1 用户和组
  • 在多用户系统中,提出了文件共享和保护的需求

  • 在文件和目录的属性中,加入了“用户”和“组”的概念

    User:即为所有者(Owner)

    Group:用户集合,它们拥有相同的访问权限

    [root@zhuyuzhu ~]# ll
    total 0
    drwxr-xr-x 3 root root  24 Sep  1 14:25 lizhi
    drwxr-xr-x 4 root root 166 Jul 16 16:22 logs
    drwxr-xr-x 3 root root  18 Jul  5 20:02 nginx
    

    在linux系统中可以通过“ls -l”或者“ll”列出文件信息,其中第一个root表示的就是用户,第二个root表示分组

1.6.2 文件访问控制

为每个文件或目录关联一个访问控制列表(Access Control List,ACL)可以实现基于身份的访问控制,以Linux为例:

  • 每个文件/目录有三种用户类型:Owner/Group/Other

  • 三种用户的访问权限均有readable/writable/executable(rwx)

  • 每个文件/目录的ACL有9个bit来指示它的访问控制权限
    image-20210905155151970

    因为ACL只用9个bit来表示,通过1或0来表示是否可读可写可执行,上图中,文件对于拥有者可读可写不可执行,对于同组同于可读不可写不可执行,而对于其他用户,不可读不可写不可执行,用字符表示就是“rw-r----”。

    文件的访问权限也可以使用数字表示,上图也表示的权限对应数字就是610,每3个bit对应一个数字

    如上面的列出来的文件信息,第一个“d”表示这是一个目录而不是文件,后面九个字符分别代表了三种用户的访问权限

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值