1. 程式人生 > >"No space left on device" 磁盤空間提示不足解決辦法

"No space left on device" 磁盤空間提示不足解決辦法

src shm linux mkdir 是什麽 mount 排查 滿了 人在

首先先要解釋什麽是inode?

inode在linux中,每個文件,不管大小是多少都會對應一個inode,inode就是一個專門用來保存文件屬性,權限和指針(指向block)

inodex滿了會導致什麽問題?

首先,在linux中,有兩個概念,就是block和inode,block:用於存放實際數據,inode:存放文件屬性,只要這兩個其中一個占滿空間了,都會導致提示報錯“磁盤空間不足”

技術分享圖片

**inodex故障模擬

某年某月某日某時,某人在工作中設置crontab定時任務規則保存時,提示“No space left on device”,此時用df -h檢查磁盤,發現還有剩余空間.請問是什麽原因及如何排查?什麽會導致這種事情發生

1.模擬測試環境
系統:centos 7.4,磁盤空間8G,CPU 4核,內存4G(最好給大點,創建文件需要大內存)

[root@xmh ~]# mkdir /test
[root@xmh ~]# echo /test/{1..6000000}.txt |xargs touch #創建的文件太多了,只能用這種方式創建

2.進入正題

#1.當進入編輯cronta或者創建文件時,直接報錯,提示磁盤空間不足
[root@xmh ~]# crontab -e
/tmp/crontab.MApBTV: No space left on device
[root@xmh ~]# touch xmh.txt
touch: cannot touch ‘xmh.txt’: No space left on device

2.查看磁盤空間
[root@xmh ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       8.0G  3.2G  4.9G  39% /      ##可以發現磁盤容量是空閑很多的
devtmpfs        1.7G     0  1.7G   0% /dev
tmpfs           1.7G     0  1.7G   0% /dev/shm
tmpfs           1.7G  8.7M  1.7G   1% /run
tmpfs           1.7G     0  1.7G   0% /sys/fs/cgroup
tmpfs           332M     0  332M   0% /run/user/0

3.查看inode空間
[root@xmh ~]# df -i
Filesystem      Inodes   IUsed  IFree IUse% Mounted on
/dev/sda1      4193792 4193792      0  100% /       #但是inode空間已滿了
devtmpfs        422466     395 422071    1% /dev
tmpfs           424923       1 424922    1% /dev/shm
tmpfs           424923     473 424450    1% /run
tmpfs           424923      16 424907    1% /sys/fs/cgroup
tmpfs           424923       1 424922    1% /run/user/0

提示:當磁盤容量或inode容量任意一個不足時就都會提示No space left on device

3.解決辦法
使用find命令查找大於10M的目錄,可以從df -i看出是在 根 /下容量不足,那麽我們就從 / 下開始排查

[root@xmh ~]# find / -type d  -size +10M |xargs  ls -lhd  #find查找
drwxr-xr-x. 2 root root 97M Feb 15 14:00 /test

[root@xmh ~]# ls /test/ |wc -l  #對該目錄文件數量統計
4168011

#定位好目錄後刪除小文件
[root@xmh /]# rm -rf /test/*  #直接 rm -rf * 的話是刪除不了大量的小文件
-bash: /usr/bin/rm: Argument list too long

[root@xmh /]# cd /test/
[root@xmh test]# ls |xargs rm -f#刪除大量的小文件,使用該命令刪除
[root@xmh /]# ls /test/ |wc -l #小文件已經刪除了

#再次查看inode容量
[root@xmh ~]# df -i
Filesystem      Inodes IUsed   IFree IUse% Mounted on
/dev/sda1      4193792 25973 4167819    1% /    #inode容量已恢復正常
devtmpfs        422466   395  422071    1% /dev
tmpfs           424923     1  424922    1% /dev/shm
tmpfs           424923   473  424450    1% /run
tmpfs           424923    16  424907    1% /sys/fs/cgroup
tmpfs           424923     1  424922    1% /run/user/0

#刪除小文件所在的目錄(刪除時註意記錄該目錄的所屬用戶和權限)
[root@jason /]# rm -rf /test/

"No space left on device" 磁盤空間提示不足解決辦法