在固态驱动器上安装Ubuntu之前/之中/之后应采取哪些步骤以优化性能并确保驱动器的最大耐用性?

#1 楼

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

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

1)管理交换文件

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

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

2)读取时间戳记不写(适用于SSD和硬盘驱动器)

使用noatime和nodiratime选项安装分区将在读取文件和文件夹时停止写入时间戳记。除非您使用本地邮件服务器客户端(例如mutt),否则通常不需要这些时间戳记写入。通常这是个坏主意,原因是每次更新时间戳时每次读取都会产生一次写入。这会减少SSD的寿命。

编辑/ etc / fstab配置文件(请小心-进行备份以确保破坏fstab配置会阻止系统正常工作):

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


通过在定义根(/)和其他分区(/ home)的行中添加文本noatime和nodiratime来编辑分区的安装选项-注意:如果您有/ 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


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

另请参见:


如何启用TRIM?


评论


关于日志和内容的最后一部分,对tmpfs行进行了注释,那么为什么添加这些行会有所不同呢?是否需要添加未注释的内容?

– Oxwivi
2011年9月1日17:50

我可以理解这是否旨在提高速度,但是您撰写的大部分内容似乎都旨在提高SSD的使用寿命。难道现代固态硬盘的这些改进没有意义吗?并且以更多的RAM使用为代价! (例如,请参阅此其他答案中给出的链接)

– Suhan-Ho Suh
2012年4月23日23:30在

不需要2)。 relatime很好地防止了写操作,并且从内核2.6.30开始默认情况下处于活动状态。

– MihaiCapotă
2012年11月21日14:02



只是在@MihaiCapotă的评论中添加了一个服务器故障答案,其中包含有关为什么不需要noatime的更多详细信息。

– Cas
13年1月8日在12:20

他们说noatime在这里意味着nodiratime,因此添加前一个选项就足够了。

– jarno
16年1月29日在8:27

#2 楼

SSD寿命
通常我不会打扰-有关SSD寿命的担忧被夸大了。您可以阅读这篇详细的文章,了解您为什么不真正担心。简而言之,现代SSD内的电路可以为您管理损耗均衡,并且他们知道如何比您更好地做到这一点。 80M / s。寿命是51年。该技术基于2007年的技术-SSD的使用寿命现在会更长。而且,几乎可以肯定,您一天24小时都不以80M / s的速度写入SSD。有两个选项

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

您必须自己启用自动TRIM。 (如果您使用的是ext4,则基本上是将discard选项添加到安装选项中。)我发现一篇博客文章报告说,删除选项在删除文件时会降低系统速度。
您有时可以手动执行此操作(或在cron工作中)使用fstrim。如果只有一个分区,那么您需要做的是:
sudo fstrim /

请注意,fstrim仅在11.10及更高版本中可用。对于较旧的系统,您将需要wiper.sh脚本。我在系统上的/usr/share/doc/hdparm/contrib/wiper.sh.gz处找到了该脚本。
如果您想知道,TRIM解决的问题,如Wikipedia所述:

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


评论


我希望我可以多次投票。这将是这些答案之一。该链接解决了我很长一段时间以来的担心。非常感谢Hamish。

–路易斯·阿尔瓦拉多(Luis Alvarado)
2011年6月6日14:48

来自storagesearch.com的有趣文章。我希望它能给个约会!那么,以上答案是否意味着除TRIM之外,SSD所有者无需理会第一个答案中的建议?我不需要太多文件访问时间,但是具有2G的内存,在运行一些照片编辑软件以及其他一些内存密集型程序(例如Chrome)时,具有交换分区可能仍然有用。

–劳伦斯·西登(Lawrence I. Siden)
2012年12月17日下午2:00

@lsiden:文章确实提到了“稍后:-2008年5月”。而且您是正确的,您不必担心第一篇文章中的所有其他内容。只需启用TRIM并享受速度:)

–汉米·唐纳(Hamish Downer)
2012-12-19 21:41

本文指的是企业级SSD:他使用了200万个写入耐久性周期。消费类SSD大约有3000-5000个周期。具有3000个周期的128 GB SSD可提供57天的连续80MB / s写入速度。

–LeartS
2014年2月15日14:56



从Ubuntu 14.10起,TRIMming每周自动在fstrim支持的所有SSD上进行。参考

– KrisWebDev
16-10-31在9:47

#3 楼

有以下几点:

对齐方式:

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

正确的调度程序:

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

安装标志:

我建议使用noatimediscard

tmpfs

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

通常如果您想更深入地研究这个主题,我将推荐这个出色的Wiki文章。

#4 楼

在Ubuntu上为您的SSD进行快速调试的过程:

文件系统

Arch Wiki提到了一些SSD文件系统的首选选项-其中一个是不稳定的,其他是ext *。我认为ext4是最好的选择之一。
注意:在ext4的情况下,您可能要使用discard挂载选项。 >
这里没有几件重要的事情:


对于具有> = 2 gigs内存的系统,在RAM中定位/ tmp是可取的。
没有swap分区。如今,它仅用于休眠,因为现代计算机具有大量RAM。

noatimediscard选项。信息在这里。

调度程序

考虑从默认调度程序(在大多数Linux发行版中是cfq(完全公平排队))切换到SSD的noop或截止时间调度程序。例如,使用noop调度程序,可以简单地按照接收请求的顺序处理请求,而无需考虑数据在磁盘上的物理位置。该选项被认为对SSD具有优势,因为SSD上所有扇区的寻道时间都相同。

在/etc/rc.local中添加以下内容:

# <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


信息

一两个

评论


如果没有交换,并且RAM中带有/ tmp,很容易出现内存不足的情况,因为许多程序将/ tmp用作存储空间(例如,用于存储DVD映像的Brasero)。

–安排
2011年12月9日19:19

并不是的。默认情况下,tmpfs是RAM的10%。大小可以使用大小选项进行调整。

– Andrejs Cainikovs
2011-12-11 21:54

Brasero是一个不好的例子,Lennart Poettering在他的博客0pointer.de/blog/projects/tmp.html中解释说,它不应该首先这样做。

– LiveWireBT
2012年5月12日晚上11:56

#5 楼

4)启用自动TRIM

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

#6 楼

我不会将此行添加到您的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,如果您的硬件/软件支持,那是必须的,我不要在fstab中使用丢弃。我创建了一个日常cron,因为我的PC始终处于开机状态,方法是:

gksu gedit /etc/cron.daily/trim


然后将其添加到文件并保存(如果您没有单独的/ home,在ssd上进行分区,或者在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


在“ exit 0”上方和下方添加此内容last#:

# 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


您可以从这里复制和粘贴,这样就不会出现错误,对于外行来说,它看起来很不错,不是。

我还读到,让您的ssd驱动器的10%保持未格式化状态可以帮助延长使用寿命,这还有待观察。我对此没有读太多,所以我不能保证这样做。

这是最好的全方位指南,他没有浏览Google一天,然后提出了指南,您应该在此处查看

评论


是否打算将常规/ var / log下的所有目录添加到/etc/rc.local?如果不添加目录怎么办?我想如果您安装一些新软件包,可能需要添加更多目录。可以在关机期间更新/etc/rc.local以便在下次启动时创建所有目录吗?

– jarno
15年11月22日在9:36

在ubuntu 14.04及更高版本中,默认情况下设置了cron作业/etc/cron.weekly/fstrim来每周修剪文件系统。至于14.04,请看这里。 Ubuntu 15.10使用/ sbin / fstrim --all ||在fstrim脚本中为true。

– jarno
2015年11月22日10:00

至少目录/ var / log / installer在Xubuntu 15.10中具有名为ubiquity-apt-clone的子目录。您是否应该递归创建子目录?

– jarno
15年11月22日在11:11

#7 楼

TRIM允许操作系统通知SSD哪些数据块不再使用,可以在内部擦除。修剪使SSD可以处理垃圾回收开销,否则会提前大大减慢对相关块的未来写入操作。1

在Ubuntu 14.04中,util-linux中添加了新功能。定期自动修剪SSD的软件包,但默认情况下仅Intel和Samsung SSD启用了TRIM,因为运行TRIM时某些便宜的SSD甚至可以使自己变砖。2Ubuntu 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%292如何启用Trim?

#8 楼

很明显,/var/tmp不应包含在tmpfs中,因为根据定义,它的内容需要保留,而不是重新引导:


TMP和VarTMP之间的区别


#9 楼

好吧,“长话短说”:


是的。就像普通的硬盘一样。这是一个很好的概述。
我会介绍一些特别的内容。
很好。我在服务器上使用它。

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

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


这将为您的临时文件创建一个ramdrive,这将降低老化程度。还要在默认设置后将noatime,nodiratime,discard添加到您的ext4行中。这还将降低磨损并启用TRIM功能。保存并重新启动。

评论


非常感谢。我很困惑,因为我一直使用双引导Linux,这是我第一次将Linux安装在新的SSD上,因此过程和存储对我来说都是新的。但是好像和在HDD上安装Ubuntu一样,对吗?

–瓦伦
2012年4月23日在22:33

这是相同的。在安装时,可能会要求您创建分区表,但这是一键式操作。

– Gajdipajti
2012年4月23日在22:36

另一个问题,我是否需要对Dell笔记本电脑的BIOS进行任何更改。我今天要安装SSD和Ubuntu?

–瓦伦
2012年4月24日13:15

不,现代的BIOS自动检测类型的硬盘。

– Gajdipajti
2012年4月24日15:51

非常感谢,非常有帮助,会让您知道明天会发生什么:)

–瓦伦
2012年4月24日18:34

#10 楼

有一些很好的信息,如何从http://namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html中为Ubuntu,Linux Mint调整和优化SSD对

使用preload

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

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


关闭您的交换

要更改交换性设置:

$ su -
# nano /etc/sysctl.conf


,并将此行添加到sysctl.conf文件中。 />
vm.swappiness = 10


#11 楼

需要UPS。在/etc/sysctl.conf文件中找到配置文件守护程序,通常是/etc/syslog.confили/etc/rsyslog.d/,所有形式为/var/log/的路径都通过写减号( “-”)在前面。
mail.err

vm.dirty_writeback_centisecs = 15000
vm.swappiness = 10


mail.err -/var/log/mail.err之后

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

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

#13 楼

我建议仅将引导时读取的那些东西放在需要加载大量时间的任何应用程序上,例如数据和日志以及其他非关键性的东西(我会在普通HDD上找到它们),也可以将ubuntu设置为仅加载引导时从SSD获得一个大的initramfs并且不将更改写回ssd,这有一个好处,即对该分区的更改不是持久性的,就像对引导系统的保护一样,因此您当然需要更多的RAM。

我会将分区
/,/ etc,/ usr,/ boot,/ lib 32/64放在SSD上,同时像

/ opt,/ bin,/ sbin,/ root,/ home甚至在HDD上交换(增加RAM !!)

维基百科说:


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


备份有很多方法,其中最简单的是(r)sync plus计划任务。

评论


您知道每个地点的用途吗?除了/ root,/ home和swap以外,所有提及的位置都应放在SSD上以提高速度,因为它大多是只读的。为了提高速度,也将/ var放在SSD上。

– Lekensteyn
2011-12-09 17:44

取决于您打算加快的速度以及SSD的大小。 120 GB应该足够,好的,但是使用较小的SSD可以轻松达到目标。

– Michael K
2011-12-09 17:47

Kubuntu Oneiric的/分区在我的SSD上占用4.5GB。 20GB足够用于/减去/ home。调整文件系统布局,将其分布在几个分区上的努力是不值得的。

– Lekensteyn
2011年12月9日18:15