爲什麼要做磁盤清理與空間管理?¶
當你的Linux服務器提示“磁盤空間不足”時,系統可能會變得卡頓、應用無法安裝或更新,甚至影響服務運行。定期清理和管理磁盤空間,能讓系統保持高效運行,避免突發故障。本文將用簡單易懂的方式,教你如何診斷和解決磁盤空間問題。
一、查看磁盤空間:先搞清楚“喫”了多少空間¶
1. 查看整體磁盤使用情況¶
最常用的命令是 df(Disk Free),它能顯示所有掛載點的空間使用狀態。
示例:
df -h
-h參數:將空間單位轉爲人類可讀形式(如1K顯示爲1K,1024K顯示爲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.log、syslog)。
- 第二步:清理舊日誌
日誌文件可直接刪除(需確認內容已備份或無需保留):
# 先查看日誌內容,確認是否重要(以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. 調整分區大小(謹慎操作)¶
若需擴展現有分區(如根分區 /),需使用工具(如 parted、gparted)調整分區大小。⚠️ 風險較高,必須先備份數據!
- 步驟:卸載分區 → 調整大小 → 重新掛載。
- 建議:若對分區操作不熟悉,可聯繫服務器管理員或使用可視化工具(如 gparted)。
四、日常維護建議¶
- 定期檢查磁盤空間:
每天或每週用df -h查看磁盤使用率,超過80%時及時清理。 - 設置日誌輪轉:
配置logrotate自動清理舊日誌(如nginx、syslog日誌)。 - 避免在根目錄存放數據:
重要數據放在/home、/data等獨立掛載點,減少根分區壓力。 - 不要隨意刪除系統文件:
如/etc、/bin、/usr等目錄下的系統文件需謹慎操作,避免破壞系統。
總結¶
磁盤清理與空間管理的核心是“定位大文件 → 清理無用數據 → 定期維護”。通過 df 和 du 命令快速診斷,優先清理日誌、緩存和臨時文件,再考慮擴容。日常養成定期檢查的習慣,能有效避免磁盤空間不足的問題。記住:操作前務必備份重要數據,刪除文件前確認用途,謹慎使用 rm 命令!