【linux】海量小文件的存储方案

在介绍海量文件存储之前,需要先介绍一下常见的系统里面文件是如何存储的

文件inode

在linux下,每个文件或者目录,都会分配一个inode(index node),它不存储具体的文件内容,而是记录该文件的基础信息。每个inode大小一半是100-200kb(画重点,下面会用)。inode下会记录:

  1. 文件大小、类型;
  2. 权限信息,比如所属组,用户,访问控制;
  3. 文件的操作时间;
  4. 具体数据在磁盘的位置;
    文件系统初始化的时候,磁盘空间一般都会分俩部分。一部分就是存储inode,一部分是真正的存储文件内容。需要注意的系统的inode数量是有上限的,即系统最多可以存储多少个文件。有可能磁盘空间还有很多,但inode已经被用完;那此时系统无法再分配新的inode,你也依旧无法再存储新的文件。查看文件占用多少inode,和系统还有多少inode可以用如下俩个命令:
#某一文件inode占用
[root@why /]# stat my_file
File: my_file
Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Device: xx    Inode: 17          Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-03-26 11:30:27
Modify: 2024-03-26 11:30:27
Change: 2024-03-26 11:30:27

#系统inode使用个数情况,注意是个数。
[root@why /]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
tmpfs           203330     100  203230    1% /dev/shm
tmpfs           203330     100  203230    1% /run
tmpfs           203330    200  203130    1% /sys/fs/cgroup

#当使用率100%,那系统则无法再新曾文件。
#

海量文件存储

海量文件的元数据管理

海量文件存储就是数亿数十亿上百亿的文件存储,在如今互联网上,海量文件基本是个常态。图片、视频、商品等,很容易达到这个量级。在这个量级下,当前单机系统存储,是肯定存不下的。比如一个100亿的文件,先不考虑inode数量,光inode的存储大概就得1个TB,再加上具体的文件内容,很容易就超出单机系统了。这是海量文件要解的第一个问题,就是海量文件的元数据管理。

海量文件下如何高速支撑文件读取

假如存储支撑了这么多的元数据,比如单独搞到机器存储元数据,1TB其实压力还是可以的;或者多找几台机器分布式存储机器。此时会引入第二个问题,海量的文件下如何快速访问文件。对于一次文件读取是要先加载inode,找到真实文件存储位置再去读具体文件。一般系统为了加速文件访问,会把inode缓存在系统里(vfscache:https://www.science.unitn.it/~fiorella/guidelinux/tlk/node110.html)。如果这么大量的inode,很难缓存住的,海量文件下如何高速支撑文件读取。

ceph存储系统

对于海量文件业务场景,当前行业一般都会采用对象存储组件。比如腾讯云的cos,其他云厂商的对象存储,还有开源的ceph。
对于ceph来说,常见的块存储,文件存储和对象存储三种业务场景,都可以很好的支持。

继续补充中…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/611272.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】学习笔记——优先级队列

文章目录 十、优先级队列1. priority_queue的介绍2. 优先级队列如何使小的数据优先级高3. 仿函数介绍4. priority_queue的模拟实现 补: 反向迭代器未完待续 十、优先级队列 1. priority_queue的介绍 优先级队列 其实也不属于队列,它跟 stack 和 queue …

【MQTT】mosquitto 的 “下载、交叉编译、使用” 详细教程,手把手搭建一个MQTT Broker

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

ARIMA模型在河流水质预测中的应用_含代码

#水质模型 #时间序列 #python应用 ARIMA 时间序列模型简介 时间序列是研究数据随时间变化而变化的一种算法,是一种预测性分析算法。它的基本出发点就是事物发展都有连续性,按照它本身固有的规律进行。ARIMA(p,d,q)模型全称为差分自回归移动平均模型 (A…

单链表经典oj题(2)

前言 这次将要把剩下的oj题将以图解和自己的理解把它讲解完,希望对大家有所帮助,这次的讲解也是干货 第一题 21. 合并两个有序链表 - 力扣(LeetCode) ok这次就简单点,大家自己去看题目了 将两个升序链表合并为一个…

【Linux】进程的七大状态详解!

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

如何查看centos7中Java在哪些路径下

在 CentOS 7 上,你可以通过几种方式查找安装的 Java 版本及其路径。以下是一些常用的方法: 1. 使用 alternatives 命令 CentOS 使用 alternatives 系统来管理同一命令的多个版本。你可以使用以下命令来查看系统上所有 Java 安装的配置: su…

C++动态内存管理:与C语言动态内存管理的差异之争

当你改错一行代码的时候: 当你想要重构别人的代码时: 目录 前言 一、C/C的内存分布 二、C/C语言中的动态内存管理 三、new与delete的实现原理 总结: 前言 在C中,内存管理是一个至关重要的主题。正确地管理内存可以避免内存泄…

上海AI Lab开源首个可替代GPT-4V的多模态大模型

与开源和闭源模型相比,InternVL 1.5 在 OCR、多模态、数学和多轮对话等 18 个基准测试中的 8 个中取得了最先进的结果。 上海AI Lab 推出的 InternVL 1.5 是一款开源的多模态大语言模型 (MLLM),旨在弥合开源模型和专有商业模型在多模态理解方面的能力差距…

二、SPI协议

文章目录 总述1.SPI接口2. SPI工作模式3. SPI通信时序4. SPI协议 对比 UART协议(上一篇文章刚介绍过uart协议,这里来对比一下) 总述 SPI(Serial Peripheral Interface)是一种高速的、全双工、同步的串行通信总线&…

【影片欣赏】【指环王】【魔戒:国王归来 The Lord of the Rings: The Return of the King】

往期魔戒博客见: 【影片欣赏】【指环王】【魔戒:护戒使者 The Lord of the Rings: The Fellowship of the Ring】 【影片欣赏】【指环王】【魔戒:双塔奇谋 The Lord of the Rings: The Two Towers】 2004年发行,Special Extend…

副业兼职没那么难,视频号带货,1天稳定500,适合新手操作

向大家推荐一个项目:视频号书单号带货玩法。我已经实践了一段时间,并成功售出了1200多单,赚取了2万多元。这个项目表现相当出色,强烈推荐给大家! 周周近财:让网络小白少花冤枉钱,赚取第一桶金 …

Linux vscode push报错fatal: Authentication failed

注意啊,Git基于密码的身份验证已经被删除了,所以这个报错发生时无论密码正确与否,以及参考比较旧的改bug教程,都没法提交。进入提示的网址,生成个人访问令牌就好了

200-500人规模工厂网络方案(中小企业网络)

一、方案概述 工厂一般有单独的弱电房,类似这种 里面采用的方案如下: 主要考虑有线、无线、财务、办公、访客等业务,便于维护管理和后续扩容 还需要 Wi-Fi覆盖零死角高速率,工作不卡顿 同时考虑AV反病毒、IPS入侵防御、用户准…

【MySQL数据库开发设计规范】之命名规范

欢迎点开这篇文章,自我介绍一下哈,本人姑苏老陈 ,是一名JAVA开发老兵。 本文收录于 《MySQL数据库开发设计规范》专栏中,该专栏主要分享一些关于MySQL数据库开发设计相关的技术规范文章,定期更新,欢迎关注&…

python自动化生成ppt

使用Python和python-pptx创建PPT 在这篇博客中,我们将探讨如何使用Python库python-pptx来创建一个简单的PowerPoint演示文稿(PPT)。这个库允许我们以编程方式创建幻灯片、添加文本、图片、表格和自定义形状。 安装python-pptx 首先&#x…

智能助手上线,大模型提供云服务专属顾问

业务背景 在使用云服务的时候,当您遇到复杂问题,如配置、关联或计费方式不明确时,可能需要向客服提交工单进行技术沟通。在漫长的工作过程中,耗费了宝贵的时间和精力。 2024 年 4 月,百度智能云正式推出了融合文心大…

单调栈:(C++)

在题目的要求中,存在先进后出(即在前面的数据需要遍历到后面的某一数据时才能确定计算值)单调栈在一部分解题场景中避免了暴力解法的高时间复杂度问题,但是在做题过程中视情况而定,有些题目的最优解不一定使用单调栈&a…

【原创】springboot+mysql物资库存管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

利用AI提高内容生产效率的五个方案

目录 如何利用AI提高内容生产效率? ​编辑方向一:自动化内容生成 方向二:内容分发与推广 方向三:内容分析与优化 方向四:图像和音频处理 方向五:自动编辑和校对 如何利用AI提高内容生产效率? 简介&#xff1a…