此前曾写过关于笔记本硬盘4K对齐的内容,时隔已久,结合新发现以及当前正在试用deepin Linux系统的情况,现从Linux角度重新梳理固态硬盘的优化经验。固态硬盘重在实用,不应过度维护,应优先发挥其速度优势,同时适当减少非必要写入操作,但无需过分担忧写入损耗,合理使用才是关键。
1、 固态硬盘的闪存颗粒具有擦写次数限制,普通MLC颗粒约为3000次。然而,得益于先进的损耗均衡技术,数据被均匀分布到各个存储单元,有效避免局部过度磨损,显著提升了整体耐用性。即便设备因技术更新而淘汰,硬盘本身仍可能处于良好工作状态,使用寿命远超预期。
2、 固态硬盘优化重在提升随机读写性能,同时降低无效写入操作。
3、 对齐分区
4、 固态硬盘的读写操作以页(Page)为基本单位,通常大小为4KB,而擦除操作则以块(Block)为单位,一般为512KB。当需要向已被标记为删除的页写入新数据时,必须先将该页所在的整个块进行擦除,再将有效数据与新数据一同写回。若一个逻辑数据块跨越了两个物理块,则两个块都可能需要被擦除和重写,增加了写入负担。通过将分区表和文件系统的起始位置与物理块边界对齐,可有效避免此类跨块分布问题。因此,建议将分区的起始位置设置为512KB或1MB的整数倍,以提升存储效率和设备寿命。
5、 打开终端窗口
6、 所示,第一分区起始位置为2048扇区。若后续各分区起始位置均可被1024整除,则实现512K对齐;若均可被2048整除,则达到1M对齐。
7、 机械硬盘只需满足8的倍数即可,做好4K对齐;而固态硬盘则需进行512K对齐,以确保性能最佳。
8、 调整fstab配置文件
9、 许多旧的随系统资料建议,在fstab中挂载参数添加discard和noatime。
10、 丢弃操作可向下级设备通知区块已释放,类似实时Trim,每次页操作等效一次。由于相关算法存在缺陷,不建议使用。该参数并不能提升SSD性能,反而可能降低速度,不过日常使用中通常难以察觉。
11、 使用 noatime 参数后,系统将不再记录文件的最近访问时间,可提升性能,但可能影响依赖时间戳的邮件、备份等应用程序的正常运行。
12、 这些参数均不建议个人使用。
13、 relatime是指在修改文件时更新访问时间,若访问时间超过24小时,则在下次访问时强制更新该时间。
14、 Deepin Linux 2014默认设置已很完善,通常无需调整。
15、 优化输入输出调度策略
16、 当前主流Linux系统主要采用三种调度策略:CFQ、NOOP和Deadline。
17、 NOOP调度程序适用于闪存、RAM及嵌入式系统,是此类设备的理想选择。
18、 查看当前排班安排。
19、 查看固态硬盘sdb的I/O调度策略,使用命令读取其队列调度器配置信息。
20、 当前的调度方案为deadline,noop和cfq为其他可选方案。
21、 配置固态硬盘调度策略。
22、 获取管理员权限,执行系统命令
23、 将noop写入/sys/block/sdb/queue/scheduler,设置该设备的I/O调度策略为noop,以禁用电梯算法,适用于某些特定存储场景下的性能优化需求。
24、 查看 /sys/block/sdb/queue/scheduler 文件内容,确认调度器已按预期修改完毕。
25、 设为默认并添加到开机自启程序中。
26、 编辑 /etc/rc.local 文件,将内容添加在 exit 命令之前,保存即可。
27、 定时清理
28、 fstrim 命令用于执行磁盘空间清理,结合定时任务可实现定期自动优化存储。
29、 执行周期应根据个人临时文件使用频率调整,若无频繁大量删除操作,无需每日执行。Trime启动固态硬盘垃圾回收会引发写入放大,影响寿命,宜适度控制频次。
30、 deepin Linux 2014已集成Trim优化功能,系统每周自动执行一次,相关任务配置位于/etc/cron.weekly/fstrim文件中,确保固态硬盘性能持续高效。
31、 所示,默认情况下该功能仅针对英特尔和三星的固态硬盘。部分存在缺陷的固态硬盘在高负载时可能因执行Trim操作而导致数据丢失。可通过在fstrim -all命令后添加--no-model-check参数来跳过型号检测,从而禁用此项检查。
32、 deepin Linux在固态硬盘优化方面表现突出,仅需调整调度策略即可显著提升性能。
