文件系统和磁盘调度(上)

简介: 文件系统和磁盘调度

文件系统


概述


文件系统:一种用于持久性存储的系统抽象


  • 在存储器上:组织、控制、导航、访问和检索数据
  • 大多数计算机包含文件系统


文件:文件系统中一个单元的相关数据在操作系统中的抽象


文件系统功能


  • 分配文件磁盘空间


管理文件块

管理空闲空间

分配算法


  • 管理文件集合


定位文件及内容

命名:通过名字找到文件的接口

最常见:分层文件系统

文件系统类型


  • 提供的便利及特征


保护:分层来保护数据安全

可靠性和持久性:保持文件的持久即使发生崩溃


  • 文件和块


文件属性:名称、位置、大小、保护、创建者、创建时间、最近修改时间等


文件头

在存储数据中保存了每个文件的信息

保存文件的属性

跟踪那一块存储块属于逻辑上文件结构的那个偏移


文件描述符


  • 文件使用模式


使用程序必须在使用之前打开文件


  • 内核跟踪每个进程打开的文件


操作系统为每个进程维护一个打开文件表

一个打开的文件描述符是这个表中的索引


  • 需要元数据来管理打开文件


文件指针:指向最近的一次读写位置,每个打开了这个文件的进程都是这个指针

文件打开计数:记录文件打开的次数 - 当最后一个进程关闭文件的时候才允许其从打开文件表中移除

文件磁盘位置:缓存数据访问信息

访问权限:每个程序访问模式信息


  • 用户视图:持久的数据结构


  • 系统访问接口


字节 的集合

系统不会关系你想存储在磁盘上的任何数据结构


  • 操作系统内部视角


块的集合(块是逻辑转换单元,而扇区是物理转换单元)

块大小<>扇区大小:在unix中,块大小是4kb


用户怎么访问文件?在系统层面需要知道用户的访问模式


  • 顺序访问:按照字节依次读取

几乎所有的访问都是这种方式


  • 随机访问:从中间读写

不常用,但是仍然重要,例如虚拟内存支持文件:内存页存储在文件中

更加快速 - 不希望获取文件中间的内容的时候也必须先获取块内所有的字节


  • 基于内筒访问:通过特征

许多系统不提供此种访问方式,相反,数据库是建立在索引内容的磁盘访问上实现的(需要高效的随机访问)


文件内部结构


  • 无结构

单词、比特的队列


  • 简单记录结构

固定长度

可变长度


  • 复杂结构

格式化文档

可执行文件

其他


文件共享和访问控制


  • 多用户系统中的文件共享是很必要的


  • 访问控制

谁能够获得那些文件的哪些访问权限

访问模式:读、写、执行、删除、列举等


  • 文件访问控制列表(ACL)

文件实体,权限


  • Unix模式

用户|组|所有人, 读|写|可执行

用户ID识别用户,表明每个用户所允许的权限以及保护模式

组ID允许用户组成组,并指定了组访问权限


  • 指定多用户/客户如何同时访问共享文件

和过程同步算法相似

因磁盘I/O网络延时而设计简单


  • Unix文件系统语义

对打开文件的写入内容立即对其他打开同一文件的其他用户可见

共享文件指针允许多用户同时读取和写入文件


  • 会话语义

写入内筒只有当文件关闭时可见


一些操作系统和文件系统提供该功能


目录


  • 文件以目录方式组织起来


  • 目录是一类特殊的文件

每个目录都包含了一张表


  • 目录和文件的树形结构

早期的文件系统时扁平的(只有一层目录)


  • 层次名称空间


  • 典型操作


搜索文件

创建文件

删除文件

枚举目录

重命名文件

在文件系统中遍历一个路径


  • 操作系统应该只允许内核模式修改目录


确保映射完整性

应用程序能够读目录


  • 文件名的线性列表,包含了指向数据块的指针


编程简单

执行耗时


  • Hash表 - hash数据结构的线性表


减少目录搜索时间

碰撞 - 两个文件名的hash值相同

固定大小


一个文件系统需要先挂载才能被访问

一个未挂载的文件系统被挂载在挂载点上


文件别名


  • 两个活多个文件管理同一个文件


  • 硬链接:多个文件项指向一个文件


  • 软连接:以快捷方式指向其他文件


  • 通过存储真是文件的逻辑名来实现


  • 如果删除了一个有别名的文件会如何


这个别名将成为悬空指针


  • Backpointers 方案:


每个文件有一个包含多个backpointers的列表,所以删除所有的backpointers

backpointers使用菊花链管理


  • 添加一个间接层:目录项数据结构


连接 - 已经存在文件的另外一个名字

连接处理 - 跟随指针来定位文件


文件系统的种类


  • 磁盘文件系统

文件处处在数据存储设备商,如磁盘

FATNTFS ext2/3等


  • 数据库文件系统

文件根据其特征是可被寻址的

如:WinFS


  • 日志文件系统

记录文件系统的修改/事件

例如:journaling file system


  • 网络/分布式文件系统

NFS SMB AFS GFS

分布式文件系统

文件可以通过网络被共享

文件位于远程服务器

客户算远程挂载服务器的文件系统

标准文件系统访问被转换成远程访问

标准的协议:NFS CIFS

分布式文件系统的问题

客户端和客户端上的用户辨别起来很复杂

NFS是不安全的

一致性问题

错误处理模式


  • 特殊/虚拟文件系统


文件系统和磁盘调度(下):https://developer.aliyun.com/article/1459604

目录
相关文章
|
6月前
|
存储 缓存 算法
文件系统和磁盘调度(下)
文件系统和磁盘调度
57 0
|
6月前
|
SDN
磁盘和文件系统管理
磁盘和文件系统管理
磁盘和文件系统管理
|
存储 IDE Linux
|
存储 固态存储 索引
磁盘文件系统一
磁盘文件系统一
磁盘文件系统一
|
存储 安全 Linux
磁盘文件系统三
磁盘文件系统三
磁盘文件系统三
|
存储 Linux 索引
磁盘文件系统二
磁盘文件系统二
磁盘文件系统二
|
存储 安全 数据安全/隐私保护
基本磁盘与动态磁盘 RAID磁盘冗余阵列区分(简单了解各种卷组)
基本磁盘与动态磁盘 RAID磁盘冗余阵列区分(简单了解各种卷组)
645 0
基本磁盘与动态磁盘 RAID磁盘冗余阵列区分(简单了解各种卷组)
|
Linux
磁盘及文件系统管理_学习笔记
时间:2017.12.01作者:李强参考:man,info,magedu讲义,神奇的internet声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。
1031 0
|
关系型数据库 调度

相关实验场景

更多