问题记录 bug1-系统上电挂载异常分区,df与du命令查看文件使用大小显示不一样

news2024/11/16 8:51:59

linux磁盘分区

在Linux中,一切皆目录,每一块硬盘分区对应Linux的一个目录,所以我们可以通过管理目录来管理硬盘分区,而将硬盘分区与文件目录关联的操作就称为“挂载”【mount】,反之为“卸载”【unmount】
在这里插入图片描述

emmc,nandflash,第一次使用时是需要进行分区的,BootLoader,kernel,dts,rootfs,usrdate等等。
kernel启动时,会根据设计好的分区,进行划分,系统每次上电时,需要对划分的分区进行文件挂载,才能使用这个分区,
在里面读写文件。
mount –t ext4 –o rw /dev/vblkdev11 /logs1
mount –t ext4 –o rw /dev/vblkdev12 /logs2

将vblkdev11 挂载在logs上,如果是ext4格式的,就是用ext4格式对这个分区进行文件管理,记录读写文件
在这里插入图片描述
我们分配的block0p1,是给根文件系统用的,kernel启动后,会将/root挂载在这个分区,这样,后面kernel挂载完驱动后,就会去启动第一个进程,并使用/etc下的各种配置文件,对系统进行配置,比如配置网卡ip,配置log日志,并启动各种脚本,各种用户程序。
在这之前,还会挂载用户设计的分区,比如block5,6,7,等下面这些磁盘分区,在根文件系统有用户写好的脚本,指定对应的文件夹,
挂载在对应的分区上,这样,就可以读取这个文件夹的数据,这些分区不是rootfs根文件系统哦,虽然在root下,可以访问各个文件夹,
只是rootfs提给的一个接口,访问通道,用户分区是用户分区,与root根文件系统不是同一个分区,
在这里插入图片描述

根文件系统下可以看到一个log分区,他并不属于rootfs,我们的rootfs只有11g,如果有大量的数据,是放不下的,所以需要分配用户分区,
在这里插入图片描述

然后下电时,需要卸载umount驱动,卸载挂载文件,

、查看磁盘挂载情况
1、相关指令

lsblk-------显示磁盘信息
lsblk -f-------显示详细信息
在这里插入图片描述

对硬盘进行分区
分区指令:fdisk/dev/xxx
接下来对sdb硬盘分两个区,每个区各3G

进入主题:挂载异常分区,df与du命令,大小显示不一样的原因

一直在报 IOError: [Errno 28] No space left on device 内存不足的错误,用df查看查看使用率是100%,但是用du检查发现还有7G的内存。所以一直在好奇为什么 df du差别这么大,我电脑消失的7个G去哪了呢?
大概了解了一下du和df的区别:
du: disk usage 磁盘空间,是文件夹里所有文件大小叠加在一起计算的。
df: disk free 磁盘空闲空间,是通过统计磁盘中空闲计算的。

1、系统在跑时,有很多进程在运行,如果删除某些进程正在使用的文件,实际是只删除了内存的文件,原理是文件时躺在磁盘emmc,nandflash,硬盘,这种介质里的,需要打开某个文件时,系统会读取这个文件到内存,当关闭close时,才会刷新到磁盘里,或使用sync指令,会刷新,所以,直接删除文件,进程仍然在使用这个文件句柄fd,使用du指令是统计文件大小的指令,当一个文件被删除后,在文件系统目录中已经不可见了,所以du就不会再统计它了,但文件仍然还在硬盘里,df命令是统计硬盘大小的文件,会统计这个文件的大小,所以,df与du看到差异很大。

用 lsof 寻找打开的文件
lsof (list open files) 命令列出特定的文件系统、目录或设备上所有打开的文件以及与它们相关联的进程。在大多数 UNIX 和类 UNIX 系统上都可以使用 lsof 命令。

使用这个命令lsof |grep deleted查看哪些文件被删除,或lsof log 或 lsof |grep log,列出使用这个文件夹的进程,然后kill命令,对其进行删除。再使用du和df统计,就是一样的,或者重启系统,就会恢复。
在这里插入图片描述

我在网络上搜索了众多的资源,都没有说出最终的解决办法,因为大部分人认为,df和du显示空间不一致,都是因为有程序或服务占用造成的,而我的并没有占用,那么就不是这个原因,重启服务器或服务器根本不能解决这个问题。
2、第二点是分区里,文件出现了损坏,du命令无法对损坏文件进行统计,df查看是,这些文件,仍然在磁盘里。

重点来了!上面文章说过:df可以统计已经删除的但还在被使用的,du不统计已经删除的,那么如果损坏的文件会不会被统计呢?从解决这个问题上来讲,损坏的文件并不是被删除,而是还存在的资源,但是df却已经统计不到了,但du却可以统计到,这个问题真是弄得我心力憔悴,我是怎么发现这些文件已经损坏了呢?当然用du命令查看大文件时发现的。命令是:du -h --max-depth=1。红框中的就是未被找到,暂时认为已经损坏的文件。
在这里插入图片描述
于是乎,我们利用修复命令修复一下文件系统:

命令如下: fsck -fyv /dev/vdb1

/dev/vdb1 是磁盘,你的可能是别的,请自己查看。如果不能运行,那么还请取消挂载然umount /www,再运行 fsck -fyv /dev/vdb1,如果成功,说明就是这个原因导致的,此时你再次运行df和du已经一样,问题就找到了。成功后还请您再次重新挂载您的硬盘。
————————————————
版权声明:本文为CSDN博主「那片沉默的天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lianjiangdai/article/details/107490656

根据这个博主说的,确实解决了问题,所以,这里提一下,为啥会出现这种损坏文件,导致磁盘分区异常的呢,有可能是系统关机过程,正在写文件,突然断电了,就会导致这个文件的损坏,所以一般正常的关机,都会去umount 驱动,挂载文件,

所以,我查询关掉所有的与log有关的进程,umount –f /logs,如果出现busy,一定是有进程没有关闭完,使用这个log文件,
然后使用,修复磁盘,e2fsck -p -f /dev/vblkdev11
又提示,使用这个 fsck -fyv /dev/vdb11,e2fsck和fsck是差不多的,带不同参数会有不同作用,可以查下,
然后,badblocks -b 4096 -c 16 /dev/vblkdev11 -o hda-badblocks-list ,检测硬盘坏道,并将结果输出到当前目录下,
完成后cat hda-badblocks-list,检查是否有坏块的问题。

按理上面步骤可以,重新挂载上,df与du查下是正常的,
我是忘了,直接 mkfs.ext4 /dev/vblkdev11 ,对block11分区进行格式化,
mount –t ext4 –o rw /dev/vblkdev11 /logs , 重新挂载到logs目录,
检查logs分区,磁盘是可以恢复正常。
但是如果有重要文件,不能直接格式他,直接fsck修复就可以,

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

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

相关文章

C高级 text

1.从命令行传参传入两个整数,整数1代表从整数几开始求和,整数2代表求和到整数几为止 2.打印99乘法表 3.输入年月日,计算是该年的第几天 1. 2. 3.

Linux进程基础

进程指正在运行的程序,如下图示,是资源分配的最小单位,可以通过“ps ”或“top”等命令查看正 在运行的进程,线程是系统的最小调度单位,一个进程可以拥有多个线程,同一进程里的线程可以共享此 进程的同一资…

Server版支持即将到期,Jira和Confluence如何迁移?(2)

到2024年2月,Atlassian将终止对Server产品及插件的所有支持。是时候制定您的迁移计划了——Atlassian为您提供两种迁移选择,一是本地部署的数据中心版本,中国用户25人以上即可使用,二是云版。作为Atlassian全球白金合作伙伴&#…

Markdown可以在线编辑吗?这个办法很好用

Markdown是一种轻量级标记语言,它使用简单的语法来创建文本,非常易于学习。它最初被设计为一种用于写作的格式,但现在已经成为了一种非常受欢迎的文本编辑工具。 作为一个较为方便的在线文本编辑器,它可以用代码代替文字&#xf…

一篇完整的测试方案怎么写

看上面的目录,详细 文档说明 文档名称 创建人/修改人 版本 时间 备注 v1.0 2022-11-17 新建 v1.1 2022-11-25 v1.2 2022-12-05 v2.0 2022-12-13 v2.1 2022-12-14 一、文档目的 为软件开发项目管理者、软件工程师、系统维护工程师、测试…

如何开发合成物品功能?

UE5 插件开发指南 前言0 数据结构1 合成面板UI组件2 小结前言 现在策划有一个合成物品的需求:可以将多个低级物品合成高级物品,如果背包中已有低级物品了,合成时需要减掉物品的费用,只需要支付合成费;提供玩家一个合成物品的层级视图,以便于玩家有节奏的购买物品,如下图…

电影《刀剑神域进击篇:暮色黄昏》观后感

上周看了电影《刀剑神域进击篇:暮色黄昏》,刀剑神域系列质量还是非常不错的, 本部电影讲述主角团队攻克boss,阻止公会团体互相打架的故事。 刀剑系列,记得当初是以一部连载动漫为开端,如果不是特别喜欢看动…

计算机网络—HTTP基本概念、HTTPS、HTTP状态码、HTTP缓存、HTTP请求

参考小林coding HTTP基本概念 HTTP是超文本传输协议。所谓的超文本,就是超越了普通文本的文本,最关键的是有超链接,能从一个超文本跳转到另一个超文本。 HTML是最常见的超文本,本身是纯文字文件,但是内部使用很多标签…

Scrum敏捷项目管理实例

这是一个Scrum敏捷单团队敏捷开发示例。 1、建立产品路线图 首先我们需要为这个项目创建一个产品路线图,产品路线图是一个高层次的战略计划,它描述了产品在未来一段时间可能会如何发展和壮大,产品路线图确保整个产品团队持续关注产品的目标…

GEE:对Landsat遥感影像进行处理,水体提取与可视化

作者:CSDN @ _养乐多_ 本文介绍了通过Google Earth Engine平台,并使用Landsat卫星遥感数据提取水体掩膜的方法和代码。通过裁剪和去除云等处理步骤,最终得到具有水体掩膜的影像,并进行可视化和导出。这种方法基于归一化水体指数(MNDWI)和OTSU阈值计算技术,使用了一个自…

MyBatis(MyBatis环境搭建,单表操作)

目录 MyBatis 环境搭建 1.添加 Mybatis 框架支持 2.设置 MyBatis 配置信息 2.1.设置数据库连接的相关信息 2.2 Mybatis xml 保存路径和 xml命名格式 ​编辑 MyBatis 模式开发 Mybatis xml 模板 查询表内容 单元测试 以根据id,查询用户对象这个方法为例 获取动态参数的…

警惕,最近的副业兼职诈骗。

大家好,我是鸟哥。 今天和大家聊聊最近超级猖狂的几类诈骗。 一、副业诈骗。最近两年“副业刚需”这个口号很流行,尤其是今年,职场动荡、工作难找,副业刚需变成了副业焦虑,骗子们也正是抓住了大家的这个心理&#xf…

【Vue全家桶实现电商系统】— VSCode配置Git(二)

【Vue全家桶实现电商系统】— VSCode配置Git(二) 当我们在VScode中编写代码后,需要提交到git仓库时,但是我们又不想切换到git的命令行窗口,我们可以在 VScode中配置git,然后就可以很方便快捷的把代码提交…

JavaScript中的Hook技术:特性、优点、缺点和使用场景

引言: 随着JavaScript的不断发展,开发者们正在寻找更灵活和可扩展的方式来修改或扩展现有的代码。其中一种广泛应用的技术是"Hook",它允许开发者拦截和修改现有的函数或方法的行为。本文将详细介绍JavaScript中的Hook技术&#xf…

软件确认测试、验收测试和系统测试有什么区别和联系?

软件确认测试、验收测试和系统测试都是软件测试过程中的重要环节,它们各自有不同的测试侧重点和目标,但也有一些联系。 1、软件确认测试 称为单元测试或白盒测试,是对软件中各个模块的基本功能进行测试的一种测试方式,主要使用…

【Python从入门到进阶】22、urllib库基本使用

接上篇《21、爬虫相关概念介绍》 上一篇我们介绍了爬虫的相关概念,本篇我们来介绍一下用Python实现爬虫的必备基础,urllib库的学习。 一、Python库的概念 我们今后的学习可能需要用到很多python库(library),及引用其…

在阿里外包干了3个月,我果断跑路了

有一种打工人的羡慕,叫做“大厂”。 真是年少不知大厂香,错把青春插稻秧。 但是,在深圳有一群比大厂员工更庞大的群体,他们顶着大厂的“名”,做着大厂的工作,还可以享受大厂的伙食,却没有大厂…

Python接口自动化脚本持续集成过程

之前都是开发人员提交代码到git,触发jenkins拉取git上面的代码并进行编译部署,部署成功后测试人员就可以在浏览器端开始测试了。 作为测试人员,也有跟git和jenkins打交道的时候。 项目实践: python接口自动化脚本编写成功后&am…

图解LeetCode——102. 二叉树的层序遍历

一、题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 二、示例 2.1> 示例 1: 【输入】root [3,9,20,null,null,15,7] 【输出】[[3],[9,20],[15,7]] 2.2> 示例…

Redis7实战加面试题-高阶篇(手写Redis分布式锁)

手写Redis分布式锁 面试题: 1.Redis除了拿来做缓存,你还见过基于Redis的什么用法? 数据共享,分布式session分布式锁 全局ID 计算器、点赞位统计 购物车 轻量级消息队列(list,stream) 抽奖 点赞、签到、打…