如何针对 SSD 优化操作系统?

如何针对 SSD 优化操作系统?

在固态硬盘上安装 Ubuntu 之前/期间/之后应采取哪些步骤来优化性能并确保硬盘的最大耐用性?

答案1

我已经成功使用了几种不同的技术来改善 Ubuntu 使用存储设备的方式,无论是固态驱动器还是传统驱动器。

对于 SSD,您也希望尽量减少驱动器的写入次数,因为读取不应增加驱动器的磨损。

1)管理交换文件

如果您不让计算机休眠并且有足够的 RAM 内存来运行所有应用程序,那么理论上您不需要交换分区。

如果您混合使用 SSD 和硬盘,请仅将交换分区放在硬盘上。

2)读取时间戳无写入(适用于 SSD 和硬盘)

使用选项挂载分区诺亚泰诺迪拉蒂梅将在读取文件和文件夹时停止时间戳写入。除非您使用本地邮件服务器客户端(如 mutt),否则通常不需要这些时间戳写入。这通常不是一个好主意,因为每次读取都会在更新时间戳时产生写入。这会缩短 SSD 的使用寿命。

编辑您的/etc/fstab配置文件(小心 - 请进行备份以确保破坏 fstab 配置可能会导致系统无法运行):

cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab

通过将文本 noatime 和 nodiratime 添加到定义根 (/) 和其他分区(如果有)的行中(/home),编辑分区的挂载选项 -注意:如果您有一个 /home 分区,如果您担心会破坏某些东西,请从更改该分区开始

# / was on /dev/sda2 during installation
UUID=587e0dc5-2db1-4cd9-9792-a5459a7bcfd2 /               ext4    noatime,nodiratime,errors=remount-ro 0       1

# /home was on /dev/sda3 during installation
UUID=2c919dc4-24de-474f-8da0-14c7e1240ab8 /home           ext4    noatime,nodiratime,defaults        0       2

您需要重新启动计算机才能使这些更改生效

3)尽量减少操作系统和应用程序的写入

假设您没有运行任务关键型产品服务器,大多数人不会在出现问题时查看日志(尤其是对于大多数 Ubuntu 用户来说,严重错误很少见)。因此,您可以配置 Ubuntu,以便所有日志都写入 RAM 内存而不是 SSD。

注意:只有当你安装了所有要使用的软件(尤其是像 Apache Web 服务器这样的软件)后才进行以下更改,否则你可能会遇到 /var/log 中缺少目录的问题

有关此方法的背景信息,请参阅在 ubuntu-eee.com 上延长闪存驱动器的使用寿命

打开/etc/fstab使用编辑器(假设您已经备份了 /etc/fstab 文件)

gksudo gedit /etc/fstab

在 fstab 文件末尾添加以下几行并保存:

# Uncomment these after all server based applications installed - eg. apache
#tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
#tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
#tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 
#tmpfs /var/log/apt tmpfs defaults,noatime 0 0
# none /var/cache unionfs dirs=/tmp:/var/cache=ro 0 0

您需要重新启动计算机才能使这些更改生效

也可以看看:

答案2

SSD 寿命

一般情况下我不会担心——对 SSD 寿命的担心有些夸张。你可以阅读这篇文章关于为什么你真的不应该担心的详细文章。简而言之,现代 SSD 内部的电路可以为您管理磨损均衡,并且它们比您更了解如何做到这一点。

本文计算了以 80M/s 的连续速率接收写入的 SSD 的寿命。寿命为51年。这是基于 2007 年的技术 - SSD 的寿命现在会更长。而且您几乎肯定不会一天 24 小时以 80M/s 的速度写入 SSD。

SSD 性能

然而,随着时间的推移,性能下降可能是一个问题,修剪是解决方案。有两种选择

  • 自动/在线 TRIM,又称丢弃
  • 手动调整

你必须自己启用自动 TRIM(基本上,discard只要您使用 ext4,就可以将该选项添加到挂载选项中。)我发现一篇博客文章报告说删除文件时,丢弃选项会降低系统速度

你可以偶尔手动(或者在 cron 任务中)使用弗斯特里姆。如果您只有一个分区,那么您需要做的就是:

sudo fstrim /

请注意,fstrim 仅在 11.10 及更新版本中可用。对于较旧的系统,您将需要该脚本。我在我的系统上wiper.sh找到了该脚本。/usr/share/doc/hdparm/contrib/wiper.sh.gz

如果你想知道,TRIM 解决的问题是什么,维基百科描述, 是:

SSD 将数据存储在闪存单元中,这些单元被分组为页面,页面(通常每页 4 kB)被分组为块(通常每块 128 页,总计 512 kB)。NAND 闪存单元只有在为空时才可直接写入。如果认为它们包含数据,则首先需要擦除内容,然后才能可靠地执行写入操作。在 SSD 中,写入操作可以在页面级别完成,但由于硬件限制,擦除命令始终会影响整个块。因此,只要可以使用空页,将数据写入 SSD 介质的速度就非常快,但是一旦需要覆盖先前写入的页面,速度就会大大减慢由于需要先擦除页面中的单元才能再次写入,但只能擦除整个块,因此覆盖将启动读取-擦除-修改-写入循环:必须先将整个块的内容存储在缓存中,然后才能在闪存介质上有效擦除该块,然后在缓存中修改被覆盖的页面,以使缓存的块保持最新,然后才将整个块(包含更新的页面)写入闪存介质.这种现象被称为写入放大。

答案3

有几点:

结盟:

人们经常指出的是结盟分区的大小。这应该等于 SSD 的块大小。谨慎行事,使分区与 MiB 边界对齐。请注意,您无法使用 Ubuntu 安装程序的分区工具(使用 MB 而不是 MiB)执行此操作,但您可以启动实时 CD,使用 Gparted(使用 MiB),然后单击“安装”以使用您设置的分区。

正确的调度程序:

重要的一点是调度程序应该是noop。您可以通过 kernelparameter或通过rc.local 中的elevator=noop条目来设置此调度程序。echo noop > /sys/block/sda/queue/scheduler

挂载旗帜:

我会noatime推荐discard

気子

将 tmp 放在 ramdisk 上可以延长 ssd 的使用寿命。要使用此功能,请在 fstab 中输入以下行:none /tmp tmpfs defaults 0 0

一般来说,如果你想深入了解这个话题,我建议优秀的维基文章。

答案4

4)启用自动TRIM

如果你的 SSD 支持,你还应该启用自动 TRIM(如所述这里

相关内容