关于对新装 Linux 的固态硬盘(SSD)做优化配置

初来乍到,写一篇小文交流一下日常应用心得,如有錯漏疏忽之处,敬请指正!

去年可以说是 SSD 的普及年,目前 128GB 的 SSD 价格已经降到 600 到 800 的价位,进入了不少喜欢尝鲜的用户的接受范围之内,想当年我买的第一个 SSD 镁光 M4,最便宜的 64GB 版本的时候就得七八百,而现在 64GB 的产品基本淘汰。新年过后,我也趁 X 东促销给新买的笔记本入了一个三星 840。
关于 Linux 下如何对 SSD 做优化配置,网上众说纷纭,很多人都拿不定主意,或者某些配置很麻烦但收效甚微,对初心者来说,确实一头雾水。
我也不妨献丑说一下我平时的做法,希望能帮到大家:

1、安装系统前,确定 BIOS 中 SATA 工作在 AHCI 模式下,而非 IDE 模式,进 BIOS 的方法一般开机时都有提示。以 AMI 的 BIOS 为例,在 chipset -> sourth bridge -> sb SATA configuration 里可以找到配置项,至于其他的 BIOS 我就不一一举例,通常在 BIOS 界面都有提示,再不济逐个找也花不了多少时间。

2、4K 对齐
网上很多人说 Linux 分区不需要 4K 对齐,其实这是一个误区!百度 Linux 吧曾经有一篇横测对比的文章,除了 btrfs 文件系统之外,对其余文件系统的影响还是很大的,当然,我不是说 btrfs 文件系统就比其他文件系统强,我本人用的是 ext4,孰优孰劣可以谷歌一下各种文件系统的性能对比。在这方面 Linux 各大发行版基本上已经帮你考虑了这个问题,就算是 arch 和 gentoo 安装时用到的 fdisk,在创建分区时也默认首扇区对齐,所以基本上不需要太担心这个问题。如果实在不放心可以使用 sudo /sbin/fdisk -l /dev/sda(假设 ssd 是 sda)命令,看看各分区首扇区是否能被 8 整除,如果可以就是对齐了!(至于为什么能被 8 整除就算对齐呢?有兴趣的朋友可以谷歌一下“4K 对齐”的含义)

3、修改 /etc/fstab。
在网上基本上每一篇教程都会推荐加 discard 和 noatime 参数,但很少人知道加上后具体有什么用。
discard 参数就是每删除一次文件就执行一次 trim 指令,至于什么是 trim,估计购买过 ssd 的同学都不陌生,因为 SSD 读写方式和机械硬盘不同,不能直接复写尚未回收区域,简单来说就是告诉 SSD 哪些数据块已经不再使用,让 SSD 回收空间,避免使用复杂手段复写未回收区域,提高性能。但这个过程不可能不耗费资源,每删除一次文件就执行一次 trim 肯定会损失性能,所以我认为只要定时 trim 足矣(配合 crontab 定时执行 trim),没必要加上 discard 参数。
noatime 就是在读文件时不修改文件的 atime 属性,也就是不需要记录时间等信息,节约资源,可以加上 noatime 参数!


4、fstrim
fstrim 命令即向 ssd 发送 trim 指令,如:sudo /sbin/fstrim -v /,一般只需要加 -v] mountpoint 参数就可以。当然,不可能每执行一次就要手动输入,使用 contab 可以自动定时执行。我的方法是将 fstrim 命令写入 bash 脚本,主要是方便多个 SSD 或者多个挂载点的使用,如果想知道命令是否正常执行可以在命令后加上“ >> filename”写入某个文件。如图。
ps:contab 的使用方法也很简单,具体来说就是可以控制在指定时间执行某条命令。 请注意,fstrm 需要 root 权限才能执行,设置 contab 时要使用 root 身份,以确定定时执行命令的权限为 root。
输入 contab -e 命令后会打开 vim 窗口,直接按照 “ * * * * * 想要执行的命令” 的格式配置即可,前面的五个星号代表“分 时 日 月 星期的某天”,假如我要每天上午 7 时执行一次命令,我可以设置为“ * 7 * * * 想要执行的命令”。(contrim 还有很多用法,如果想了解可以谷歌相关资料)

图 3:执行 fstrim 指令

1赞

图 5:contab 的配置

图 6:log 文件

关于 SSD 优化配置具体内容暂时说到这里,最后想强调一个观点,永远不比为了节省 SSD 寿命而减少写入,这是本末倒置的行为。就算是颇受非议的三星 840 使用的 27nm tlc 芯片,在理论寿命上依然可以达到 750 次左右,虽然跟 slc 比起来确实有点短,但对于大多数人来说足够用上好几年!

诶,我的 SSD 是加了 trim 的,性能觉得还行,试试看定时 trim 好了。另外 noatime 会对系统文件造成影响么?

就是取消读取时的 atime 记录而已,减少资源开销,但 wtime 信息仍然有效……

我也改下试试看效果。

另外 crontab 的基本格式是

第一条为什么要工作的 AHCI 模式下呢, 机械硬盘这个参数有影响吗?

摘自 ZOL 在 11 年的一篇文章《小疏忽大错误 解析 AHCI 对 SSD 的影响》第一页:第 1 页:为 SATA 硬盘而生 AHCI 的设计初衷
机械硬盘性能较低,无法体现出 AHCI 对性能的提高,但在 SSD 上却得到了质的提高!

楼主的帖子可以转载到
tieba.baidu.com/f?kw=linuxdeepin&fr=itb_favo&fp=favo 百度贴吧 linuxdeepin 吧 吗?

可以的,越多人看到越好!

我看到這裏跑去調我的筆記本,進了 BIOS 才發現找不到調整 SATA 模式的地方,然後才想起來我用的是 IDE 硬盤……

唔。楼主是不是在百度有个小号叫做阿卡林酱。。。

YES♂SIR!

已阅,不过我没用固态硬盘暂时用不上啊

现在也不贵啊,三星 840 128GB 六百左右就有了,虽然用的是 tlc 的 NAND,网上质疑声很多,但以前 mlc 的产品也有过类似的质疑,现在已经证明那些顾虑是多余。当然,不差钱的话还是推荐 mlc,甚至 slc 的产品!
OpenSUSE 12.3 如果使用 GNOME3 的 DE,打开 EFI(虽然我对微软主导的 UEFI 非常反感),在 SSD 硬盘上基本上是秒开。KDE 稍微慢一点…

先收藏了。备用着……

这个帖子很好,要 mark 一下

装大蜥蜴 12.3 到分区、挂载哪一步时直接就可以对 SSD 的优化参数进行设置了。我淘了块 32G 的 SLC SSD,都是十秒左右音乐响起,直接可操作。

我想请问一下楼主,fstrim 对 LVM 上建立的逻辑分区管不管用?
楼主可一定要看到呀!

我自己找到答案了,答案是有用

标记,一段时间之后尝试一下。