日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux节点释放,关于linux:如何释放Inode的使用量?

發布時間:2024/3/13 linux 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux节点释放,关于linux:如何释放Inode的使用量? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我有一個磁盤驅動器,其索引節點使用率為100%(使用df -i命令)。

但是,在實質上刪除文件后,使用率仍為100%。

那么正確的方法是什么?

磁盤空間使用較少的磁盤驅動器如何可能具有

Inode的使用率比磁盤空間使用率更高的磁盤驅動器高?

如果我壓縮大量文件,是否有可能減少使用的inode數量?

想給你50分的問題。 我能怎么做! :)

@Sophy不要那樣做。 你會被自動禁止

@StevenLu謝謝您的信息! 我想感謝他,因為我花了幾天時間解決我的問題。 但是這個問題可以幫助我。 再次感謝

@Sophy:為什么要為SO獎勵一些題外話? :)那絕對不是編程問題,無論獲得多少票。

空目錄也會占用inode。 刪除它們可以釋放一些索引節點。 在某些用例中,該數字可能很重要。 您可以使用以下命令刪除空目錄:find。 類型d-空-刪除

有用,但我投票決定關閉此問題為離題,因為這似乎屬于unix.stackexchange.com

如果您很不幸,您已經使用了所有索引節點的大約100%,并且無法創建Scipt。

您可以使用df -ih進行檢查。

然后,此bash命令可能會幫助您:

sudo find . -xdev -type f | cut -d"/" -f 2 | sort | uniq -c | sort -n

是的,這將花費一些時間,但是您可以找到包含最多文件的目錄。

可以解決問題。我的問題是/ lib / php / sessions目錄中有大量會話。也許有人有同樣的問題

Parallels plesk無法加載,ftp無法打開會話,Internet磁盤配額被取消(122)是當您的服務提供商將inode數(?文件)設置為最大時會遇到的一些問題即使您有無限的空間,也為20,000個inode(?文件)。

有人應該將此查找,剪切,uniq排序重寫為單個awk命令!

有時,它也有助于嘗試查找占用大量空間的目錄。例如,如果使用Apache默認配置啟用了mod_disk_cache,則您會發現varcacheapache2mod_disk_cache下的每個目錄僅具有合理的條目數量,但是整個層次結構將占用您的所有inode。運行du -hs *可能會提示一些占用比您預期更多的空間的地方。

@mogsie,awk是否能夠處理可能返回的數百萬行?

@alxndr awk可以保留目錄的哈希值和文件計數,而無需進行單調和分類。就是說,也許這是一個改進:find . -maxdepth 1 -type d | grep -v ^\.$ | xargs -n 1 -i{} find {} -xdev -type f | cut -d"" -f 2 | uniq -c | sort -n-這僅對最后一個列表進行排序。

如果您無法創建任何文件,則即使失敗也可能會失敗,因為sort可能無法將所有內容保留在內存中,并會嘗試自動回退以寫入臨時文件。一個顯然會失敗的過程...

謝謝,這完全幫助了我。我的小型VM的空間不足,但實際上是inode。最初,我四處清理大文件,但無濟于事,然后我運行了您的腳本并找到了一個包含6萬個小文件的目錄。我擺脫了他們,現在我重新開始營業。謝謝!

sort對我來說失敗了,但是我能夠給出有效的--buffer-size=10G。

@mogsie在我的版本中使用了一些gawk。這也算目錄。

@mogsie這是腳本的一個版本,它還計算目錄并處理包含換行符的文件名:find . -maxdepth 1 -not -path . -type d -print0 | xargs -0 -n 1 -I{} find {} -xdev -not -path {} -print0 | gawk BEGIN{RS="\0";FS="";ORS="\0"}{print $2} | uniq -cz | sort -nz。 gawk命令可以替換為grep -ozZ \.[^]*(由GNU grep 2.25測試)。不幸的是,cut不能處理空終止行。

@FrederickNord,sort失敗時的錯誤消息是什么?如何報告失敗?

@SteMa,目錄不可以自我清理嗎?

即使磁盤不是很滿,也很容易使用大量的索引節點。

索引節點已分配給文件,因此,如果您有成千上萬個文件(每個都有1字節),則在磁盤用盡之前,節點用盡了很長時間。

如果文件具有多個硬鏈接,則刪除文件也可能不會減少inode的數量。如我所說,inode屬于文件,而不是目錄條目。如果文件有兩個鏈接的目錄條目,則刪除其中一個不會釋放索引節點。

此外,您可以刪除目錄條目,但是,如果正在運行的進程仍打開了文件,則不會釋放索引節點。

我最初的建議是刪除所有可以刪除的文件,然后重新啟動該框以確保沒有使文件保持打開狀態的進程。

如果您這樣做仍然有問題,請告訴我們。

順便說一句,如果您要查找包含許多文件的目錄,此腳本可能會有所幫助:

#!/bin/bash

# count_em - count files in all subdirectories under current directory.

echo 'echo $(ls -a"$1" | wc -l) $1' >/tmp/count_em_$$

chmod 700 /tmp/count_em_$$

find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n

rm -f /tmp/count_em_$$

當然,>tmpcount_em_$$僅在有空間的情況下才起作用...如果是這樣,請參閱@simons答案。

@alxndr,這就是為什么將文件系統分開通常是一個好主意的原因-這樣,填充類似tmp之類的內容不會影響您的其他文件系統。

您的答案非常適合"如果刪除該文件,系統將不會在重新啟動后繼續使用該文件"。但是有人問,"刪除inode指針后如何回收或重用inode?"。基本上,Linux內核每次創建文件時都會在文件中創建一個新的索引節點,并且在刪除文件時也不會自動回收該索引節點。

@paxdiablo,您說:"我最初的建議是刪除所有可以刪除的文件,然后重新啟動該框,以確保沒有使文件保持打開狀態的進程。"但是其產品服務器無法重新啟動,因此如何在不重新啟動的情況下釋放那些inode

@AshishKarpe,我想您是在談論您自己的情況,因為OP沒有提及生產服務器。如果您不能立即重啟,則有兩種可能性。首先,希望運行中的進程最終關閉當前文件,以便可以釋放磁盤資源。其次,即使生產服務器也應有一定程度的重啟空間-只需安排一些計劃內的停機時間,或等待下一個停機時間窗口出現。

發現在/ tmp中創建了許多小文件,這些文件正在消耗inode,因此使用cmd" find / tmp -type f -mmin +100 -name" *" | perl -nle unlink;"將其釋放。 ..........謝謝

非常感謝這篇文章。我有一臺RHEL 6.3服務器,該服務器具有所有可用分區,但是由于count_em腳本,由于一些奇怪的緩存文件填充了/ var / lib / sss / db,因此我能夠看到/ var分區中的inode全部用完了目錄 。我所有的應用程序(包括auditd和lvm)都沒有任何可用空間。現在到真正的問題... :-(

我想您想要的是ls -A而不是ls -A。你為什么要數。和..?

我的情況是我沒有i節點,并且已經刪除了所有可能的內容。

$ df -i

Filesystem ? ? Inodes ?IUsed ?IFree IUse% Mounted on

/dev/sda1 ? ? ?942080 507361 ? ? 11 ?100% /

我在ubuntu 12.04LTS上,無法刪除占用約40萬個inode的舊linux內核,因為apt由于缺少軟件包而被破壞了。而且我無法安裝新軟件包,因為我不在inode里面,所以被卡住了。

我最終手動刪除了一些舊的Linux內核,以釋放大約10,000個inode。

$ sudo rm -rf /usr/src/linux-headers-3.2.0-2*

這足以讓我安裝缺少的軟件包并修復我的apt

$ sudo apt-get install linux-headers-3.2.0-76-generic-pae

然后使用apt刪除其余的舊Linux內核

$ sudo apt-get autoremove

現在情況好多了

$ df -i

Filesystem ? ? Inodes ?IUsed ?IFree IUse% Mounted on

/dev/sda1 ? ? ?942080 507361 434719 ? 54% /

在類似情況下,這是最接近我自己的方法。值得注意的是,在help.ubuntu.com/community/Lubuntu/Documentation/

我的情況恰好!但是不得不使用" sudo apt-get autoremove -f"來進行

執行以下操作是否安全:sudo rm -rf usrsrclinux-headers-3.2.0-2*,如果我確定我沒有使用該內核?

@MarsLee您可以使用" uname -a"檢查當前正在運行的內核

一個人叫$ sudo apt-get autoremove幫了我大忙。

我的解決方案:

嘗試查找這是否是inode的問題:

df -ih

嘗試查找具有大inode數量的根文件夾:

for i in /*; do echo $i; find $i |wc -l; done

嘗試查找特定的文件夾:

for i in /src/*; do echo $i; find $i |wc -l; done

如果這是linux標頭,請嘗試使用以下命令刪除最舊的標頭:

sudo apt-get autoremove linux-headers-3.13.0-24

我個人將它們移動到一個已安裝的文件夾(因為對我來說,上一個命令失敗)并使用以下命令安裝了最新的文件夾:

sudo apt-get autoremove -f

這解決了我的問題。

就我而言,問題是SpamAssasin-Temp。 find varspoolMailScannerincomingSpamAssassin-Temp -mtime +1 -print | xargs rm -f完成了工作:)謝謝!

對我來說,這要花幾個小時。但是,有一個簡單的解決方案:當第二個命令掛在特定目錄上時,請終止當前命令,然后重新將/ *更改為掛在其上的任何目錄。我能夠深入分析罪魁禍首。

我使用了此命令的此變體以便在同一行上打印數字:for i in usrsrc*; do echo -en"$i\t"; find $i 2>devnull |wc -l; done

for i in src*; do echo"$i, `find $i |wc -l`"; done|sort -nrk 2|head -10展示前10大目錄

我有同樣的問題,通過刪除php的目錄會話來解決它

rm -rf /var/lib/php/sessions/

如果您使用的是較早的php版本,則可能在/var/lib/php5下。

使用以下權限重新創建

mkdir /var/lib/php/sessions/ && chmod 1733 /var/lib/php/sessions/

默認情況下,Debian上目錄的權限顯示為drwx-wx-wt(1733)

知道為什么會這樣嗎?

@Sibidharan在我的情況下,這是因為清除舊PHP會話的PHP cron工作無法正常工作。

rm -rf varlibphpsessions*可能是一個更好的命令-它不會刪除會話目錄,只刪除其目錄...那么您不必擔心重新創建它

我沒有php會話,但有magento會話問題,與此類似。感謝您的指導。

php會話不應通過cron作業清除,請在php.ini php.net/manual/zh/中設置session.gc_maxlifetime

您可以使用RSYNC刪除大量文件

rsync -a --delete blanktest/ test/

創建其中包含0個文件的blanktest文件夾,命令將使您的測試文件夾與大量文件同步(我已使用此方法刪除了近5M個文件)。

感謝http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux

從文章/評論中可以看出,由于擴展了通配符并傳遞/處理了每個參數,對于許多文件來說,這比rm *更快,但是對于刪除包含很多文件的test文件夾,rm test很好文件。

垃圾郵件攻擊后,我們在HostGator帳戶(所有主機上都設置了inode限制)上經歷了這一情況。它在/root/.cpanel/comet中留下了大量隊列記錄。如果發生這種情況,并且發現沒有可用的inode,則可以通過shell運行以下cpanel實用程序:

/usr/local/cpanel/bin/purge_dead_comet_files

如前所述,如果有很多小文件,文件系統可能會用盡inode。我提供了一些方法來查找包含最多文件的目錄。

最近,我們遇到了類似的問題,如果某個進程引用了已刪除的文件,則不會釋放該Inode,因此您需要檢查lsof /,然后終止進程并重新啟動該進程將釋放這些inode。

如果這里不對,請糾正我。

eaccelerator可能會導致此問題,因為它將PHP編譯為塊...我在負載較重的站點上使用Amazon AWS服務器遇到了此問題。如果仍然存在問題,請通過刪除/ var / cache / eaccelerator中的eaccelerator緩存來釋放Inode。

rm -rf /var/cache/eaccelerator/*

(或任何您的緩存目錄)

到目前為止,對這個問題有許多答案,而以上所有內容似乎都是具體的。 我認為在使用過程中使用stat會很安全,但是取決于OS,您可能會遇到一些inode錯誤。 因此,使用64bit實現您自己的stat調用功能以避免任何溢出問題似乎是相當兼容的。

我們很喜歡這里的例子;)

如果使用docker,請刪除所有圖像。 他們使用了很多空間。

停止所有容器

docker stop $(docker ps -a -q)

刪除所有容器

docker rm $(docker ps -a -q)

刪除所有圖片

docker rmi $(docker images -q)

對我有用

這無助于檢測" inode過多"是否是問題所在。

這與Docker無關。

總結

以上是生活随笔為你收集整理的Linux节点释放,关于linux:如何释放Inode的使用量?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。