No space left on device错误解决
?轉(zhuǎn)載自 :http://hi.baidu.com/yonjun_feng/blog/item/c6746efc2b5c7b88b901a0cd.html
?
No space left on device錯(cuò)誤解決筆記
今天準(zhǔn)備重啟下數(shù)據(jù)庫(linux oracle11g)
conn /as sysdba; 出現(xiàn)這樣的錯(cuò)誤No space left on device 一看 沒有足夠的空間
郁悶! 看看空間大小 df -h 空間只用了10%不到呢。
重啟計(jì)算機(jī)不能解決;
于是google baidu一下,總結(jié):inode耗盡導(dǎo)致No space left on device;
解決:刪除 var的一個(gè)子目錄下一些沒用的臨時(shí)文件和日志文件;通過刪除大量的小文件得以解決
或者:ipcs -s | grep nobody | perl -e 'while (<STDIN>) { @a=split(/\s+/); print `ipcrm sem $a[1]`}'
刪除信號(hào)量
至于為什么呢? 鏈接看看1,http://www.zeali.net/entry/480??
為了防止鏈接死掉: 轉(zhuǎn)下來更深刻的去了解
“--”
看到這個(gè)錯(cuò)誤,第一個(gè)反應(yīng)是磁盤空間滿了;但?df?一看,每個(gè)分區(qū)的空間都還富余的很。從?munin?的監(jiān)控圖表上看 Filesystem usage 也很平穩(wěn),但下面的 Inode usage 就有問題了,其中一個(gè)分區(qū)的 usage 已經(jīng)到了100%。趕緊跑到服務(wù)器上?df -i?檢查,果然是 Inode 耗盡。原來這個(gè)分區(qū)是用來扔各種日志和臨時(shí)文件的,其中有某個(gè)程序產(chǎn)生的臨時(shí)文件又小又多,又沒有進(jìn)行定時(shí)回滾,造成在磁盤空間耗盡之前文件系統(tǒng)的 Inode 就被用光了。
Linux/Unix like OS 的文件系統(tǒng)中每個(gè)目錄樹中的節(jié)點(diǎn)并不是像 Windows 那樣直接包含文件的具體信息,而只包含了文件名和 Inode number 。通過 Inode number 所找到對(duì)應(yīng)于文件名的 Inode 節(jié)點(diǎn)中才真正記錄了文件的大小/物理地址/所有者/訪問權(quán)限/時(shí)間戳/被硬鏈接的次數(shù)等實(shí)際的?metadata?。因此你可以在 Linux 系統(tǒng)中通過硬鏈接( hard link ) 的方式給某個(gè)文件創(chuàng)建無數(shù)個(gè)位于不同目錄下的文件名,而實(shí)際的文件數(shù)據(jù)只需要一份拷貝。
但也正因?yàn)檫@種文件系統(tǒng)的結(jié)構(gòu),當(dāng)你在 Linux 中進(jìn)行 IO 操作的時(shí)候,需要的資源除了磁盤空間以外,還要有剩余的 Inode 才行。缺省情況下, Linux 在系統(tǒng)安裝過程中按照1個(gè) Inode 對(duì)應(yīng) 2k 磁盤空間來計(jì)算每個(gè)分區(qū)的最大 Inode 數(shù)。一旦文件系統(tǒng)創(chuàng)建之后,每個(gè)分區(qū)可用 Inode 數(shù)就無法進(jìn)行動(dòng)態(tài)調(diào)整。
正常來說,一般不太會(huì)出現(xiàn)某個(gè)分區(qū)的 Inode 耗盡而磁盤空間尚余的情況,除非像我碰到的這樣垃圾小文件瘋長(zhǎng)而又沒進(jìn)行有效的清理。但如果確實(shí)需要的話,可以在創(chuàng)建文件系統(tǒng)(比如用?mke2fs?)的時(shí)候根據(jù)實(shí)際需要來調(diào)整這個(gè)參數(shù)(比如分區(qū)如果用于存放超大視頻文件的話 Inode 的數(shù)量可以少一些;如果打算存放的文件是大量小于 2k 的迷你文件的話就要考慮多創(chuàng)建一些 Inode)。
附:Inode Definition by The Linux Information Project
其它人碰到的 No space left on device 原因:
超出系統(tǒng)中同時(shí)運(yùn)行的最大 message queue 個(gè)數(shù)限制?: 在?root?下用?sysctl kernel.msgmni?檢查該參數(shù),sysctl -w kernel.msgmni=XXX?重新設(shè)定即可。
?
總結(jié)
以上是生活随笔為你收集整理的No space left on device错误解决的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDFS体系架构介绍
- 下一篇: DM8168学习--内存烧写位置