磁盘相关命令和磁盘故障案例

本文介绍了Linux系统中磁盘空间不足的排查流程,包括`df -h`和`df -i`命令的区别,以及如何处理磁盘inode耗尽的情况。同时,讲解了在删除大量文件时遇到的'Argument list too long'问题及其解决方案,并演示了如何使用`lsof`监控文件删除状态。此外,还提到了`dd`命令的作用以及Java占用内存过高导致的swap问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

磁盘相关命令和磁盘故障案例

No Space Left on Device

磁盘空间不足
block满了 文件没有彻底删除 磁盘空间不足
	原因
		Linux彻底删除文件
		1.文件硬链接数为0 (没有入口)
		2.文件进程调用为0(重启服务)
	排查过程
		df -h 满了  du -sh /* 没有满
		lsof |grep delete
			lsof标记表示 :硬链接数为0 进程调用数不为0
		重启服务
Block
	原因
	排查流程
		df  -h  查看磁盘整体情况
		du  -sh  一层一层查找
			du 查看目录占用的空间
				-h 人类可读大小进行显示
				-s 让du只显示总共多大 如果不加  则显示目录下面所有目录的大小
			soft
				-r
					逆序
				-n
					按数字顺序排列
				排序例子
					seq 20 |soft -rn
		查找到某个文件或目录(比较大)
		确认之后再删除
Inode
	原因
		磁盘inode用光了
	排查
		df -h没满    df -i 满了
排查流程.
du  -sh  一层一层查找
du 查看目录占用的空间
					-h 人类可读大小进行显示
					-s 让du只显示总共多大 如果不加  则显示目录下面所有目录的大小 

在这里插入图片描述

特殊: 注意: 用了 -h 就不能用 -n 会冲突

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

			soft  相同的数字位先排序
				-rn
					按数字顺序逆序
				-r
					按数字顺序正序排列
                  排序例子
					seq 20 |soft -rn

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

df -h 是目前文件系统的空间整体使用情况 df -i 参数指的是inode

#创建1100k磁盘 
##第1个里程碑-创建100k的文件
[root@oldboyedu-59 ~]# dd  if=/dev/zero  of=/tmp/100k bs=1k count=100
100+0 records in
100+0 records out
102400 bytes (102 kB) copied, 0.0010836 s, 94.5 MB/s

dd  if=/dev/zero      of=/tmp/100k    bs=1k                   count=100
    input file        output file     block size              数量 
    从哪里获取数据    输出文件        每次复制多大(10k 1M)


/dev/zero #白洞  源源不断输出  
/dev/null #黑洞    
/dev/urandom #生成随机数


##第2个里程碑-格式化

[root@oldboyedu-59 ~]# mkfs.ext4 /tmp/100k 
mke2fs 1.42.9 (28-Dec-2013)
/tmp/100k is not a block special device.
Proceed anyway? (y,n) y

Filesystem too small for a journal
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
16 inodes, 100 blocks
5 blocks (5.00%) reserved for the super user
First data block=1
1 block group
8192 blocks per group, 8192 fragments per group
16 inodes per group

Allocating group tables: done                            
Writing inode tables: done                            
Writing superblocks and filesystem accounting information: done


[root@oldboyedu-59 ~]# file /tmp/100k 
/tmp/100k: Linux rev 1.0 ext2 filesystem data, UUID=a80758ff-2f86-4285-b905-20bdc16e170d (extents) (64bit) (huge files)

##第3个里程碑-挂载到 /app/log目录(默认不存在)  挂载后用df -h 查看
[root@oldboyedu-59 ~]# #第3个里程碑-挂载到 /app/log目录(默认不存在)  挂载后用df -h 查看
[root@oldboyedu-59 ~]#  mkdir -p /app/log 
[root@oldboyedu-59 ~]# mount /tmp/100k   /app/log/
[root@oldboyedu-59 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        20G  1.9G   18G  10% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.5M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/loop1       93K   14K   72K  17% /app/log
[root@oldboyedu-59 ~]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda3      9973248 63084 9910164    1% /
devtmpfs        250786   394  250392    1% /dev
tmpfs           253511     1  253510    1% /dev/shm
tmpfs           253511   713  252798    1% /run
tmpfs           253511    16  253495    1% /sys/fs/cgroup
/dev/sda1       102400   326  102074    1% /boot
tmpfs           253511     1  253510    1% /run/user/0
/dev/loop1          16    11       5   69% /app/log

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

Inode
原因
磁盘inode用光了
排查
df -h没满 df -i 满了
**

[root@oldboyedu-59 /app/log]# #模拟inode满了
[root@oldboyedu-59 /app/log]# rm -rf oldboy{01..10}.txt
[root@oldboyedu-59 /app/log]# rm -rf oldboy{01..10}.txtcd
[root@oldboyedu-59 /app/log]# 
[root@oldboyedu-59 /app/log]# cd
[root@oldboyedu-59 ~]# 
[root@oldboyedu-59 ~]# #模拟inode满了
[root@oldboyedu-59 ~]# cd /app/log/
[root@oldboyedu-59 /app/log]# touch oldboy{01..10}.txt 
touch: cannot touch ‘oldboy06.txt’: No space left on device
touch: cannot touch ‘oldboy07.txt’: No space left on device
touch: cannot touch ‘oldboy08.txt’: No space left on device
touch: cannot touch ‘oldboy09.txt’: No space left on device
touch: cannot touch ‘oldboy10.txt’: No space left on device
[root@oldboyedu-59 /app/log]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        20G  1.9G   18G  10% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.5M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           199M     0  199M   0% /run/user/0
/dev/loop1       93K   14K   72K  17% /app/log
[root@oldboyedu-59 /app/log]# touch oldboy.txt 
touch: cannot touch ‘oldboy.txt’: No space left on device
[root@oldboyedu-59 /app/log]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda3      9973248 63084 9910164    1% /
devtmpfs        250786   394  250392    1% /dev
tmpfs           253511     1  253510    1% /dev/shm
tmpfs           253511   713  252798    1% /run
tmpfs           253511    16  253495    1% /sys/fs/cgroup
/dev/sda1       102400   326  102074    1% /boot
tmpfs           253511     1  253510    1% /run/user/0
/dev/loop1          16    16       0  100% /app/log

Linux下面删除大量小文件(文件)Argument list too long 解决流程
命令不支持文件名字过多
ls或find / |xargs 进行删除或处理
删除文件所在目录(记号权限和所有者)

#Linux下面删除大量小文件(文件)  Argument list too long 解决流程
[root@oldboyedu59 ~]# mkdir test 
[root@oldboyedu59 ~]# touch test/{1..400000}
-bash: /usr/bin/touch: Argument list too long
[root@oldboyedu59 ~]# ls test/
[root@oldboyedu59 ~]# echo  test/{1..400000}|xargs touch 

##报错 
[root@oldboyedu59 ~]# ls test/|wc -l
400000
[root@oldboyedu59 ~]# \rm test/*
-bash: /usr/bin/rm: Argument list too long

##解决
ls或find +|xargs rm -f
即 ls test/ |xargs rm -f
   find  test/* -type f |xargs rm – f
block满了 文件没有彻底删除 磁盘空间不足
	原因
		Linux彻底删除文件
		1.文件硬链接数为0 (没有入口)
		2.文件进程调用为0(重启服务)
	排查过程
		df -h 满了  du -sh /* 没有满
		lsof |grep delete
			lsof标记表示 :硬链接数为0 进程调用数不为0
		重启服务

在这里插入图片描述
yum install -y lsof
lsof list open files 显示系统中所有被打开的文件(使用中)
在这里插入图片描述
#模拟文件没有被彻底删除导致磁盘空间不足
可以用vim alex.txt 或者 tail -f alez.txt

进程调用
#在一个新的窗口 打开实时监控 lsof的delete标记说明
[root@oldboyedu-59 ~]# touch alex.txt
[root@oldboyedu-59 ~]# tail -f alex.txt
在这里插入图片描述
#在另一个窗口
[root@oldboyedu-59 ~]# lsof |grep alex.txt
tail 16472 root 3r REG 8,3 0 34987689 /root/alex.txt
在这里插入图片描述
[root@oldboyedu-59 ~]# rm -f alex.txt
[root@oldboyedu-59 ~]# ls -l alex.txt
ls: cannot access alex.txt: No such file or directory
[root@oldboyedu-59 ~]# lsof |grep alex.txt
tail 16472 root 3r REG 8,3 0 34987689 /root/alex.txt (deleted)

只要有(deleted) 这个标记,就表示这个文件就没有被彻底删除
在这里插入图片描述
在这里插入图片描述

dd 既能创建文件,还能测速

Java故障案例
Java大量占用内存,占用swap
如何增加swap
查看swap

	第1个里程碑-创建指定的大小文件 500m
		dd if=/dev/zero of=/tmp/500m  bs=1M count=500
	第2个里程碑-称为swap(格式化)
		mkfs (make filesystem)格式化
		mkswap
		mkswap /tmp/500m
	第3个里程碑-激活(挂载)
		chmod 600 /tmp/500m
		swapon /tmp/500m
	第4个里程碑-永久挂载
		1./etc/fstab
			在CentOS7中通过dd创建文件 增加swap 无法使用
			除了CentOS7 其他可以正常使用
		2./etc/rc.local (CentOS 临时增加swap推荐)
#第1个里程碑-创建指定的大小文件 500m
[root@oldboyedu-59 ~]# dd if=/dev/zero of=/tmp/500m bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 1.60953 s, 326 MB/s
#第2个里程碑-称为swap(格式化)
[root@oldboyedu-59 ~]# mkswap /tmp/500m
Setting up swapspace version 1, size = 511996 KiB
no label, UUID=8d1c1880-f3ea-4883-8253-40e56c957081
#第3个里程碑-激活(挂载)
[root@oldboyedu-59 ~]# swapon /tmp/500m            卸载命令 swapoff
swapon: /tmp/500m: insecure permissions 0644, 0600 suggested.
[root@oldboyedu-59 ~]# chmod 600 /tmp/500m
[root@oldboyedu-59 ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/sda2                              	partition	819196	0	-2
/tmp/500m                              	file	511996	0	-3
#第4个里程碑-永久挂载
[root@oldboyedu-59 ~]# #1./etc/fstab在CentOS7中通过dd创建文件 增加swap 无法使用,除了CentOS7 其他可以正常使用
[root@oldboyedu-59 ~]# #2./etc/rc.local (CentOS 临时增加swap推荐)
[root@oldboyedu-59 ~]# # dd创建文件,把创建的文件vim加入到/etc/rc.local中 来增加swap
[root@oldboyedu-59 ~]# vim /etc/rc.local

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

文件系统
常见文件系统
文件系统应用场景
CDN是啥?

文件系统:
装修风格—决定房屋怎么住人
文件系统: 文件在磁盘中如何存放 存放规则

硬盘 ---->分区-------->格式化 创建文件系统----->挂载
划分隔断 装修 安装门窗

常见的文件系统:

	CentOS 7     默认的文件系统xfs 
	CentOS 6     默认的文件系统ext4 
	CentOS 5     默认的文件系统ext3   
	交换分区     swap      
	内存文件系统 tmpfs   存放的数据是在内存中  用于加速或存放缓存
	SUSE         reiserFS

应用场景

	reiserfs大量小文件业务首选reiserfs(100K以内), 单独安装。
	xfs有的门户的数据库MySQL业务会选择xfs。
	ext4 视频下载,流媒体,数据库,小文件业务也OK,可以用默认的。
	ext2 没有日志(不是messages cron secure),蓝汛、网宿的cache业务,CDN 网站加速服务的。
	swap  交换分区 内存不足临时充当内存
	tmpfs 用于加速或存放缓存

CDN是啥?
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值