1
iBugOne 2023-04-09 15:38:14 +08:00 6
Windows 没有自动写零的功能,你看到的“全部写零”实际上来源于两个功能组合起来的结果:
1. 在 SSD 上,Windows 会告知硬盘某个文件被删除(也就是 TRIM ),这样 SSD 固件可以自己在空闲时进行垃圾回收和磨损平衡等优化操作 2. 一些 SSD 固件的功能,对已经被 TRIM 过的块直接返回零 所以“加速消耗硬盘擦写寿命”也是完全不存在的事,反正删掉的文件是早晚都要擦除的 PS. Windows 的回收站是有容量限制的,可以设置,默认好像是 10%(我记不清了);超过容量或者过大的文件会直接从文件系统中删除,而不是移动进回收站 |
2
AkaGhost 2023-04-09 15:39:04 +08:00 via Android 1
是固态硬盘吗?你说的这个情况,只是被 trim 了吧,就算系统不做,硬盘主控自己也会 trim 的
|
3
geelaw 2023-04-09 15:47:57 +08:00 via iPhone 1
让我来 psychic debugging 一下,根据描述用 Delete 键删除桌面的文件后没有进入回收站,立刻恢复发现长度是 0 ,可以猜测楼主开了 OneDrive 同步桌面,而删除的文件是仅在线可用的文件(这种文件只有元数据,且删除的时候不会经过本地回收站),若果真如此,从本地删除 OneDrive 文件的效果是在 OneDrive 上移动到回收站,可以进入 OneDrive 网页版查看在线回收站还原之。
|
4
chackchackGO OP 是固态硬盘, 好在删除的只是一些归档文件之类的, 不是很痛.
|
5
geelaw 2023-04-09 15:50:42 +08:00 via iPhone
另外很难想象 Windows 会默认覆写删除的文件,只有当你要擦除系统或者使用那专门的工具才会这样做,而且通常也不是写零,而是写随机数。
|
6
chackchackGO OP @geelaw 没开 oneDrive 同步桌面.
我在打开"移动 windows 桌面存储路径"的对话框的过程中 del 桌面的. del 之后打开任意地方的文件夹都会立刻报错"原桌面存储路径 is not available". 所以没进回收站可能是这个刁钻时刻 del 的 bug ... 或者我不慎误触 shift+del 了 |
7
geelaw 2023-04-09 15:58:10 +08:00 via iPhone
Ugh 不是长度为 0 而是数据是 0 ,这就很奇妙了,学习了一下 #1 #2 的知识。但是现在默认情况是 Delete 无确认直接移动到回收站,Shift+Delete 是有确认的。
|
8
churchmice 2023-04-09 17:33:40 +08:00 via Android 1
这个是 trim,删除文件只是改掉了 ssd 里面的映射表
展开说说,host 这侧看到的是 lba,需要将这个 lba 映射到具体的 flash 地址上吗,比如是哪个 channel,哪个 die,哪个 plane, page ,实际的 flash 地址我们叫做 pba(physical block address) 这个 lba 到 pba 的转换关系是由一个表来维护的,这个表存在 flash 里面并且由主控维护 那回到你这个问题,删除一个文件的时候 hpst 会发送 trim 这个命令(其实叫做 dataset management with deallocation hint )给主控,主控看到之后会把映射表里面 lba 对应的 pba 改成一个特殊值,并不会去更改真正 flash 里面的内容 你下次读的时候碰到这个 lba,主控一查表发现是个特殊值,它就直接给你返回全 0 的结果给 host |