【工业与大数据】分布式文件系统

一、文件系统基础
文件系统概述
为什么要有文件系统?
需要介质保存一些永久的数据,停电后数据也可以长期保存
文件系统的名字空间,名字空间的操作
在文件数节点上进行操作
文件系统中文件读写操作
提供一些例如 open、read、write、close的操作函数
- open 操作:将文件 offset = 0,并记录文件操作信息
- close 操作:将文件从内存中删除
- read 操作:从offset=0位置读取size大小的数据。
文件系统的设计
文件系统的下层接口
- 磁盘的读写接口,磁盘中的地址
文件系统的上层接口
- 文件树的组织
- 文件数据的读写
文件系统最本质的功能:将文件名字翻译定位到一个具体的磁盘位置,进而可以完成文件的读写。
文件系统接口标准化
虚拟文件系统(VFS)是物理文件系统与服务之间的一个接口层,它对Linux的每一个文件系统的所有细节进行抽象,使得不同的文件系统在Linux核心以及系统中运行的其他进程看来,都是相同的。即调用VFS接口来调用不同的文件操作系统。
文件系统的磁盘数据结构

文件系统的讨论
-
关于磁盘块大小的讨论
- 一个文件起码占用1个文件块的空间(选择磁盘块越小浪费越小)
- 每个磁盘块需要元数据进行描述(磁盘块越多,开销越大)
- 虽然磁盘物理特性决定了最小的读写单元512字节,但是目前多数文件系统选用4k磁盘块。(根据不同文件系统特点选择)
-
文件系统的缓存
- 缓存能够加速的必要条件,时间局部性(经常访问)与空间局部性(附近的数据也需要访问)
-
磁盘系统的优化策略
- 磁盘的顺序读写与随机读写:尽量让磁盘进行顺序读写(顺序读写100MB带宽,随机读写1MB带宽)
- 如何进行磁盘优化
二、分布式文件系统
- 分布式文件系统需要提供什么功能?
- 文件系统目录树
- 文件的读写
- 分布式文件系统建立的基础要讨论的两个问题
- 是否直接面对磁盘?
- 无需直接面对磁盘,而是使用每台机器的操作系统中的文件系统来操作磁盘
- 直接面对磁盘: SANFS 更高性能
- 分布式文件系统中的地址是什么?
- 无法直接定位到磁盘:先定位到机器,然后定位到磁盘
- 是否直接面对磁盘?
分布式文件系统的本质功能:将一个以目录树表达的文件翻译为具体的节点,而到磁盘的定位则可以交给本地文件系统完成。
三、分布式文件系统举例 NFS(网络文件系统)
###NFS文件系统的扩展:AFS文件系统
NFS系统只有一台服务器,通过一台服务器对文件进行定位,用户操作某一个文件时,其实是对Server上某个目录进行操作。
AFS是放在广域网的分布式文件系统
- 当用户访问某个文件时,先访问根服务器 /afs
- 根服务器维护了下一级服务器 (pku,tsinghua,washington)
- 每一级服务器为用户返回下一级服务器地址
- 最后一步交给本地文件系统对具体文件操作