磁盘满的本质分析——磁盘空间满与inode节点满

简介: 磁盘满的本质分析——磁盘空间满与inode节点满

文件在保存到磁盘(硬盘)的时候,除了保存文件的内容,还包括时间信息、权限信息、文件归属信息、文件名等等。这些文件信息都是存在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不够用了。

相关文章
|
4月前
|
5G
不重做系统给硬盘分配合适的空间(分区助手)
不重做系统给硬盘分配合适的空间(分区助手)
128 0
|
1月前
|
存储 算法 Unix
文件系统基础 (二)——文件的物理结构
文件系统基础 (二)——文件的物理结构
48 1
|
4月前
|
存储 弹性计算 运维
磁盘使用分析
【4月更文挑战第30天】
41 0
|
4月前
|
数据库 OceanBase
"磁盘空洞"通常指的是磁盘上有空间未被使用
【2月更文挑战第29天】"磁盘空洞"通常指的是磁盘上有空间未被使用
50 2
|
10月前
|
存储 关系型数据库 MySQL
空闲空间管理和文件系统结构的优化策略
对于有科班背景的读者,可以跳过本系列文章。这些文章的主要目的是通过简单易懂的汇总,帮助非科班出身的读者理解底层知识,进一步了解为什么在面试中会涉及这些底层问题。否则,某些概念将始终无法理解。这些计算机基础文章将为你打通知识的任督二脉,祝你在编程领域中取得成功!
空闲空间管理和文件系统结构的优化策略
|
存储 缓存 固态存储
【Linux】基础IO --- 内核级和用户级缓冲区、磁盘结构、磁盘的分治管理、block group块组剖析…
【Linux】基础IO --- 内核级和用户级缓冲区、磁盘结构、磁盘的分治管理、block group块组剖析…
|
存储 Linux Windows
理解文件系统/inode的概念/磁盘/软硬链接
本文目标:⭐理解文件系统中inode的概念⭐认识软硬链接,对比区别。讲解了文件系统,加深了对文件的理解,与此同时对于磁盘的理解也有很大的帮助!
理解文件系统/inode的概念/磁盘/软硬链接
磁盘满了,为啥du却显示还有很大空间?
今天有个实习生问了我一个诡异的问题,“线下一台磁盘大小32G的开发机(虚拟机)打不出日志”,把追查过程和大家分享一下。
641 0
|
Shell Linux 存储
磁盘格式化/磁盘挂载/手动增加swap空间
  4.5/4.6 磁盘格式化  4.7/4.8 磁盘挂载 4.9 手动增加swap空间     磁盘格式化  查看centos7支持的文件系统格式 cat  /etc/filesystem,centos7默认的文件系统格式xfs     ce...
1553 0