一、磁盤空間現狀查看
要管理CentOS磁盤空間,首先需清晰掌握當前使用情況。常用命令如下:
df -h
:以易讀格式(GB/MB)顯示所有掛載點的磁盤使用情況,包括總容量、已用空間、剩余空間及使用百分比,快速識別空間不足的分區(如根分區/
)。du -sh *
:遞歸統計當前目錄下各子目錄/文件的大小,-s
選項僅顯示總計,-h
選項轉為易讀格式,常用于定位大文件/目錄(如du -sh /var/*
查看/var
目錄下各子目錄大?。?。ncdu
:基于文本的交互式磁盤分析工具,比du
更直觀。安裝命令為sudo yum install ncdu
(CentOS 8及以上用dnf
),運行ncdu /
可掃描根目錄,通過方向鍵瀏覽目錄,按Enter
進入子目錄,按d
刪除文件/目錄。二、日??臻g清理技巧
清理無用文件是釋放空間的最有效手段,重點關注以下場景:
/var/cache/yum
(CentOS 7)或/var/cache/dnf
(CentOS 8及以上),占用大量空間。使用sudo yum clean all
(CentOS 7)或sudo dnf clean all
(CentOS 8及以上)清除緩存。/tmp
目錄下的臨時文件(如用戶會話文件、軟件臨時文件)可安全刪除,命令為sudo rm -rf /tmp/*
(注意:避免刪除正在使用的臨時文件)。/boot
分區空間。使用sudo package-cleanup --oldkernels --count=1
保留最新1個內核,刪除其余舊內核(需root權限)。/home/*/.local/share/Trash/*
)需手動清理,命令為sudo rm -rf /home/*/.local/share/Trash/*
。gzip
或zip
壓縮,例如gzip large_file.log
(壓縮后生成large_file.log.gz
,原文件被刪除)。三、日志文件管理
日志文件(如/var/log/messages
、/var/log/secure
)隨時間增長會占用大量空間,需定期維護:
truncate
命令將大日志文件清空,例如find /var/log -type f -name "*.log" -size +50M -exec truncate -s 0 {} \;
(查找/var/log
下大于50MB的.log
文件并清空)。logrotate
工具自動輪轉、壓縮、刪除舊日志。編輯/etc/logrotate.conf
(全局配置)或/etc/logrotate.d/
下的應用配置(如/etc/logrotate.d/nginx
),設置輪轉周期(如daily
)、保留份數(如rotate 7
,保留7天日志)、壓縮選項(如compress
)。例如,每日輪轉Nginx日志并保留7份:/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
}
四、LVM動態擴展(推薦)
若系統使用LVM(邏輯卷管理),可通過以下步驟在線擴展磁盤空間,無需卸載分區或重啟系統:
lsblk
確認新磁盤設備名(如/dev/sdb
)。sudo pvcreate /dev/sdb
。centos
),命令為sudo vgextend centos /dev/sdb
。root
)的大小,例如增加50GB:sudo lvextend -L +50G /dev/mapper/centos-root
(或用-l +100%FREE
使用所有剩余空間)。xfs_growfs
(CentOS 7/8默認),Ext4用resize2fs
:sudo xfs_growfs /dev/mapper/centos-root # XFS文件系統
sudo resize2fs /dev/mapper/centos-root # Ext4文件系統
五、非LVM環境擴容
若未使用LVM,需通過分區+格式化+掛載的方式擴展空間:
/dev/sdb
)。fdisk /dev/sdb
創建新分區(如/dev/sdb1
),設置分區類型為Linux
(83
),保存退出。sudo mkfs.xfs /dev/sdb1
。/data
),掛載分區:sudo mkdir /data
,sudo mount /dev/sdb1 /data
。/etc/fstab
,添加一行(通過blkid
獲取分區UUID):UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data xfs defaults 0 0
運行sudo mount -a
驗證掛載是否成功。六、自動化監控與預警
通過自動化工具定期檢查磁盤空間,及時預警避免空間耗盡:
crontab -e
,添加每日檢查命令(如df -h
結果發送到郵箱):0 0 * * * df -h | mail -s "CentOS Disk Space Report" your_email@example.com
#!/bin/bash
THRESHOLD=90
USAGE=$(df / | grep / | awk '{print $5}' | sed 's/%//g')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "Disk space usage on / is over $THRESHOLD%!" | mail -s "Disk Space Alert" your_email@example.com
fi
將腳本保存為/usr/local/bin/check_disk.sh
,添加執行權限(chmod +x /usr/local/bin/check_disk.sh
),并通過Cron每日運行。