dddddddddddddddddddd

在这里插入图片描述

欢迎关注博主 Mindtechnist 或加入【Linux C/C++/Python社区】一起探讨和分享Linux C/C++/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。


磁盘满的本质分析


专栏:《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具、Linux文件IO、进程管理、进程通信、多线程等,请关注专栏免费学习。


文件在保存到磁盘(硬盘)的时候,除了保存文件的内容,还包括时间信息、权限信息、文件归属信息、文件名等等。这些文件信息都是存在i节点中的。我们知道,存储空间在硬盘级别是一个一个的扇区,而在操作系统级别是一个一个的block块,这些block数据块分为两种,一种是数据block块,另一种是inode bloak,而这些inode block就是专门存放文件信息的存储空间。文件的具体内容存放在数据block块中。查看inode相关信息的命令如下

ls -i /etc/password #可以查看inode编号(-di 可以查看目录的inode编号)
df -i #查看每个磁盘分区的inode信息

通过上面介绍,我们知道文件的存储是由两部分数据组成的,一个是文件内本身的数据,也就是文件内容,另一部分就是存放在inode中的文件信息。实际上,即便是你创建一个空文件,它也是占据磁盘空间的,空文件没有数据,不会占用数据block的空间,但是只要是文件就会有属性、权限等等信息,所以它会占据inode block的空间。因此,磁盘满是分为两种情况的,一种是数据太多,比如文件内容有几百G,数据block的磁盘空间就满了;第二种情况是创建的文件太多,把inode block占满了,或者说inode编号不够用了,这种情况虽然还有磁盘空间可用,但是已经没有inode编号可以分配了。

比如说,我们创建一个大文件,虽然这个文件只占用了一个inode编号,但是它太大了,超过了磁盘空间,这就是磁盘满的第一种情况

dd if=/dev/zero of=/sdb5/test bs=10G count=1
#把/dev/zero中的内容写到/sdb5/test文件中,文件大小为10G,总共写1个文件
# dd 表示写数据
# if input file 表示输入文件
# of output file 输出文件
# bs block size
# count 

dd是一个命令,也就是一个应用程序,我们使用程序向磁盘写数据的时候,会先把数据放到内存中,然后再从内存刷到磁盘上。比如说,下图所示“dd 内存耗尽”,这说明内存放不下10G的数据,我们可以缩小一下。
在这里插入图片描述
这6G数据的写入是非常卡,非常慢的。有时候我们也会用这个命令来测试磁盘写数据的速度。
在这里插入图片描述
实际上,虽然我们在命令中指定写入6G,但是由于内存的限制,写入内容可能会远少于这个数字。(内存大小远小于磁盘)
在这里插入图片描述
第二种磁盘满的情况就是inode编号不够用,比如说我们创建了大量文件,像这种情况我们查看磁盘空间的时候,会发现还有大量空间可用,但是查看可用inode节点的时候,发现已经满了,这也会提示磁盘满。
在这里插入图片描述
在实际场合,我们个人的电脑磁盘满一般是指磁盘没有空间了,这可能是我们电脑磁盘上保存了大量的数据导致的;在服务器中,更常见的磁盘满是inode节点编号满了,因为服务器是给很多人用的,文件数量会很多,并且还会有大量的日志文件(服务器上经常会做日志切割,实际上就是把原来的log文件mv为log1并新建一个log),这就会导致没有inode编号可用。其实,在电商中经常需要备份信息,因为这些信息包含了用户交易等重要数据,所以不能删除,要备份出来,如果使用cp命令去备份,比如说我们把服务器上的数据备份到一块硬盘上,那么很可能会出现inode不够用的情况,因为服务器上的数据很多,这样即使硬盘还有很多剩余空间,但是inode已经不够用了,导致磁盘满。正确的备份方法是使用tar打包(打包和压缩是有区别的,tar命令只打包不压缩,打包是把多个文件打包成一个文件,不会节省存储空间,而压缩会节省存储空间,所以我们见到的.tar格式的文件都是打包文件,而不是压缩文件,压缩格式一般为gz或zip等),使用tar命令把多个文件打包为一个文件,打包后的文件只占用一个inode编号,这样就不会导致inode不够用了。


在这里插入图片描述
在这里插入图片描述


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

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

相关文章

什么是路由器公网IP?

路由器公网IP是指路由器在互联网上的唯一标识,用于区分不同的网络设备。在互联网连接中,每个设备都需要一个公网IP地址才能与外部网络进行通信。路由器公网IP的获取和使用对于网络连接和数据传输非常重要。 路由器公网IP的获取方式 通常,路由…

Spring第三天

一、AOP 1 AOP简介 问题导入 问题1:AOP的作用是什么? 问题2:连接点和切入点有什么区别,二者谁的范围大? 问题3:请描述什么是切面? 1.1 AOP简介和作用【理解】 AOP(Aspect Oriented Progra…

Qt网络编程-写一个简单的网络调试助手

环境 Windows&#xff1a;Qt5.15.2&#xff08;VS2022&#xff09; Linux&#xff1a;Qt5.12.12&#xff08;gcc) 源代码 TCP服务器 头文件&#xff1a; #ifndef TCPSERVERWIDGET_H #define TCPSERVERWIDGET_H #include <QWidget> namespace Ui { class TCPServerW…

单片机的省电模式及策略

目录 一、单片机省电的核心策略 二、单片机IO口的几种模式 三、单片机的掉电运行模式 &#xff08;1&#xff09; 浅谈cpu运行为什么会需要时钟&#xff1f; &#xff08;2&#xff09;STC15系列单片机内部可以配置时钟 &#xff08;3&#xff09;分频策略&#xff0c;降低…

ubuntu22.04 安装部署05:禁用默认显卡驱动

一、相关文章 ubuntu22.04安装部署03&#xff1a; 设置root密码-CSDN博客 《ubuntu22.04装部署01&#xff1a;禁用内核更新》 《ubuntu22.04装部署02&#xff1a;禁用显卡更新》 二、场景说明 Ubuntu22.04 默认显卡驱动&#xff0c;如果安装cuda&#xff0c;需要单独安装显…

什么是向量数据库?为什么向量数据库对LLM很重要?

由于我们目前生活在人工智能革命之中&#xff0c;重要的是要了解许多新应用程序都依赖于向量嵌入&#xff08;vector embedding&#xff09;。因此&#xff0c;有必要了解向量数据库以及它们对 LLM 的重要性。 我们首先定义向量嵌入。向量嵌入是一种携带语义信息的数据表示形式…

了解海外云手机的多种功能

随着社会的高度发展&#xff0c;海外云手机成为商家不可或缺的工具&#xff0c;为企业出海提供了便利的解决方案。然而&#xff0c;谈及海外云手机&#xff0c;很多人仍不了解其强大功能。究竟海外云手机有哪些功能&#xff0c;可以为我们做些什么呢&#xff1f; 由于国内电商竞…

树与二叉树---数据结构

树作为一种逻辑结构&#xff0c;同时也是一种分层结构&#xff0c;具有以下两个特点&#xff1a; 1&#xff09;树的根结点没有前驱&#xff0c;除根结点外的所有结点有 且只有一个前驱。 2&#xff09;树中所有结点可以有零个或多个后继。 树结点数据结构 满二叉树和完全二…

Vue3编写简单的App组件(二)

一、Vue3页面渲染基本流程 1、入口文件 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><link rel"icon" href"/favicon.ico"><meta name"viewport" content"widthde…

PlantUML绘制UML图教程

UML&#xff08;Unified Modeling Language&#xff09;是一种通用的建模语言&#xff0c;广泛用于软件开发中对系统进行可视化建模。PlantUML是一款强大的工具&#xff0c;通过简单的文本描述&#xff0c;能够生成UML图&#xff0c;包括类图、时序图、用例图等。PlantUML是一款…

【前端web入门第四天】01 复合选择器与伪类选择器

文章目录: 1. 复合选择器 1.1 后代选择器 1.2 子代选择器 1.3 并集选择器1.4 交集选择器(了解) 2.伪类选择器 2.1 伪类-文本2.2 伪类-超链接&#xff08;拓展) 1. 复合选择器 什么叫复合选择器? 由两个或多个基础选择器&#xff0c;通过不同的方式组合而成。 复合选择器的作…

Python中使用opencv-python库进行颜色检测

Python中使用opencv-python库进行颜色检测 之前写过一篇VC中使用OpenCV进行颜色检测的博文&#xff0c;当然使用opencv-python库也可以实现。 在Python中使用opencv-python库进行颜色检测非常简单&#xff0c;首选读取一张彩色图像&#xff0c;并调用函数imgHSV cv2.cvtColor…

从REPR设计模式看 .NET的新生代类库FastEndpoints的威力

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !序言 又到了一年年末,春节将至…

Android SDK 上传 Maven 喂奶级教程

最近领导给安排了个任务&#xff0c;让我把我们现有的一个 SDK 上传到 Maven 上去&#xff0c;方便客户直接用 gradle 依赖&#xff0c;不再需要拷贝 jar 和 so 了&#xff0c;此前我也看过一些相关的文章我想问题也不大&#xff0c;觉得工作量也就一两天的事情&#xff0c;主要…

深度学习在知识图谱问答中的革新与挑战

目录 前言1 背景知识2 基于深度学习改进问句解析模型2.1 谓词匹配2.2 问句解析2.3 逐步生成查询图 3 基于深度学习的端到端模型3.1 端到端框架3.2 简单嵌入技术 4 优势4.1 深入的问题表示4.2 实体关系表示深挖4.3 候选答案排序效果好 5 挑战5.1 依赖大量训练语料5.2 推理类问句…

【原创 附源码】Flutter海外登录--Tiktok登录最详细流程

最近接触了几个海外登录的平台&#xff0c;踩了很多坑&#xff0c;也总结了很多东西&#xff0c;决定记录下来给路过的兄弟坐个参考&#xff0c;也留着以后留着回顾。更新时间为2024年2月7日&#xff0c;后续集成方式可能会有变动&#xff0c;所以目前的集成流程仅供参考&#…

uniapp的配置和使用

①安装环境和编辑器 注册小程序账号 微信开发者工具下载 uniapp 官网 HbuilderX 下载 首先先下载Hbuilder和微信开发者工具 &#xff08;都是傻瓜式安装&#xff09;&#xff0c;然后注册小程序账号&#xff1a; 拿到appid&#xff1a; ②简单通过demo使用微信开发者工具和…

Ribbon全方位解析:构建弹性的Java微服务

第1章 引言 大家好,我是小黑,咱们今天聊聊Ribbon,这货是个客户端负载均衡工具,用在Spring Cloud里面能让咱们的服务调用更加灵活和健壮。负载均衡,听起来挺高大上的,其实就是把外界的请求平摊到多个服务器上,避免某个服务器压力太大,其他的却在那儿闲着。 Ribbon的牛…

npm install express -g报错或一直卡着,亲测可解决

问题描述&#xff1a; 最近学习vue3前端框架&#xff0c;安装Node.js之后&#xff0c;在测试是否可行时&#xff0c;cmd窗口执行了&#xff1a;npm install express -g&#xff0c;发现如下图所示一直卡着不动&#xff0c;最后还报错了&#xff0c;网上找了好久&#xff0c;各…

Springboot根据环境读取application配置文件

目录 1. 首先创建两个不同配置文件 2. pom.xml 配置文件 3. 指定环境 4. 最后启动测试 1. 首先创建两个不同配置文件 分别为开发环境和生产环境 application-dev.properties 和 application-prod.properties application-dev.properties 配置为 1931 端口 application-pro…
最新文章