e4defrag [选项] 文件或目录
| 选项 | 说明 |
|---|---|
| -c | 只检查碎片程度,不进行实际整理 |
| -v | 详细模式,显示更多信息 |
| -r | 递归处理目录及其子目录 |
| -t | 设置输出信息的详细级别(0-3) |
| -l | 输出可读性更好的格式 |
| -f | 强制整理,即使碎片程度不高 |
| -h | 显示帮助信息 |
| -V | 显示版本信息 |
# 检查单个文件的碎片程度
sudo e4defrag -c /home/user/largefile.iso
# 输出示例
Filesystem type is: 0xef53
Total/best extents 129/1
Average size per extent 631 KB
Fragmentation score 0
[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
This file (/) does not need defragmentation.
Done.
说明:使用-c选项可以安全地检查文件的碎片程度,不会进行实际整理。
# 整理单个大文件
sudo e4defrag /var/lib/mysql/database.ibd
# 详细模式整理
sudo e4defrag -v /home/user/video.mp4
# 递归整理目录及其子目录
sudo e4defrag -r /var/log/
# 详细模式递归整理
sudo e4defrag -vr /home/user/projects/
# 首先检查分区碎片程度
sudo e4defrag -c /
# 如果碎片严重,进行整理(这可能需要很长时间)
sudo e4defrag /
# 带详细输出的整理
sudo e4defrag -vt 3 /
$ sudo e4defrag -v /home/user/testfile.dat
Filesystem type is: 0xef53
File size: 1.0 GB (1048576 blocks)
ext4 defragmentation for /home/user/testfile.dat
[1/1]/home/user/testfile.dat: 100% [ OK ]
Success: [1/1]
Total/best extents 64/1
Average size per extent 16 MB
Fragmentation score 98
[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
This file (/) needs defragmentation.
Try to defragment this file (/) by e4defrag.
Before: After:
Extents: 64 Extents: 1
Size: 1.0 GB Size: 1.0 GB
Total extents: 64 -> 1
Done.
# MySQL InnoDB 文件整理示例
sudo systemctl stop mysql
sudo e4defrag -v /var/lib/mysql/ibdata1
sudo e4defrag -v /var/lib/mysql/ib_logfile*
sudo systemctl start mysql
# 查找并整理大视频文件
find /media -name "*.mp4" -size +1G -exec sudo e4defrag -v {} \;
# 批量检查大文件的碎片程度
find /home -type f -size +500M | while read file; do
echo "Checking: $file"
sudo e4defrag -c "$file"
done
#!/bin/bash
# 定期碎片整理脚本
LOG_FILE="/var/log/e4defrag.log"
DATE=$(date "+%Y-%m-%d %H:%M:%S")
echo "=== 碎片整理开始: $DATE ===" >> $LOG_FILE
# 检查关键目录的碎片程度
for dir in /home /var /opt; do
echo "检查目录: $dir" >> $LOG_FILE
sudo e4defrag -c "$dir" >> $LOG_FILE 2>&1
done
# 如果碎片严重,执行整理
echo "执行碎片整理..." >> $LOG_FILE
sudo e4defrag -vr /home >> $LOG_FILE 2>&1
echo "=== 碎片整理完成 ===" >> $LOG_FILE
A: e4defrag是专门为ext4文件系统设计的,而Windows使用NTFS文件系统。ext4本身就比NTFS更抗碎片化,但长期使用后仍然需要整理。
A: 使用e4defrag -c检查碎片分数:
A: 可能会影响I/O性能。对于数据库等关键服务,建议先停止服务再整理相关文件。
A: 可以使用filefrag命令结合图形化工具,或者使用系统监控工具观察磁盘性能。