糊了么 发表于 2016-9-19 11:26

释解两种会增加SSD写入量的情况

前几天在色魔张大妈网站上看到留言区的一些关于SSD的讨论,觉得比较有意思,先把其中一张图贴出来:

显然近几年FTL转换表提的比较多,而MFT主文件表却很少有人提起了。当代的操作系统对于SATA接口SSD来说还是没法直接从底层沟通的,操作系统不知晓也无法管理SSD内部数据实际在闪存中的存放排布,因为直到现在还没有一个在各厂商之间都统一的、直接面向闪存的管理接口。SSD在做的是尽可能把自己模拟成传统硬盘去以便和操作系统沟通。

还是用影驰铁甲战将240做测试,提前在盘内生成一个随机数据为内容的2GB大小测试文件,文件生成完以后用影驰SSD魔盘看写入量,当前是852:

同分区内移动文件到另外一个目录:

移动操作瞬间完成,移动后写入量还是852没有变化。毕竟变化的只是一个指针(若干字节),在以GB为单位的写入量统计里根本提现不出来。

通过磁盘管理将铁甲战将240压缩卷,扩展成两个分区:D盘和E盘。把原本在D盘的文件移动到E盘

这个过程就能看到进度条了,盘内复制需要花一些能看得到时间。

复制完后再用影驰SSD魔盘查写入量,毫无意外,写入量增加2G达到854了。

如果仅仅有上边这点内容的话,当然是对不起观众的。不知道是否有谁提出过这样的疑问:既然同盘移动文件不增加写入量,那为何又说SSD做碎片整理会产生写入量有损寿命?

既然说起碎片整理,首先说下什么是磁盘碎片。由于操作系统在写入数据时采用见缝插针的策略,很多文件在写入的时候实际并不是写到了连续的逻辑地址(LBA)上,可能是东一段西一段,虽然链式存储能保障操作系统始终能找到下一段数据的位置,最终把整个文件内容连成一起,但频繁的找分段过程体现在传统机械硬盘上就是频繁的寻道操作,而机械硬盘的寻道延迟是相当可观的,碎片化的文件会严重影响磁盘性能,所以我们要定期对机械硬盘做磁盘碎片整理(Defrag)。


磁盘碎片整理的过程并非将文件移动到新的目录,而是将文件存储在不同逻辑地址的片段进行组合后重新写入,使其逻辑地址连续(对于机械硬盘来说,逻辑地址连续意味着实际记录物理位置的连续,读取时磁头可以高效工作,而不必频繁寻道)。也就是说,磁盘碎片整理在做的是对文件不同部分进行搬移,改变文件不同段落的逻辑存储位置,其中涉及到了先复制再删除的过程,单单改变文件指针是不能消除碎片的,必须改变文件存储的逻辑地址,也就是碎片整理必然会发生实质性新增写入。由于操作系统和FTL是不能直接通气的,LBA逻辑地址和PBA实际存储地址也不是一一对应关系,对SSD做文件碎片整理肯定会产生很多不必要无意义的写入(SSD性能不会受文件碎片化的影响)。

其实很多道理是大家都听说过,但却没有实际验证过的。最后来验证一下SSD做碎片整理是否会增加写入量吧。在影驰铁甲战将240这么一块几乎空的SSD上要做碎片整理好像有些麻烦?不过可以借助PassMark Fragger这个小软件。下图中我设置将2GB的测试文件分割出800个碎片,将其分布到不相邻的LBA逻辑地址位置上去,这个制造文件碎片的预备工作其实就是碎片整理的逆向过程:


在将2G文件打散成800多个碎片后,当前影驰铁甲战将240的写入量是862。

由于Win8以后的系统能识别存储介质类型,对SSD只会做手动Trim类型的优化而不会执行碎片整理,所以接下来用Win7的磁盘碎片整理程序进行碎片整理

整理完后再来看铁甲战将240的写入量,增加864G了…完全不必要的写入啊

最后简单总结:同分区内移动文件,改变的是文件指针,写入增加极少;不同分区移动文件,经历了复制和删除源文件的过程,MFT和FTL是说不上话的,写入会如实增加;磁盘碎片整理需要调整文件存储逻辑地址(LBA)位置,所以通过改变文件指针是做不到,必然会经历大量的分段复制、删除、整合操作,对SSD产生无意义的实际写入增量。

athloncn 发表于 2016-9-19 12:48

每次看到LZ的文章 都能有收获
受益匪浅

nighttob 发表于 2016-9-19 12:49

本帖最后由 nighttob 于 2016-9-19 12:51 编辑

SSD内部数据过度碎片化一样影响性能,一个16KB数据是在一个page里一次tR读出来还是分散在四个page里最多4次tR肯定是有区别的
只是碎片与否对用户是透明的
但确实有很2的跑分固件会制造大量碎片,有些时候WL过度也会制造碎片

yukari 发表于 2016-9-19 13:01

结论和hdd没区别(逻辑上)

中华田园犬 发表于 2016-9-19 13:36

用实践检验办法很好,不过张嘴就提SSD寿命的大概不知道他这种省法可以传给儿子了

SF2281 发表于 2016-9-19 15:41

同盘符移动文件,只移动文件指针,数据不动。
异盘符移动文件,操作系统是先复制一份到要移动的盘符,再把原来的删除。
都是移动文件,这两种方式操作系统所发的指令是不一样的。

zhangzh0199 发表于 2016-9-19 18:24

硬盘分一个区也叫分区,硬盘不分区是不能使用的,怎么那么多人认为分一个区就不叫分区了?现在windows系统提倡分一个区管理硬盘,并且也容易管理,系统就是坏了也可以保留用户文件重置电脑。我这三年装系统都是一个区。真正重要的东西放到移动硬盘备份。

knetxp 发表于 2016-9-19 18:45

zhangzh0199 发表于 2016-9-19 18:24 static/image/common/back.gif
硬盘分一个区也叫分区,硬盘不分区是不能使用的,怎么那么多人认为分一个区就不叫分区了?现在windows系统 ...

系统一个区,移动硬盘一个区,加起来两个区

千里寻花 发表于 2016-9-19 19:44

所以需要进行碎片整理吗

az6338890 发表于 2016-9-19 20:51

千里寻花 发表于 2016-9-19 19:44
所以需要进行碎片整理吗

当然不需要....

变开彡金钅冈 发表于 2016-9-19 22:20

谢谢
更加明确 SSD 禁止 碎片整理
但是
不知道 能不能使用 磁盘清理 ?
网上也没有个明白的说法




wengjianbo 发表于 2016-9-19 22:24

{:1_463:}主控又有了改进的空间了

defender 发表于 2016-9-19 22:43

学习啦!!
看来使用习惯需要改改啦!!

mustardgs 发表于 2016-9-20 11:52

原来只分一个区是为了增加使用容量 用惯以后感觉其实比多个分区更方便
当初搞一个160g分4个区的智障我想打死他

SSD考察团 发表于 2016-9-20 19:47

随便用就是了,难道还供起来
我现在都是一个硬盘一个分区
机械盘500g,可以用64K簇

kof758 发表于 2016-9-21 11:51

为什么要下载到桌面,,,,,

22860411 发表于 2016-9-22 14:10

固态硬盘只分一个区,那么,系统坏了,重装软件,游戏,不是更麻烦。更增加写入量吗?

tomoyo 发表于 2016-9-23 00:31

22860411 发表于 2016-9-22 14:10
固态硬盘只分一个区,那么,系统坏了,重装软件,游戏,不是更麻烦。更增加写入量吗? ...

你那是老观念。。win8不敢说。。win10除非挂到启动不了。。重置系统就是了

applelovekula 发表于 2016-9-23 08:50

个人分2区的主要原因是
1.为了重装方便。。。
2.找某些东西的时候不需要多开一个文件夹
页: [1]
查看完整版本: 释解两种会增加SSD写入量的情况