Answers:
即使像这样挂载,您也可以在ext2 ext3或ext4文件系统上安全地运行fsck.ext2
sudo fsck.ext2 -fn /dev/sdXY
如果安装了驱动器,它将输出很多错误,但是-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
sudo tune2fs -C 16000 /dev/sda1
并重新引导。
现代ext文件系统家族在分配文件时考虑了平衡性和连续性。在ext3和ext4中,通常通过按顺序应用日志条目来进行平衡,特别是在ext4中,通过预分配文件系统扩展以增加连续的块来实现平衡。将碎片级别控制在20%以下可能不值得花时间,尤其是在系统反复访问几个文件的情况下。我建议采用以下策略来提高单个磁盘系统的读取速度:
增加内存:这增加了文件系统缓存
增加块大小:通过从1k变为4k块大小,读取或读取比块大小大的文件可获得更好的性能
如果您是书呆子,则可以按块大小将大文件和小文件组织到分区中,如果仅将照片,视频和源代码存储在单独的目录中,则可能只想这样做
使用hdparm和/或笔记本电脑模式实用程序增加预读设置
以线性方式(如tar)备份和还原文件系统
如果您有多个磁盘并且正在使用RAID条带化和/或LVM,则需要考虑其他因素,例如条带大小。
是的,有一个特定的fsck
调用(作为root或sudo):
$ fsck /dev/sdXY
将X和Y替换为适合您的情况的正确参数(例如/dev/sda1
)。
请勿在固定的分区上运行!它会严重损坏您的文件系统。
有关Linux和碎片整理的更多信息,请参见此处的答案。
如果您不需要专门运行fsck,而只想检查驱动器的碎片,可以使用以下脚本(从此处获取):
#!/usr/bin/perl -w
#this script search for frag on a fs
use strict;
#number of files
my $files = 0;
#number of fragment
my $fragments = 0;
#number of fragmented files
my $fragfiles = 0;
#search fs for all file
open (FILES, '-|', "find '$ARGV[0]' -xdev -type f -print0");
$/ = "\0";
while (defined (my $file = <FILES>)) {
open (FRAG, "-|", "filefrag", $file);
my $res = <FRAG>;
if ($res =~ m/.*:\s+(\d+) extents? found/) {
my $fragment = $1;
$fragments += $fragment;
if ($fragment > 1) {
$fragfiles++;
}
$files++;
} else {
print ("$res : not understand for $file.\n");
}
close (FRAG);
}
close (FILES);
print ( $fragfiles / $files * 100 . "% non contiguous files, " . $fragments / $files . " average fragments.\n");
然后可以在有问题的目录(或挂载点)上运行它:
$ frag_check.pl $HOME/
1.32410691664555% non contiguous files, 1.05380668862427 average fragments.
您可以使用e2defrag之类的工具来获取此信息。
请注意,由于Linux文件系统的性质,通常不需要进行碎片整理。
e4defrag -c
,但没有成功。
-c
最后一个参数的选项后的Ext3或Ext4插点。还有...“没用”吗?您得到什么错误?