it-swarm.cn

如何优化SSD的操作系统?

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

146
Lars Haugseth

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

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

1)管理交换文件

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

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

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

使用选项noatimenodiratime挂载分区将停止时间戳写入你读了文件和文件夹。除非您使用本地邮件服务器客户端(如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

在这些更改生效之前,您需要重新启动计算机

也可以看看:

108
jr0cket

SSD生活

一般来说,我不会打扰 - 对SSD寿命的担忧被夸大了。你可以读到这个 关于为什么你真的不应该担心的详细文章 。简而言之,现代固态硬盘内部的电路为您管理耗损,他们知道如何做得比您好得多。

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

SSD性能

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

  • 自动/在线TRIM,又名丢弃
  • 手动TRIM

你必须 自己启用自动TRIM 。 (基本上你将discard选项添加到你的挂载选项,只要你使用的是ext4。)我发现一篇博文报道 删除文件时丢弃选项会降低你的系统速度

您可以使用 fstrim 手动(或在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介质的速度非常快,但是一旦先前写入的页面需要被覆盖,速度就会大大降低。由于在再次写入之前需要擦除页面中的单元格,但只能擦除整个块,否则覆盖将启动读取 - 擦除 - 修改 - 写入循环:整个块的内容必须先存储在缓存中才能在闪存介质上有效擦除,然后在缓存中修改覆盖的页面,使缓存的块是最新的,然后才是整个块(更新的页面) )写入闪存介质。这种现象称为写入放大。

92
Hamish Downer

有几点:

对齐:

经常指出的是分区的右边 对齐 。这应该等于SSD的块大小。安全播放并使分区与MiB边界对齐。请注意,您无法使用Ubuntu安装程序的分区工具(使用MB而不是MiB)执行此操作,但您可以启动Live CD,使用Gparted(使用MiB),然后单击Install以使用您设置的分区。

正确的调度程序:

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

Mountflags:

我会推荐noatimediscard

Tmpfs的

将tmp放在ramdisk上会增加ssd的生命周期。要使用此功能,请在fstab中添加以下行:none /tmp tmpfs defaults 0 0

一般来说,如果你想深入探讨这个话题,我会建议 这个 优秀的wiki文章。

20
Sebastian Rühl

在Ubuntu上快速调整SSD的过程:

文件系统

Arch wiki 提及 SSD文件系统的几个首选选项 - 其中一个是不稳定的,另一个是ext* 1。我假设ext4是最好的选择之一。
注意:如果是ext4,您可能需要使用discard mount选项。

fstab中

# <file system> <mount point> <type> <options>                                  <dump>  <pass>
proc            /proc         proc   nodev,noexec,nosuid                        0       0
tmpfs           /tmp          tmpfs  nodev,nosuid,noatime,mode=1777             0       0
/dev/sda1       /             ext4   defaults,noatime,discard,errors=remount-ro 0       1
/dev/sda2       /home         ext4   defaults,noatime,discard,user_xattr        0       2
/dev/sda3       /windows      ntfs   defaults,noatime,discard,umask=007,gid=46  0       0

这里几个重要的事情是:

  • 对于具有≥= 2 gig内存的系统,需要在RAM中定位/ tmp。
  • 没有swap分区。现在它只需要休眠,因为现代机器有相当大的RAM。
  • noatimediscard选项。信息是 这里

调度

考虑从默认调度程序切换到SSD的noop或deadline调度程序,默认调度程序在大多数Linux发行版下是cfq(完全公平排队)。例如,使用noop调度程序,只需按接收顺序处理请求,而不考虑数据实际驻留在磁盘上的位置。该选项被认为对SSD有利,因为SSD的所有扇区的寻道时间相同。

将以下内容添加到/ etc/rc.local

# SSD performance tuning
echo noop > /sys/block/sda/queue/scheduler

信息

16
Andrejs Cainikovs

4)启用自动TRIM

如果您的SSD支持它,您还应该启用自动TRIM(如所描述 此处

8
Uli

TRIM允许操作系统通知SSD哪些数据块不再被认为正在使用并且可以在内部擦除。修剪使SSD能够处理垃圾收集开销,否则将提前显着减慢对相关块的未来写入操作。1

在Ubuntu 14.04中,一个新功能被添加到util-linux软件包中,该软件包会自动定期修剪SSD,但只有Intel和Samsung SSD默认启用TRIM ,因为一些廉价的SSD甚至可以在运行TRIM时自行封锁。2 Ubuntu 14.04中/etc/cron.weekly/fstrim的内容:

#!/bin/sh
# call fstrim-all to trim all mounted file systems which support it
set -e

# This only runs on Intel and Samsung SSDs by default, as some SSDs with faulty
# firmware may encounter data loss problems when running fstrim under high I/O
# load (e. g.  https://launchpad.net/bugs/1259829). You can append the
# --no-model-check option here to disable the vendor check and run fstrim on
# all SSD drives.
exec fstrim-all

1https://en.wikipedia.org/wiki/Trim_%28computing%29
2如何启用Trim?

3
karel

我不会将此行添加到您的fstab,var/tmp文件夹意味着重新启动,这可能会导致问题。

tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0

当我配置新系统时,我将所有tmp文件夹以这种方式注释掉,如果发生任何事情,我可以查看日志和内容。然后,一旦我有主系统设置我将取消注释,但我从来没有添加上面的行,这是我使用的:

tmpfs /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

如果我的系统出现任何问题,我会评论这些问题,即使在重新启动或锁定后强制重启之后也能检查所有内容。

此外,您不需要nodiratime,noatime选项可以自行处理。

至于TRIM,如果你的hw/sw支持它,那是必须的,我不在fstab中使用discard。我创建了一个每日cron,因为我的PC一直在运行,通过这样做:

gksu gedit /etc/cron.daily/trim

然后将其添加到文件并保存(如果您在ssd上没有单独的/ home分区,或者在ssd上有其他部分,您应该知道如何修改它:

#!/bin/sh
LOG=/var/log/trim.log
echo "*** $(date -R) ***" >> $LOG
fstrim -v / >> $LOG
fstrim -v /home >> $LOG

然后使文件可执行:

Sudo chmod +x /etc/cron.daily/trim

我也像这样编辑我的rc.local:

gksu gedit /etc/rc.local

将此项添加到“退出0”上方并在最后一个#下方添加:

# Modification for SSD
# you may want to add more folders to be checked/created to this list
for dir in apparmor apt ConsoleKit cups dist-upgrade fsck gdm installer news ntpstats samba speech-dispatcher unattended-upgrades; do
  if [ ! -e /var/log/$dir ] ; then
    mkdir /var/log/$dir
  fi
done

你可以从这里进行复制和粘贴,这样就没有任何错误,对外行人来说,它看起来很糟糕,事实并非如此。

我还读到,将10%的ssd驱动器保留为无格式可以帮助延长寿命,这还有待观察。我没有读到这么多,所以我不能保证这样做是否有意义。

这是最好的全能指南,他没有在谷歌周围浏览一天,然后想出一个指南,你应该检查出来 这里

3
JohnRB

有一些很好的信息如何调整和优化SSD的Ubuntu,Linux Mint来自 http://namhuy.net/1563/how-to-Tweak-and-optimize-ssd-for-ubuntu-linux-mint .html 你可能会感兴趣

使用预加载

在Ubuntu,Linux Mint或基于debian的发行版上安装preload

# apt-get update && apt-get install preload

关闭你的交换

要更改swappiness设置:

$ su -
# nano /etc/sysctl.conf

并将此行添加到sysctl.conf文件中。

vm.swappiness = 10
2
Sue Russell

很明显/var/tmp不应该在tmpfs中,因为根据定义,它的内容需要保留在重新启动之外:

2
user95602

好吧“长话短说”:

  1. 是。这就像一个普通的硬盘。 这里 是一个很好的概述。
  2. 我将介绍一些特殊的附加内容。
  3. 非常好。我在服务器上使用它。

在安装过程中格式化为ext4,并创建一个小的交换~1 GB。安装后使用Sudo gedit /etc/fstab编辑fstab并添加以下行

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

这将为您的临时文件创建一个ramdrive,这将降低老化。默认情况下,还要将noatime,nodiratime,discard添加到ext4行。这也将降低磨损,并启用TRIM功能。保存并重启。

2
gajdipajti

UPS是必需的。在/etc/sysctl.conf文件中

vm.dirty_writeback_centisecs = 15000
vm.swappiness = 10

找到配置文件守护进程,通常是/etc/syslog.confили/etc/rsyslog.d/,并且通过在方法前面写一个减号(“ - ”)来改变/var/log/形式的所有路径。在mail.err之前

/var/log/mail.err


mail.err -/var/log/mail.err

使用FS btrfs并使用-o ssd选项

更多 http://vasilisc.com/speedup_ubuntu_eng#speedup_fs

如何为Ubuntu,Linux Mint调整和优化SSD

启用TRIM

TRIM(Trim命令让操作系统知道哪些SSD块未被使用且可以清除)

如果发生错误,请先备份fstab。

# cp /etc/fstab ~/fstab.bk

编辑fstab文件

# nano /etc/fstab

在ext4之后,向您的ssd驱动器或分区添加丢弃

UUID=bef10b86-494d-41c6-aa46-af72cfba90fd / ext4 discard,errors=remount-ro 0 1
Adding noatime and nodiratime

noatime和nodiratime是linux中用于linux文件系统的挂载选项。 noatime禁用文件系统上的atime更新,nodiratime将禁用目录系统上的atime更新。通过添加noatime和nodiratime将大大降低ssd负载意味着性能提升。

编辑fstab文件

# nano /etc/fstab

在ext4之后为你的ssd驱动器或分区添加noatime,nodiratime

UUID=bef10b86-494d-41c6-aa46-af72cfba90fd / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
1
user223973

我建议只将那些在启动时读取的东西放在SSD上任何可能需要很长时间才能加载的应用程序。数据和日志以及其他非常重要的东西我会在普通硬盘上找到。你也可以设置你的ubuntu只加载在启动时来自SSD的一个很大的初始化,而不是将更改写回到ssd.This的好处是,对这个分区的更改不是持久的,这对你的启动系统来说就像保护一样。因此你需要更多RAM当然。

我会...请将分区/,/ etc,/ usr,/ boot,/ lib 32/64放在SSD上

硬盘上的/ opt,/ bin,/ sbin,/ root,/ home甚至交换(增加RAM !!!)

维基百科 说:

Linux内核支持从版本2.6.33开始的TRIM功能。使用“discard”参数安装时支持ext4文件系统。最新的磁盘实用程序(以及使用它们的安装软件)也应用适当的分区对齐。

对于备份,有很多种方法,最简单的方法是(r)同步加cron作业。

0
Michael K