Pel*_*ier 32 linux defragment filesystems
在启动时,fsck 有时会报告磁盘碎片:“5.3% 不连续”。
我怎样才能自己获得这些信息?是否有特定的 fsck 调用?
Ruc*_*t88 29
您可以安全地在 ext2 ext3 或 ext4 文件系统上运行 fsck.ext2,即使它是这样安装的
sudo fsck.ext2 -fn /dev/sdXY
Run Code Online (Sandbox Code Playgroud)
如果安装了驱动器,它会输出很多错误,但是 -n 参数告诉它不要触摸驱动器。
$ sudo fsck.ext2 -fn /dev/sda1
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Ubuntu_Rescue: 291595/1222992 files (0.2% non-contiguous), 1927790/4882432 blocks
Run Code Online (Sandbox Code Playgroud)
小智 10
现代 ext 系列文件系统在分配文件时考虑了平衡和连续性。在 ext3 和 ext4 中,通常通过按顺序应用日志条目来实现平衡,特别是在 ext4 中,通过预先分配文件系统范围来增加连续块。追逐低于 20% 的碎片级别可能不值得您花时间,尤其是当您的系统重复访问几个文件时。我建议采用这些策略来提高单个磁盘系统的读取速度:
增加内存:这会增加文件系统缓存
增加块大小:通过从 1k 到 4k 块大小,您可以在读取接近或大于块大小的文件时获得更好的性能
如果您是迂腐的,您可以按块大小将大文件和小文件组织到分区中,如果您将照片、视频和源代码存储在不同的目录中,您可能只想这样做
使用 hdparm 和/或笔记本电脑模式实用程序增加您的预读设置
以线性方式备份和恢复您的文件系统,例如使用 tar
如果您有多个磁盘并且正在使用 raid 条带化和/或 LVM,则需要考虑其他因素,例如条带大小。
是的,有一个特定的fsck
调用(作为 root 或 sudo):
$ fsck /dev/sdXY
Run Code Online (Sandbox Code Playgroud)
将 X 和 Y 替换为适合您情况的正确参数(例如/dev/sda1
)。
不要在安装的分区上运行它!它会严重损坏您的文件系统。
有关 Linux 和碎片整理的更多信息,请在此处查看我的回答。
如果您不需要专门运行 fsck,而只想检查驱动器的碎片,则以下脚本(取自此处)应该可以解决问题:
$ fsck /dev/sdXY
Run Code Online (Sandbox Code Playgroud)
然后,您可以在相关目录(或挂载点)上运行它:
$ frag_check.pl $HOME/
1.32410691664555% non contiguous files, 1.05380668862427 average fragments.
Run Code Online (Sandbox Code Playgroud)