温馨提示×

Linux分区怎样进行磁盘清理

小樊
45
2025-11-02 02:42:33
栏目: 智能运维

Linux分区磁盘清理指南

一、清理前的磁盘使用分析

在进行磁盘清理前,需先定位占用空间大的目录或文件,常用命令如下:

  • df -h:查看各分区的总空间、已用空间、可用空间及使用百分比(人类可读格式),快速识别空间不足的分区。
  • du -sh *:统计当前目录下各文件/子目录的大小(-s显示总计,-h人类可读),可结合-max-depth=1限制统计深度(如du -h --max-depth=1 /home查看/home下各子目录大小)。
  • ncdu:交互式磁盘分析工具(需安装,如sudo apt install ncdu),以可视化界面展示目录大小,支持排序、删除文件,适合快速定位大文件。

二、清理无用文件

1. 清理日志文件

日志文件(如/var/log下的syslogauth.log)会随时间增长占用大量空间,可通过以下命令清理:

  • 删除旧日志sudo rm -rf /var/log/*.gz(删除压缩的旧日志);
  • 清空当前日志sudo truncate -s 0 /var/log/syslog(将syslog文件大小截断为0);
  • 使用logrotate:系统自带日志轮转工具,可自动压缩、删除旧日志(配置文件位于/etc/logrotate.conf)。

2. 清理缓存文件

包管理器的缓存(如aptyum)会占用/var/cache空间,可通过以下命令清理:

  • APT缓存sudo apt clean(删除/var/cache/apt/archives下的.deb文件);
  • YUM缓存sudo yum clean all(清理YUM缓存)。

3. 清理临时文件

/tmp目录下的临时文件(如安装程序生成的临时文件)可安全删除:

  • 删除/tmp下超过10天的文件sudo find /tmp -type f -mtime +10 -exec rm -f {} \;
  • 清空/tmp目录sudo rm -rf /tmp/*(注意:部分程序可能正在使用/tmp文件,操作前需确认)。

4. 清理旧内核

旧内核版本会占用/boot分区空间,可通过以下命令清理:

  • 查看已安装内核dpkg --list | grep linux-image(Debian/Ubuntu)或rpm -qa | grep kernel(CentOS/RHEL);
  • 删除旧内核sudo apt remove linux-image-<version>(替换为具体版本号,保留当前使用的内核)。

三、碎片整理(针对特定文件系统)

Linux文件系统(如ext4、XFS)本身抗碎片化能力强,但在以下场景需进行碎片整理:

1. ext4文件系统(HDD)

使用e4defrag工具(需安装e2fsprogs):

  • 整理整个分区sudo e4defrag /dev/sdXn/dev/sdXn为目标分区,如/dev/sda1);
  • 整理单个文件sudo e4defrag /path/to/file

2. SSD分区

SSD无需传统碎片整理,但需定期执行fstrim命令通知硬盘哪些数据块已不再使用,以提高性能:

  • 手动TRIMsudo fstrim //为根分区,可替换为其他挂载点);
  • 设置定期TRIM:大多数发行版默认启用fstrim.timer(检查状态:systemctl status fstrim.timer,启动服务:systemctl start fstrim.timer)。

四、调整分区大小(可选)

若分区空间不足,可通过以下步骤调整分区大小(需备份数据):

1. 卸载分区

sudo umount /dev/sdXn/dev/sdXn为目标分区)。

2. 调整分区大小

  • 使用partedsudo parted /dev/sdX,进入交互模式后执行resizepart <分区号> <新大小>(如resizepart 1 50GB);
  • 使用fdisksudo fdisk /dev/sdX,删除旧分区(d命令),创建新分区(n命令,指定更大容量)。

3. 调整文件系统大小

调整分区后,需同步调整文件系统大小:

  • ext4文件系统sudo resize2fs /dev/sdXn
  • XFS文件系统sudo xfs_growfs /mount/point/mount/point为分区挂载点)。

五、彻底清除分区信息(可选)

若需重新使用分区(如用于RAID、CEPH),需彻底清除分区表及文件系统信息:

1. 清除分区表

使用sgdisk工具(适用于GPT分区):

  • sudo sgdisk --clear --zap-all /dev/sdX/dev/sdX为磁盘设备,如/dev/sdb),清除所有分区信息。

2. 清除文件系统签名

使用wipefs工具:

  • sudo wipefs --all /dev/sdXn/dev/sdXn为目标分区),清除分区上的文件系统签名(如ext4、XFS)。

注意事项

  • 备份数据:清理前务必备份重要数据(如使用cp -afv /source/dir /backup/dir);
  • 避免误操作:删除系统关键文件(如/etc/boot下的文件)可能导致系统无法启动;
  • 自动化监控:通过cron定时任务(如每天检查磁盘使用率)或工具(如Netdata)实时监控磁盘空间,预防空间耗尽。

0