1. 程式人生 > >command not found 與 磁盤空間不足

command not found 與 磁盤空間不足

系統管理 image 空間不足 imp design 我們 import 如果 安裝linux

問題:原正常運行的一服務無法運行,報錯command not found,日誌顯示disk no space;

排查信息:df -hl

技術分享

根目錄所在磁盤空間已滿,使用命令在/noah下

解決:通過df -h 目錄名,確認處於sda2上的目錄,發現大量出core文件,清理,問題解決

後續:還是有個很傻的問題沒有清晰,Linux是如何查找文件的,根目錄所在磁盤已滿是怎樣影響到另一個文件系統下的命令的。

推測是由根目錄逐層尋找,但細節未確定,總覺得少點什麽,整理之。

一 文件系統與磁盤管理

(參考:主機規劃與磁盤分區)

安裝linux系統時就進行了磁盤分區(類似於windows 劃分出C/D/E盤),如上所述,出現sda6,無sda1,應該是磁盤劃分使用了擴展分區。

技術分享

而不同的目錄使用哪個磁盤分區則是通過“掛載” 實現的。所謂的『掛載』就是利用一個目錄當成進入點,將磁盤分區槽的數據放置在該目錄下; 也就是說,進入該目錄就可以讀取該分割槽的意思。這個動作我們稱為『掛載』,那個進入點的目錄我們稱為『掛載點』

技術分享

二 文件系統(一個可被掛載的數據為一個文件系統)

參考:文件系統管理

如果/nosh和/ 處於不同磁盤分區,不會直接從不同磁盤分區起始開始讀取麽?

1. Linux EXT2文件系統通常會將這兩部份的數據分別存放在不同的區塊,權限與屬性放置到 inode 中,至於實際數據則放置到 data block 區塊中。 另外,還有一個超級區塊 (superblock) 會記錄整個文件系統的整體信息,包括 inode 與 block 的總量、使用量、剩余量等。

技術分享

構成如下

技術分享

2. 目錄樹讀取

文件名的記錄是在目錄的 block 當中,因此當我們要讀取某個文件時,就務必會經過目錄的 inode 與 block ,然後才能夠找到那個待讀取文件的 inode 號碼, 最終才會讀到正確的文件的 block 內的數據。根目錄所在磁盤會導致所有內容都無法正常運行,找不到對應command.

command not found 與 磁盤空間不足