读书:05丨文件系统原理:如何用1分钟遍历一个100TB的文件?

作为应用程序的开发者。通过操作系统以文件的方式对硬盘读写,os的文件系统把硬盘以块划分,每个文件占据若干个块,然后通过一个文件控制块即FCB记录每个文件占据的硬盘数据块。

这个FCB在os中是inode,访问文件必须获得文件的inode,在inode中查找文件数据块索引表,根据索引中记录的硬盘地址访问硬盘,inode中记录着文件的权限所有者修改时间。文件大小,等文件属性信息,以及文件数据块硬盘地址索引,inoode是固定的结构,能够记录的硬盘地址的索引数目也是固定的,一共15个索引,前12个直接记录数据块地址,第13个索引记录一个一级索引表地址,一个索引地址对应一个索引表,每个索引表可以记录256个索引,第14个索引记录一个二级索引表的地址,第15个索引记录的是一个三级索引表的地址,这样每个inode最多一颗存储的单个文件大小是 一块的大小eg=4K*(12+256+256*256+256*256*256)=70G,可以通过扩大数据块大小,增加一个文件的大小,但是受单个硬盘容量的限制,有可能inode够用,但是硬盘空间不够用。

tip:所谓的硬链接,存储的是dentry,就是文件名和inode的对应,也就是说,dentry这个文件的内容是inode的地址。???好像不对,那文件的路径,在os看起来是什么,我觉得路径,也就是目录,也是个文件,进入一个路径就是读一个文件内容。硬链接的文件内容是这个文件的文件名字和inode地址,而inode里会有维护着有多少个dentry的引用,当引用为0,这个inode就变成再次可用了。

tip:文件对应文件控制块,进程对应进程控制块,每个PCB里面的数据结构,是包含有FCB的。但是多个进程打开同一个文件的情景呢???

tip:文件系统存放在磁盘上,磁盘划分为一个或者多个分区,每个分区中有一个独立的文件系统,磁盘的0号扇区是MBR-master boot record主引导分区,用来引导计算机,MBR的结尾是分区表,给出了每个分区的其实和结束地址,表中的一个分区被标记为活动分区。在计算机被引导时候,bios读入并且执行MBR,MBR会读取活动分区,活动分区的第一个快是boot引导块,并执行它,引导块的程序将装载该分区的os.

统一期间,每个分区都从一个引导块开始,即使它不包含一个可以启动的os,除了引导块,磁盘分区的布局是随着文件系统的不同而不同,文件系统通常包含这些项目:超级快-superblock-包含文件系统的所有参数,在计算机启动或者文件系统首次使用时候,把超级快读入内存,空闲空间管理-位图,i节点,根目录,文件和目录。

解决方案:RAID /分布式文件系统

分布式文件系统的思路是把文件分片,每片传到不同机器上,inode的索引记录的是这些分片的地址。

比如HDFS,把文件分成多个block,每个datanode存储一部分数据,这样文件就分布在整个hdfs集群中,datanode估计有几百几千台的规模,每台服务器有数块硬盘,这样整个存储集群的存储容量大概在几PB到几百PB.

namenode负责元数据管理,metadata,就是文件路径,访问权限,数据块id,存储位置,箱单关于linux的inode的角色。hdfs为了保证数据高可用,会把数据备份一共三份,分布可以在不同的机架上。

有了hdfs在配合mapreduce、spark,就可以对这个文件的数据实现并发计算。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值