首先先要解釋什麼是inode?node
inode在linux中,每一個文件,無論大小是多少都會對應一個inode,inode就是一個專門用來保存文件屬性,權限和指針(指向block)linux
inodex滿了會致使什麼問題?centos
首先,在linux中,有兩個概念,就是block和inode,block:用於存放實際數據,inode:存放文件屬性,只要這兩個其中一個佔滿空間了,都會致使提示報錯「磁盤空間不足」bash
**inodex故障模擬ide
某年某月某日某時,某人在工做中設置crontab定時任務規則保存時,提示「No space left on device」,此時用df -h檢查磁盤,發現還有剩餘空間.請問是什麼緣由及如何排查?什麼會致使這種事情發生測試
1.模擬測試環境
系統:centos 7.4,磁盤空間8G,CPU 4核,內存4G(最好給大點,建立文件須要大內存)spa
[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看出是在 根 /下容量不足,那麼咱們就從 / 下開始排查code
[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/