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


#1

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

去年可以说是 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 指令


#2

图 5:contab 的配置

图 6:log 文件

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


#3

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


#4

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


#5

我也改下试试看效果。

另外 crontab 的基本格式是


#6

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


#7

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


#8

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


#9

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


#10

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


#11

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


#12

YES♂SIR!


#13

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


#14

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


#15

先收藏了。备用着……


#16

这个帖子很好,要 mark 一下


#17

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


#18

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


#19

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


#20

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