05丨文件系统原理:如何用1分钟遍历一个100TB的文件?
该思维导图由 AI 生成,仅供参考
硬盘
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了文件系统原理及其在计算机操作系统中的重要性。首先介绍了硬盘的物理结构和文件系统的组成与工作原理,包括文件控制块和inode等概念。随后详细介绍了RAID技术,包括RAID 0、RAID 1、RAID 10、RAID 5和RAID 6的原理和应用场景。最后,文章提出了对于1分钟遍历100TB文件的更强大解决方案的探讨。通过对硬盘、文件系统和RAID技术的介绍,展现了文件系统原理的技术特点和应用场景。此外,文章还以Hadoop分布式文件系统HDFS为例,详细介绍了分布式文件系统的具体架构设计,包括DataNode和NameNode的功能及作用。最后,文章指出了文件系统设计思路的统一性,从简单操作系统文件到分布式文件系统,都体现了文件数据管理和利用更多硬盘实现大文件存储和快速读写速度的需求。整体而言,本文深入浅出地解释了文件系统原理及其技术特点,对于软件开发者和系统架构师具有重要的参考价值。
《后端技术面试 38 讲》,新⼈⾸单¥59
全部留言(38)
- 最新
- 精选
- ant老师,针对校验数据的生成过程还是不太理解!能帮忙解释的详细一些么?
作者回复: 就是异或运算 所有数据的bit位,逐位进行异或,得到的就是校验位。 如果丢失部分数据,用校验数据和其余数据逐位进行异或运算,可到丢失部分数据。 举例,5块磁盘做RAID5,四块磁盘上的bit为:0 1 1 1 ,那么异或计算后,校验位为 1,如果丢失了第一块盘上的bit位0,那么校验位1和其他三块盘上的bit位进行异或运算,可以算出0
2019-11-28524 - 探索无止境老师您好,文中提到inode的存储结构,其中前 12 个索引直接记录数据块地址,为什么要用前12个索引要直接存储数据块地址,如果也采用像第13,14,15的存储方式,那么一个文件不是可以存储更多的数据吗?比如就会超过70G,有点想不明白,还请老师指导!
作者回复: 绝大部分文件都是小文件,直接索引减少查找时间,综合性能更好。
2020-03-0215 - golangboy老师讲的透彻,成体系,感谢!分布式存储对数据的读写,都要经过元数据节点,此后的数据读写能力会提升很多。但元数据节点应该有性能瓶颈问题,找的过程会限制读写能力,请教老师,这种一般怎么处理?
作者回复: 元数据节点NameNode只提供类似文件控制块的数据读写,数据量非常小,不会成为瓶颈。一个数据块Block大小64M,对应的NameNode控制块数据大概只有几十个字节。
2019-11-2727 - 俊伟老师,RAID那里图没看懂,D,a,t,p,Q都是什么意思?图有点没太明白。
作者回复: d a t a表示需要写入RAID的数据,p q表示两种不同校验算法得到的校验数据。
2019-11-2923 - Middleware老师好,请教一个问题,假设现在要处理一个大文件,超过 100g,甚至更大的文件,如何快速从文件内找出某几个关键词?期待老师的回复。非常感谢
作者回复: 参考MapReduce、Spark。专栏后面会讲
2021-09-011 - 布拉姆每个 inode 最多可以存储 12+256+256*256+256*256*256 个数据块,如果每个数据块的大小为 4k,也就是单个文件最大不超过 70G====》老师,怎么得出70G的啊,总数据块数量为4,295,033,100,每个4k,那磁盘总容量为4,295,033,100*4K, 单个文件是怎么得出70G的?
作者回复: (12+256+256*256+256*256*256)*4k = 16,843,020 * 4K ≈ 70G
2021-02-23 - 北岸大法师老师,RAID究竟是往N片写数据还是N-1片写数据呢
作者回复: RAID5数据是N-1片,加上校验位就是N片
2020-08-16 - 蓝魔丶求证老师一个问题: 我看网上解释Ext4 文件系统中13级block满满 4K 的指针。Block 指针是 32bit 的,一个 block 可以存储 4K/32bit = 1024个 Block 指针,文中是256个,这个是因为文件系统不同吗?
作者回复: 32位指针只有4G寻址空间,应该是不够管理硬盘空间的。
2019-12-13 - 芒果这样,每个 inode 最多可以存储 12+256+256*25+256*256*256 个数据块 这里的公式写漏了,应该是12+256+256*256+256*256*256 个数据块
作者回复: 收到,尽快修正,谢谢~
2019-12-13 - 老男孩突然发现专栏的名字好像变了?😁这估计是平台改的,这个名字目的性更强一些吧。今天的内容,老师从文件系统到RAID再到分布式文件系统讲解很系统也很全面。这里我有个问题想问一下,在分布式文件系统中,一个文件被分成多个数据块保存在不同datanode上,而且对这些数据块进行了备份。那么我们是否可以直接用RAID 0的方式把单节点的读写速度扩大N倍?还是采用RAID 5在速度和容错性之间做一个权衡?
作者回复: HDFS缺省的高可用策略是RAID0,数据会做多个备份,应用可以指定备份数,如果想要加快读的速度,可以增加备份个数。
2019-11-28