我有三个问题想问 Ubuntu 和 TRIM/SSD 专家。
- 我有 SSD 驱动器(SanDisk SDSSDP128G 128Gb)。
- 目前,它是唯一的硬盘。通过 SATA 电缆连接,但在 BIOS 中使用 IDE 模式而不是 AHCI。
- 在第一个分区(16 GiB,NTFS)上安装了 WinXP SP2,然后使用 gparted live CD 将其与 SSD 块对齐
- 在第二个分区上安装了 Ubuntu 12.04 LTS(16 GiB,ext4,紧接着上一个分区)
- 该驱动器的其余部分目前尚未分区;grub 用作操作系统加载程序。
- Ubuntu 在启动时挂载第一个 NTFS 分区(就像 Ubuntu 安装时所做的那样,我没有碰过这个)
- 已从 hdparm 确认驱动器支持 TRIM
- 使用 cron 运行的“fstrim /”在 Ubuntu 中启用 TRIM
现在,我花了数周时间尝试从网上获取此信息。一些消息来源说 NTFS 确实支持 TRIM,另一些消息来源说 Win7 支持它(在使用 NTFS 时)。一些消息来源说 fstrim 会 TRIM 整个物理驱动器,而另一些消息来源说它只会 TRIM 当前分区。
上述场景中的“fstrim /”仅适用于 16 GiB ext4 分区,还是适用于整个 128Gb 驱动器?
如果它仅适用于 ext4 分区,是否有可能对第一个 NTFS 分区进行 TRIM(从 Ubuntu 或 WinXP,但只能使用 Ubuntu 原生或 Win 内置工具,而无需下载可疑的 software.com)?hdparm 和移动/复制物理扇区能起到什么帮助作用吗?分区克隆什么的?
如果 NTFS 无法使用 TRIM,那么最坏的情况是什么:是否有任何固件垃圾收集器可以在没有 OS 命令的情况下执行类似的事情?
请不要建议切换到 Win 7 - 我仍然对 Win XP 下的开发环境感到满意。如果它能在 7 秒内启动、对你所做的任何事情做出即时响应并在 3 秒内加载 Photoshop(首次运行:),我仍然乐意使用“过时”的操作系统
提前谢谢你,雅罗斯拉夫
答案1
TRIM 是文件系统级别的操作。它需要知道磁盘的哪些扇区是空闲的,以便通知硬件。“丢弃”和“修剪”都不是ntfs-3g
驱动程序的记录功能所以我认为这是不可能的。
还有对此进行了几次单独的呼吁但该功能实际上只会影响少数人。
我唯一真正的长期解决方案是:
- 每隔几个月将其放入 Windows 机器中(或启动到 Windows)一次(我不确定您的流失率是多少)。
- 使用真正的文件系统。没有什么比格式良好的 ext4 分区更让人羡慕的了。不过你需要处理数据。
答案2
更新,看起来 NTFS-3g 已获得fstrim
支持在 2014 年 6 月的补丁中。
Ubuntu 15.04 在fstrim
我希望使其更稀疏的回送挂载 NTFS 文件系统映像上工作正常。如果 15.04 版的 ntfs-3g 包含该补丁,它应该也可以在挂载的分区上工作。
除此之外,ntfs-3g 还包含一个ntfswipe
命令,它会在所有未使用的空间上写入零。不要在 SSD 上使用它,它会增加磨损。我考虑过使用它,然后运行fallocate --dig-holes
(将所有全为零的 4k 块稀疏化)。fallocate
当在块设备上使用时,IDK 会映射到丢弃/修剪,但可能会。无论如何,先使用fstrim
丢弃而不写入零,因为现在这样可行。
如果 NTFS 无法使用 TRIM,那么最坏的情况是什么:是否有任何固件垃圾收集器可以在没有 OS 命令的情况下执行类似的事情?
不,修剪 NTFS 文件系统的可用空间需要能够理解 NTFS 的工具。没有人会疯狂到把这样的东西放入 SSD 固件中,因为这项工作最好由计算机上读取 NTFS 的任何软件来完成。
答案3
是的,它只适用于您运行它的一个分区,并且如果您在 ntfs 分区而不是 / 上运行它,它应该可以正常工作。
答案4
我了解到 gnulinux 可以做到这一点,但只能在 FAT32 分区上,并以某种方式将其安装到某个东西上,想弄清楚如何操作。巧合的是,Windows XP 安装在 Fat32 上(否则只会在格式上重新安装它),因为否则无法在 SSD 上工作(可能是提示!)。额外的信息可能对某些人有用。