爲什麼要做磁盤清理與空間管理?

當你的Linux服務器提示“磁盤空間不足”時,系統可能會變得卡頓、應用無法安裝或更新,甚至影響服務運行。定期清理和管理磁盤空間,能讓系統保持高效運行,避免突發故障。本文將用簡單易懂的方式,教你如何診斷和解決磁盤空間問題。

一、查看磁盤空間:先搞清楚“喫”了多少空間

1. 查看整體磁盤使用情況

最常用的命令是 df(Disk Free),它能顯示所有掛載點的空間使用狀態。
示例

df -h
  • -h 參數:將空間單位轉爲人類可讀形式(如 1K 顯示爲 1K1024K 顯示爲 1M)。

輸出解釋
| 列名 | 含義 |
|------------|----------------------------------------------------------------------|
| Filesystem | 磁盤設備名稱(如 /dev/sda1) |
| Size | 磁盤總容量 |
| Used | 已用空間 |
| Avail | 可用空間 |
| Use% | 使用率(超過80%時需警惕) |
| Mounted on | 該磁盤掛載的目錄(如 / 是根目錄,/home 是用戶主目錄掛載點) |

注意df -h 會顯示所有文件系統,包括臨時文件系統(如 /tmp),但臨時文件通常可安全清理。

2. 查看單個目錄/文件的大小

如果 df 顯示磁盤整體滿了,需要定位具體哪個目錄佔用了空間,用 du(Disk Usage)命令。
示例1:查看某個目錄的總大小

du -sh /var/log
  • -s 參數:僅顯示目錄的總大小(不遞歸子目錄);-h 同上,轉爲人類可讀單位。
  • 若想查看 /var/log 下所有子目錄的大小,去掉 -s 即可:du -h /var/log

示例2:遞歸查找大文件
如果想找系統中所有超過100MB的文件,用 find 命令:

find / -type f -size +100M 2>/dev/null
  • -type f:只找普通文件(排除目錄、設備等);
  • -size +100M:文件大小超過100MB;
  • 2>/dev/null:屏蔽錯誤信息(如無權限訪問的目錄)。

二、磁盤清理:刪除“不需要的空間”

1. 清理日誌文件(最常見的“空間殺手”)

日誌文件(如 /var/log 下的文件)是磁盤空間的主要佔用者,尤其是系統日誌、應用日誌(如Nginx、MySQL日誌)。
操作步驟
- 第一步:查看日誌目錄大小

  du -sh /var/log/*

找到佔用大的日誌文件(如 nginx/access.logsyslog)。

  • 第二步:清理舊日誌
    日誌文件可直接刪除(需確認內容已備份或無需保留):
  # 先查看日誌內容,確認是否重要(以Nginx日誌爲例)
  tail /var/log/nginx/access.log
  # 若確認無用,清空或刪除(注意:若日誌服務正在運行,直接刪除可能導致日誌丟失,建議先截斷)

  # 清空日誌(推薦,不影響服務運行)
  > /var/log/nginx/access.log

  # 或刪除舊日誌文件(需確保文件名正確,避免誤刪)
  rm -f /var/log/nginx/access.log.1  # 刪除帶編號的舊日誌(如.log.1、.log.2)

技巧:系統日誌通常由 logrotate 工具自動輪轉(生成舊日誌文件並清空),可通過 logrotate 配置自動清理。

2. 清理緩存和臨時文件

Linux會緩存數據到內存提升性能,但若內存不足,緩存可能佔用大量磁盤空間。
清理系統緩存

# 1. 先同步數據到磁盤(避免數據丟失)
sync

# 2. 釋放緩存(需root權限)
sudo sysctl -w vm.drop_caches=3
  • vm.drop_caches=3:釋放所有緩存(包括頁面緩存、目錄項緩存等),系統會自動恢復緩存。

清理臨時文件
系統臨時文件(如 /tmp/var/tmp)可安全清理:

# 清理/tmp目錄下所有文件(注意:臨時文件可能被其他程序佔用,建議先確認)
sudo rm -rf /tmp/*

# 清理apt緩存(Debian/Ubuntu系統,yum/dnf同理)
sudo apt clean  # 清理所有已下載的安裝包緩存
sudo apt autoclean  # 只清理過期的安裝包緩存

3. 清理用戶數據和舊文件

用戶目錄(如 /home)或共享目錄可能存放大量冗餘文件:
步驟
- 檢查主目錄大文件

  # 查看當前用戶主目錄下的大文件(如超過100MB)
  du -sh ~/.*  # ~ 表示當前用戶主目錄
  # 進入目錄確認文件用途
  cd ~/Downloads  # 檢查下載目錄
  du -sh *  # 查看目錄內文件大小
  • 刪除無用文件
    警告:刪除前務必確認文件用途!
  # 刪除指定文件(如確認無用的大文件)
  rm ~/Downloads/large_file.zip

  # 刪除多個文件(如確認所有*.tmp臨時文件)
  rm ~/tmp/*.tmp

安全操作:若不確定文件是否有用,先用 ls 列出文件,確認後再刪除:

ls ~/old_data  # 查看目錄內容
rm -i ~/old_data/unused_file  # -i 參數會提示確認刪除

三、空間不足時的“擴容”思路

如果清理後仍空間不足,可能需要擴容磁盤:

1. 掛載新磁盤(推薦)

若服務器有未掛載的新磁盤,直接掛載即可:

# 查看新磁盤設備名(如 /dev/sdb)
lsblk

# 格式化磁盤(僅首次操作,需確認設備名!)
sudo mkfs.ext4 /dev/sdb

# 創建掛載點目錄
sudo mkdir /mnt/new_disk

# 掛載磁盤
sudo mount /dev/sdb /mnt/new_disk

# 永久掛載(避免重啓後失效)
sudo vim /etc/fstab  # 編輯fstab文件,添加一行:
/dev/sdb   /mnt/new_disk   ext4   defaults   0   0

2. 調整分區大小(謹慎操作)

若需擴展現有分區(如根分區 /),需使用工具(如 partedgparted)調整分區大小。⚠️ 風險較高,必須先備份數據!
- 步驟:卸載分區 → 調整大小 → 重新掛載。
- 建議:若對分區操作不熟悉,可聯繫服務器管理員或使用可視化工具(如 gparted)。

四、日常維護建議

  1. 定期檢查磁盤空間
    每天或每週用 df -h 查看磁盤使用率,超過80%時及時清理。
  2. 設置日誌輪轉
    配置 logrotate 自動清理舊日誌(如 nginxsyslog 日誌)。
  3. 避免在根目錄存放數據
    重要數據放在 /home/data 等獨立掛載點,減少根分區壓力。
  4. 不要隨意刪除系統文件
    /etc/bin/usr 等目錄下的系統文件需謹慎操作,避免破壞系統。

總結

磁盤清理與空間管理的核心是“定位大文件 → 清理無用數據 → 定期維護”。通過 dfdu 命令快速診斷,優先清理日誌、緩存和臨時文件,再考慮擴容。日常養成定期檢查的習慣,能有效避免磁盤空間不足的問題。記住:操作前務必備份重要數據,刪除文件前確認用途,謹慎使用 rm 命令!

小夜