文件存储

本文探讨了文件系统的概念,包括其设计原理、磁盘数据结构及分布式文件系统的特点。以ext2为例,介绍了磁盘块的组织方式,并分析了分布式文件系统如NFS、AFS的工作原理。特别关注了Google文件系统的设计思想,及其如何满足大规模数据存储的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 文件系统

概念:

名字空间:目录树

文件的读写:打开(offset)、读、写、关闭(避免内存泄漏)


设计:

下层接口:磁盘的读写接口,磁盘的地址(磁盘的驱动)

上层接口:目录树的组织、文件数据的读写


本质功能:将文件名字翻译定位到一个具体的磁盘位置,进而可以完成文件的读写。


2. 文件系统接口的标准化

虚拟文件系统VFS:物理文件与服务之间的一个接口,对各种文件系统(ext3、nfs、vfat)的细节进行抽象化


3. 文件系统的磁盘数据结构

例子:ext2

磁盘 = 启动块+块组 = boot block(启动块)、block group0(块组)......、block group n

对于某一个块组,包括:

super block(超级块):描述文件系统的相关信息

group description:块组本身的描述

data block bitmap:用0、1标记数据块有没有被使用

inode bitmap:inode代表了一个目录,用0、1表示inode是否存在

inode table:inode的信息(address、size),不包含文件名

data blocks:目录名称


4. 文件系统讨论

磁盘块的大小:一个文件起码占一个磁盘块(例如4kb),磁盘块小浪费小,但是性能差

文件系统的缓存:时间局部性、空间局部性

磁盘系统的优化策略:顺序读写(100MB)与随机读写(<1MB)


5. 分布式文件系统与本地文件系统

分布式文件系统建立的基础:建立在虚拟机的操作系统之上,不用直接面对磁盘

分布式文件系统中的地址:先定位到一台host

分布式文件系统的本质的功能:将一个以目录树表达的文件翻译成一个具体的节点,而到磁盘的定位则可以交给本地文件系统去做


6. 最简单的分布式文件系统NFS(网络文件系统)

读写命令->VFS(本地)->NFS clinent->NFS server->VFS(服务器)

NFS:将目录定位到服务器上(只有一台服务器)


NFS文件系统的扩展:AFS文件系统

AFS:定位到一个服务器


7. Google文件系统

应用需求:

搜索引擎:存储互联网容量的数据、支持数据快速写入、支持查询、建立倒排索引、对网页数据进行排序


目标:

文件系统(目录树、文件读写),支持读写非常大的文件

充分利用资源(负载均衡、扩展性)

容错(不能因为少数的节点出错就停止)

系统简洁:易于控制


基本设计:

数据块:64MB,远大于一般的文件系统

性能设计:依据全局动态信息,负载动态调整

可靠性:副本的方式保存在多个节点中(一般3个节点)

系统设计简洁:通过单个节点来保护文件系统的元数据(主节点master)


结构:

API(File name、chunk index)

主服务器:文件系统命名空间,file->(chunk1,chunk2、...),chunk index->h1、h2、h3(存储服务器)

主服务器(chunk handle、chunk locations)返还给应用程序,应用程序与对应的chunk服务器通信


性能问题:

块服务器:

负载均衡问题:master服务器收集信息,均衡分配;对于热点访问,增加副本数目

扩展性:加一个服务器,更新主服务器


主服务器:

容量:64MB块数据->64B块信息;10PB->10GB(可以存储在内存中)


可靠性问题:

块服务器:副本恢复(服务器上的数据块并行恢复)

主服务器:

内存出错:日志的方式保存在硬盘中、定期保存时间点(最新的数据)

硬盘出错:影子服务器


一致性:

三副本一致性的基本要求

基于租期以及主要副本的顺序定义:master决定主要副本(租期)、主要副本(决定操作顺序)


放松的一致性:

Append:Atomic、不用知道位置(爬虫)

一致的:文件的三个副本一致

明确的:反应了客户端的操作


POSIX兼容性:

GFS不是标准的文件系统,与标准的POSIX文件系统并不兼容

追加了append操作

放松了一致性要求

删除数据不是直接从本地文件系统中删除,而是通过垃圾收集的方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值