这页证明碎片整理对于 SSD 是有益的。我认为这种类型的碎片整理必须具有修剪意识,以便保持磁盘的使用寿命。我怎样才能在Linux上做到这一点?
编辑:评论指出本文内容有问题。
答案1
一般来说,您可以完全忽略碎片。对于 SSD 来说更是如此,它不像 HDD 那样受寻道时间的影响。对 SSD 进行碎片整理只会浪费写入周期。
尽管在极端情况下碎片可能会产生明显的影响,例如以随机顺序写入的稀疏文件(如某些 BitTorrent 客户端所做的那样),或者当磁盘耗尽可用空间时,最后写入的文件将由于没有其他连续空间可以满足需要,因此被分成数千个碎片。
但这是例外。通常不会发生这种情况。大多数文件系统都非常擅长避免碎片,Linux 内核也擅长避免碎片带来的不良影响。一旦有多个进程同时读/写文件,磁盘就必须同时无处不在。
Linux 上没有太多的碎片整理解决方案。 XFS 的xfs_fsr
效果非常好,因此如果您绝对想使用碎片整理,XFS 是一个不错的选择。
filefrag
您可以使用或检查文件碎片hdparm
:
# filefrag debian-6.0.6-amd64-netinst.iso
debian-6.0.6-amd64-netinst.iso: 4 extents found
# hdparm --fibmap debian-6.0.6-amd64-netinst.iso
debian-6.0.6-amd64-netinst.iso:
filesystem blocksize 4096, begins at LBA 0; assuming 512 byte sectors.
byte_offset begin_LBA end_LBA sectors
0 3003928 3072407 68480
35061760 2872856 2938391 65536
68616192 2171576 2302647 131072
135725056 56259072 56338047 78976
如果这没有给您带来数百或数千个范围(片段),则无需担心。
通用的碎片整理方法是制作文件的副本,然后用它替换原始文件,例如:
cp -a yourfile yourfile.defrag
mv yourfile.defrag yourfile
您的文件系统应该有大量的可用空间,否则新文件很可能会像旧文件一样碎片化。 (替换前检查新文件是否比旧文件更好)。
但正如我所说,通常不需要这样做,除非文件以某种方式出现非常严重的碎片情况。
答案2
其他人提到碎片整理可能对 SSD 没有影响。 (我意识到这是一个老问题,但我想添加上下文。)
我想提出同一论点的更强有力的版本:碎片整理的概念对于 SSD 根本没有任何意义。 SSD不会将顺序逻辑块写入闪存中的顺序块;为了最大限度地提高吞吐量,SSD 控制器会将块分布在多个 NAND 芯片上(有点像迷你 RAID)。
看:http://www.anandtech.com/show/2829/5
SSD 控制器确定在哪里写入块以获得最佳速度,并均匀地磨损每个闪存单元。因此,即使逻辑块(对于操作系统而言)看起来是按顺序排列的,但实际上却以完全不同的顺序存储在 NAND 上——这是一件好事。对某些东西进行碎片整理的想法应该分裂是没有意义的。
答案3
因为ext4
碎片整理程序被称为e4defrag
。 (它现在是官方 e2fsprogs 的一部分)。
还有一个fstrim
命令应该适用于ext4
and (我认为)xfs
。它发送对文件系统上未使用空间的丢弃请求。如果您的文件系统未安装-o discard
(即立即发送已删除文件的丢弃信息),它可能特别有用。
这些都不会自动设置。除非你很不寻常,否则你不需要e4defrag
。
TRIM 的东西更相关。默认情况下它被关闭,因为当时的性能情况确实不清楚(即启用它有时会导致速度大幅下降)。抱歉,这是带有新硬件的 Linux :)。我倾向于discard
在安装时启用挂载选项,并且在删除文件时我没有看到可怕的挂起。 (Crucial m500 SSD)。
如果您阅读过 SSD 评论,您会发现,如果您不将其保持 100% 满,那么大多数 SSD 都能发挥最佳性能:)。这不是强制性的,但保留空间(例如 10%)并防止其被使用的一种方法是在分区时不分配整个设备。
答案4
您正在寻找的工具是弗斯特里姆。如果您不关闭笔记本电脑/服务器,可以安排每天、每周或夜间进行:
将以下脚本放入/etc/cron.weekly/01-fstrim
:
#!/bin/sh
fstrim /
fstrim /home
使其可执行:
chmod +x /etc/cron.weekly/01-fstrim
现在尝试运行该脚本。它不应该打印任何错误消息。如果您更改了 LUKS 配置,则可能需要重新启动才能执行此操作。
http://lukas.zapletalovi.com/2013/11/how-to-trim-your-ssd-in-fedora-19.html