雲直充 雲直充 立即諮詢

阿里雲代理開戶服務 阿裡雲 Linux ECS 提示 Disk quota exceeded(磁碟配額超限)解決辦法

阿里雲國際 / 2026-08-01 16:25:49

一、先搞懂 Disk quota exceeded 是什麼

在阿里雲 Linux ECS 上看到 Disk quota exceeded,很多人第一反應是磁碟滿了,但實際上不一定。這個錯誤更常見的意思是:系統判定你已經超過了某個限制,可能是使用者配額、群組配額、檔案數量上限,或是某個掛載分區已經沒有可用空間。

如果你平時只是在終端機裡寫檔、解壓、部署程式,錯誤通常會先出現在 /home/var/tmp 這類常用路徑。有時候表面上看起來還有空間,但因為 inode 用完、程序占著已刪除的檔案,或者雲端磁碟擴容後沒有把檔案系統一併撐大,最後都會冒出這句提示。

所以處理這類問題,不能只靠刪幾個檔案碰運氣,正確做法是先定位來源,再對症下藥。只要把來源找準,大部分情況都能很快恢復正常寫入。

二、先做三個最基本的檢查

先看磁碟空間是否真的滿了

先執行 df -h,確認各個掛載點的使用率。重點不是只看根目錄,而是要看你實際寫入的那個分區。很多人明明是往資料盤寫檔,卻只盯著 / 分區,結果方向從一開始就錯了。

如果 //home 或資料掛載點的使用率已經接近 100%,那就先處理空間問題。可先清理暫存、日誌、舊備份,再觀察是否恢復正常。

再看 inode 是否耗盡

有些情況下 df -h 看起來還有空間,但寫檔仍然失敗,這時要檢查 inode。執行 df -i,如果某個分區的 inode 已經接近 100%,代表不是容量不夠,而是檔案數量太多。這種問題在大量小檔案的場景特別常見,例如快取、郵件目錄、臨時檔、日誌切分目錄,或者某些應用不斷生成小型中間檔。

inode 用完時,即使只是一個幾 KB 的小檔案,也可能建立失敗。這也是為什麼有些人刪了幾個大檔後還是報錯,因為真正卡住的不是容量,而是檔案索引。

確認是否啟用了使用者配額

如果伺服器有設定配額,執行 quota -s 可以先看目前使用者的限制與使用量。若是系統層面有統計所有使用者,也可以用 repquota -a 查看整體配額狀況。當你自己的帳號已經碰到硬限制時,就算整個分區還有空間,也一樣會被拒絕寫入。

在多人共用的 ECS、教學環境、代管主機或企業內部機器上,這種情況尤其常見。管理者也可能只針對某個目錄啟用配額,例如只限制 /home,但不限制其他路徑。這就是為什麼同一台機器上,有些地方能寫,有些地方不能寫。

三、最常見的四種原因

一、使用者或群組配額超限

這是最符合字面意思的一種。當磁碟配額啟用後,系統會限制某個使用者或群組可以使用多少空間、建立多少檔案。一旦超過上限,寫入就會直接失敗,常見提示就是 Disk quota exceeded

這種情況的特徵很明顯:同一分區裡,其他使用者可能還能正常寫,只有特定帳號出錯。若你有權限管理系統,可以用 edquotasetquota 調整限制;如果只是一般使用者,就只能先清掉自己的資料,或者請管理者放寬配額。

二、inode 已經用完

inode 用盡時,檔案系統還剩下容量,卻無法再建立新檔。這種問題看起來很反直覺,但在 Linux 上非常常見。大量小檔案,尤其是每個檔案都不大,但數量龐大時,最容易把 inode 吃光。

例如網站快取、壓縮解壓後的中間目錄、容器資料、編譯產物、臨時轉檔結果,都可能讓 inode 先爆掉。這時候單純刪大檔不一定有效,因為真正的瓶頸是檔案數量,而不是檔案大小。

三、刪掉檔案後,程序其實還在占用

Linux 裡有個常見陷阱:檔案雖然被刪掉了,但如果程序還開著這個檔案,空間不會立刻釋放。表面上 ls 看不到檔案,du 也不一定能完全反映,但磁碟空間仍然卡住。這種情況在日誌檔、資料庫、長時間運作的服務上最常發生。

可以用 lsof +L1 找出已刪除但仍被占用的檔案。找到之後,通常要重啟對應服務,或者讓程序重新打開檔案,空間才會真正釋放。這一步很關鍵,因為很多人清理完檔案卻沒重啟服務,結果以為沒效果,其實只是占用還在。

四、擴容了磁碟,卻沒把檔案系統一起撐大

在阿里雲 ECS 上手動擴容雲盤後,如果只在控制台把容量調大,卻沒有在作業系統內延伸分區和檔案系統,Linux 看到的可用空間還是原來那麼多。這種情況很容易讓人誤判成配額問題。

所以擴容後一定要確認三件事:磁碟容量有沒有變大、分區有沒有跟著擴、檔案系統有沒有成功擴展。少做一步,都可能讓錯誤繼續存在。

四、對應的修復方法

先清理最容易回收的空間

如果是容量真的不足,先從風險最低的地方下手。通常可以優先查看 /var/log、應用日誌、快取目錄、臨時檔與舊備份。很多服務會把大量日誌寫在同一個目錄裡,時間一長就會把磁碟塞滿。

清理時要避免一口氣刪掉正在使用中的服務資料。對於資料庫、網站服務、排程系統,先確認檔案用途,再決定是刪除、壓縮還是輪替。最穩妥的做法通常是先備份,再整理。

找出被占用的已刪除檔案

如果你確認空間不對勁,但 du 加總起來又沒有那麼大,可以用 lsof +L1 查。這個指令能找出已經刪除、但仍被程序持有的檔案。看到結果後,先確認是哪個服務在占用,再決定是否重啟。

阿里雲代理開戶服務 這種問題在 Nginx、Java 應用、Python 常駐程序、資料庫相關服務裡都可能出現。重啟服務前先評估業務影響,避免在高峰期直接動作。若是系統服務日誌占空間,通常重新載入或重啟日誌相關程序後就能釋放。

調整配額設定

如果確認是配額超限,而你又有管理權限,就需要從根本上調整限制。可以透過 edquota 編輯使用者或群組配額,或者用 setquota 直接指定新的軟限制與硬限制。調整前先看清楚目前到底是誰超限,別把限制改錯對象。

若這台 ECS 是多人共用,建議不要無限制放大配額,而是根據實際用途調整。比如開發機可以給較寬鬆的空間,但正式環境應保留一定餘量,避免單一帳號把整個系統拖垮。

擴容雲盤並延伸檔案系統

阿里雲代理開戶服務 如果磁碟本身真的不夠用,最直接的辦法就是在阿里雲控制台擴容雲盤,然後回到系統內完成後續步驟。先用 lsblkdf -h 確認磁碟與掛載點名稱,再依檔案系統類型處理。若是 ext4,通常會用 resize2fs;若是 xfs,通常會用 xfs_growfs。如果中間還有分區,可以先用 growpart 將分區擴到新容量。

如果系統使用的是 LVM,流程會再多一層,通常要先把物理卷撐大,再擴邏輯卷,最後才是擴檔案系統。這類操作要特別小心,因為順序錯了容易失敗。執行前先確認掛載路徑、裝置名稱和檔案系統格式,別憑印象操作。

五、不同路徑報錯時的判斷方式

/home 報錯

阿里雲代理開戶服務 如果是在個人目錄下寫檔失敗,最先懷疑的通常是使用者配額。先看 quota -s,再看 df -hdf -i。若其他路徑可正常寫入,而只有自己的主目錄不行,配額問題的機率很高。

/var 報錯

/var 通常放日誌、快取、服務資料,最容易因為長期堆積而出事。這裡的關鍵不是刪得快,而是先分清楚哪個子目錄在暴增。可先用 du -sh /var/* 逐層看,找出最大元兇,再進一步處理。

/tmp 報錯

/tmp 是臨時工作區,很多程式會在這裡建立中間檔。若有大量轉檔、編譯或批次任務,/tmp 很快就會塞滿。這時除了清理舊暫存,也要檢查程式是否有異常重複產生檔案,不然清完很快又滿。

六、實務上最有效的排查順序

真正遇到這個錯誤時,建議依照下面順序處理,效率通常最高。

  • 阿里雲代理開戶服務 先用 df -h 看空間是否真的滿。
  • 再用 df -i 排除 inode 問題。
  • 接著用 quota -srepquota -a 看配額。
  • du -sh 找出異常大的目錄。
  • lsof +L1 查已刪除但仍被占用的檔案。
  • 最後再考慮擴容、調 quota 或調整服務配置。

這樣做的好處是,不會一開始就把問題歸咎於磁碟空間,也不會在錯誤方向上浪費時間。很多故障其實不是大問題,只是檢查順序不對,導致看起來很棘手。

七、預防比事後救火更重要

如果你希望這類問題少發生,平時就要做幾件事。第一,替日誌設好輪替,避免無限成長。第二,定期檢查資料目錄,確認是否有失控的小檔案堆積。第三,對關鍵分區保留足夠餘量,不要把磁碟用到最後一格才處理。第四,擴容後一定要把檔案系統補完整,別只在雲端控制台改容量。

對於重要業務機,最好再加上監控與告警。當磁碟使用率、inode 使用率、配額接近上限時就提前通知,比等到服務寫不進去再處理,成本要低得多。阿里雲 ECS 的彈性很高,但彈性不代表可以忽略容量管理,真正穩定的系統,靠的是平時的規劃,而不是出事後的臨時補救。

八、結語

Disk quota exceeded 看起來像一個單純的磁碟錯誤,實際上背後可能有好幾層原因。只要先分辨是配額、容量、inode、程序占用,還是擴容步驟沒做完,問題通常都能很快定位。對阿里雲 Linux ECS 來說,最實用的思路就是先查、再判斷、最後處理,不要急著亂刪檔,也不要只看表面提示。

把排查順序養成習慣之後,這類錯誤其實不難處理。真正難的不是修復,而是避免下次再發生。只要日常把監控、輪替、備份和容量預留做好,磁碟配額超限就不會變成反覆出現的老問題。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系