文件管理

文件系统基础

文件是具有符号名,由字节序列构成的数据项集合(文件系统的基本数据单位,文件名是文件的标识符号)

  • 文件系统的功能
    • 分配文件磁盘空间:管理文件块(位置和顺序)、管理空闲空间(位置)、分配算法(策略)
    • 管理文件集合:定位(文件及其内容)、命名(通过名字找到文件)、文件系统结构(文件组织方式)
    • 数据可靠和安全:安全(多层次保护数据安全)、可靠(持久保存、避免被破坏)
  • 文件的属性:名称、类型、位置、大小、保护、创建者、时间、最近创建时间
  • 文件头:文件系统元数据中的文件信息

文件的逻辑结构

  • 文件大小
    • 大多数文件很小:需要对小文件提供很好的支持,块空间不能太大
    • 有的文件特别大:必须支持大文件,大文件的访问需要高效
  • 文件分配(如何表示分配给一个文件数据块的位置和顺序)
    • 分配类型:连续分配、链式分配、索引分配
    • 考虑指标:存储效率(连续分配的外部碎片)、读写性能(链式和索引分配访问速度)
      • 顺序文件:文件头指定起始块和长度(文件读取的性能好,搞笑顺序和随机访问;有碎片和文件增长无法实现的问题)
      • 链式文件:文件以数据块链表方式存储,文件头包含了第一块和最后一块的指针(修改大小容易,没有碎片;无法实现随机访问,可靠性差;破坏一个链,后面的所有文件将会被破坏)
      • 索引文件:为每一个文件创建一个索引数据块,文件头包含了索引数据块指针(修改大小容易,没有碎片,可以直接访问,文件小时开销大,大文件需要索引块的索引块)
      • 索引顺序文件:总体索引分配方法,索引块之间用顺序分配的方法(UFS)

目录结构

  • 文件控制块和索引结点
  • 单级目录结构和两级目录结构
  • 树型目录结构
  • 图型目录结构

文件共享

文件共享可以节省磁盘空间

  • 语义一致性:
    • 由于网络延迟或者IO设计问题,需要规定多进程如何同时访问共享文件
  • UFS语义:允许多用户同事读取和写入,立即显示写入结果
  • 会话语义:写入内容只有文件关闭才可见
  • 读写锁

文件保护

  • 文件访问类型
访问类型 释义
顺序访问 按字节依次读取
随机访问 从中间读取(虚拟内存将内存页存储在文件中)
索引访问 根据数据特征索引读取(如建立DB)
  • 文件访问控制
    • 每个用户以何种方式获得哪些文件的哪些权限(r/w/x/d/l)
    • 文件访问控制列表(ACL)
      • Unix <User/Group/All r/w/x>
    • 用户ID(识别用户)
    • 组ID(识别用户组)

文件系统的实现

  • 文件系统的层次结构
  • 目录实现
  • 文件实现

磁盘组织和管理

数据块石逻辑存储单位,可能由多个扇区构成。扇区是物理存储单位

  • 磁盘的结构
    • 寻道时间
    • 旋转延时
    • 磁头、读写头、盘面、柱面等
    • 访问时间 = 等待通道时间 + 寻道时间 + 旋转延时
  • 磁盘的调度算法
    通过优化磁盘访问顺序提高磁盘访问性能(寻道时间耗时最大;同时会有多个在同一磁盘的IO请求,随机处理磁盘访问请求性能较差)
    • FIFO 按照顺序处理、性能差、接近随机访问
    • SSTF 最短服务时间优先,选择从磁臂当前位置需要移动的最小IO请求,总是选择最短寻道时间
    • SCAN 扫描算法,一个方向上移动,访问所有没有完成的请求(电梯算法)
    • C-SCAN 循环扫描算法 限制了只在一个方向扫描
    • C-LOOK 到达最后一个请求处,立即折返
    • N-Step-Scan N步扫描,避免磁头黏着状态,进车行反复请求某一磁道的IO操作;将磁盘请求分为N个子队列,按照FIFO处理所有子队列,队列内部采用扫描算法
    • FSCAN N步的简化,只有两个队列;所有的新请求放到一个队列,避免磁头粘着

磁盘的管理