zzzzzzzzzzzzzzzzz

在这里插入图片描述

欢迎关注博主 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.mzph.cn/news/674087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Snipaste使用

今天推荐一款好用的截图、贴图软件工具,名字叫Snipaste,以下是官方介绍的截图 软件官方下载地址: Snipaste 下载 1、截图功能 2、标注 3、开发中的使用 有时候在开发中需要临时把一些任务规则信息,放在代码编辑器旁边进行参考&am…

linux之wsl2安装远程桌面

0. 安装后的效果 1. wsl中打开terminal并安装库 sudo apt-get purge xrdp sudo apt install -y xrdp sudo apt install -y xfce4 sudo apt install -y xfce4-goodies 2.优化显示 sudo sed -i s/max_bpp32/#max_bpp32\nmax_bpp128/g /etc/xrdp/xrdp.ini sudo sed -i s/xserverbp…

安全名词解析-水坑攻击、鱼叉攻击、钓鲸攻击

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 水坑攻击02 鱼叉攻击03 钓鲸攻击 01 水坑攻击 水坑攻击(Watering Hole Attack)是一种针对特定目标的网络攻击方式。顾名思义,是在受害者必经之路设置了一个“水坑…

百亿规模京东实时浏览记录系统的设计与实现

百亿规模京东实时浏览记录系统的设计与实现 系统介绍 浏览记录系统主要用来记录京东用户的实时浏览记录,并提供实时查询浏览数据的功能。在线用户访问一次商品详情页,浏览记录系统就会记录用户的一条浏览数据,并针对该浏览数据进行商品维度…

分享80个行业PPT,总有一款适合您

分享80个行业PPT,总有一款适合您 80个行业PPT下载链接:https://pan.baidu.com/s/1sc44xGll2RZ8Q2aiKDbjEA?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不易。知…

阿里云ECS服务器Linux安装Mysql8

链接:https://pan.baidu.com/s/1s9j7OhiOMV9e9Qq9GDbysA 提取码:dd5a --来自百度网盘超级会员V5的分享 Mysql官网:MySQL 关于Mysql Yum Repository介绍可以看下 更加简单 关于X86和ARM 传到服务器 进入所在包 cd /usr/local/develop/mysql8 解压 …

数据结构 - 线段树

1. 预制值: 构建的数组为,nums:【2, 5, 1, 4, 3】区间和问题,假设求区间 [1,3] 的和 2. 建树 2.1 构建线段树数组 int[] segT new int[4*n](为什么数组大…

红队打靶练习:PHOTOGRAPHER: 1

目录 信息收集 1、arp 2、nmap 3、nikto 目录扫描 1、gobuster 2、dirsearch WEB 信息收集 enum4linux smbclient 8000端口 CMS利用 信息收集 文件上传漏洞利用 提权 信息收集 get user.txt get flag 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# a…

Codeforces Round 923 (Div. 3)

Codeforces Round 923 (Div. 3) Codeforces Round 923 (Div. 3) A. Make it White 题意&#xff1a;略 思路&#xff1a;找最小和最大的‘B’下标即可 AC code&#xff1a; void solve() {cin >>n;string s; cin>> s;int mn INF, mx 0;for (int i 0; i <…

Linux文件和目录管理

目录基础 Linux操作系统以目录的方式来组织和管理系统中的所有文件。所谓的目录&#xff0c;就是将所有文件的说明信息采用树状结构组织起来。每个目录节点之下会有文件和子目录。 所有一切都从 ‘根’ 开始&#xff0c;用 ‘/’ 代表, 并且延伸到子目录。 bin&#xff1a;B…

ongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(2)-Swagger框架集成

Swagger是什么&#xff1f; Swagger是一个规范且完整API文档管理框架&#xff0c;可以用于生成、描述和调用可视化的RESTful风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口&#xff0c;可以让人和计算机拥有无须访问源码、文档或网络流量监测就…

Java并发基础:Deque接口和Queue接口的区别?

核心概念 Deque&#xff08;double ended queue&#xff0c;双端队列&#xff09;和Queue&#xff08;队列&#xff09;都是Java集合框架中的接口&#xff0c;它们用于处理元素的排队和出队&#xff0c;但是它们之间存在一些重要的区别&#xff0c;如下&#xff1a; 1、Queue…

HarmonyOS 创建components目录 定义全局自定义组件导出供整个项目使用

之前我的文章 harmonyOS 自定义组件基础演示讲解 我们讲解了 自定义组件的基础用法 但是 我们是写在单个page文件中的 这样 我们跨文件使用就很不友好了 如下图 指向 ets目录下 创建一个目录 按我们 前端开发以往的习惯 这个目录要叫 components 专门放组件集合的地方 然后 按…

《MySQL 简易速速上手小册》第3章:性能优化策略(2024 最新版)

文章目录 3.1 查询优化技巧3.1.1 基础知识3.1.2 重点案例3.1.3 拓展案例 3.2 索引和查询性能3.2.1 基础知识3.2.2 重点案例3.2.3 拓展案例 3.3 优化数据库结构和存储引擎3.3.1 基础知识3.3.2 重点案例3.3.3 拓展案例 3.1 查询优化技巧 让我们来聊聊如何让你的 MySQL 查询跑得像…

3.3-媒资管理之MinIo分布式文件系统上传视频

文章目录 媒资管理5 上传视频5.1 需求分析5.2 断点续传技术5.2.1 什么是断点续传5.2.2 分块与合并测试5.2.3 视频上传流程5.2.4 minio合并文件测试 5.3 接口定义5.4 上传分块开发5.4.1 DAO开发5.4.2 Service开发5.4.2.1 检查文件和分块5.4.2.2 上传分块5.4.2.3 上传分块测试 5.…

高并发对于服务器性能有什么要求?

随着互联网的普及和应用程序的复杂度增加&#xff0c;高并发已经成为许多应用程序必须面对的问题。高并发是指在短时间内有大量用户同时访问应用程序或数据库&#xff0c;对服务器性能提出了更高的要求。本文将探讨高并发对于服务器性能的要求。 一、高并发对服务器硬件的要求…

【Fabric.js】监听画布or元素的点击、选中、移动、添加、删除销毁、变形等各事件

在fabric使用过程中&#xff0c;如果想要玩各种花样&#xff0c;那么fabric的事件监听是一定、必须、肯定要掌握&#xff01;&#xff01;&#xff01; 例子就用vue项目组件里的代码&#xff0c;fabric的使用跟vue、react、angular之类的框架都没任何关系&#xff01; 并且本de…

第205篇| 送给新年12条格言,一些有用的废话

这是2024年一月份flomo和notion 上聚合的系列文章 (01)&#xff1b; 具体方法用的是这个 &#xff1a; 【知识沙虫&#xff0c;一个简单易用的知识体系建模工具】https://mp.weixin.qq.com/s/V2Cdq-1PbMQYvpE4o9NLpQ 首先&#xff0c;方法用下来还是很给力的。输出很快。不过前…

SERVLET过滤器

SERVLET过滤器 全球因特网用户使用不同类型的Web浏览器访问应用服务器上存储的Web应用程序。每个浏览器根据对应的Web浏览器窗口中的设置显示应用程序中的信息。Web应用程序可能会有一些客户机的Web浏览器不支持的HTML标记或功能。这种情况下,应用程序在客户机的Web浏览器中可…

MIMIC-IV官方视图解析 - AKI 肌酐 (kdigo_creatinine、kdigo_stages)

判断AKI我们可以通过肌酐和尿量两个指标来看&#xff0c; 今天我们主要提取肌酐。 kidgo指南的表格 AKI诊断标准&#xff1a;符合以下情况之一者即可被诊断为AKI&#xff1a;①48小时内Scr升高超过26.5μmol/L(0.3mg/dl)&#xff1b;②Scr升高超过基线1.5倍——确认或推测为7…