在固态驱动器上安装Ubuntu之前/期间/之后应采取哪些步骤来优化性能并确保驱动器的最大耐用性?
在固态驱动器上安装Ubuntu之前/期间/之后应采取哪些步骤来优化性能并确保驱动器的最大耐用性?
Answers:
我已经成功地使用了几种不同的技术来改善Ubuntu使用存储设备的方式,无论是固态驱动器还是传统驱动器。
对于SSD,您还希望将驱动器的写入次数也减至最少,因为读取操作不应增加驱动器的磨损。
1)管理交换文件
如果您不休眠计算机,并且有足够的RAM内存来运行所有应用程序,那么从理论上讲,您不需要交换分区。
如果混合使用SSD和硬盘驱动器,请仅将交换分区放在硬盘驱动器上。
2)不写入读取时间戳(适用于SSD和硬盘驱动器)
使用选项noatime和nodiratime挂载分区将在您读取文件和文件夹时停止时间戳记写入。除非您使用本地邮件服务器客户端(例如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)最小化来自OS和应用程序的写入
假设您没有在运行关键任务产品服务器,那么大多数人都不会在出现问题的情况下查看日志(尤其是对于大多数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
这些更改生效之前,您将需要重新启动计算机。
也可以看看:
通常,我不会打扰-有关SSD寿命的担忧被夸大了。您可以阅读这篇详细的文章,了解您为什么不真正担心。简而言之,现代SSD内的电路可以为您管理损耗均衡,而且他们知道如何做比您更好。
本文是对以80M / s连续速率接收写入数据的SSD寿命的计算。寿命是51年。这是基于2007年的技术-SSD的寿命现在将更长。而且,您几乎可以肯定不会每天24小时以80M / s的速度写入SSD。
但是随着时间的推移性能可能会出现问题,而TRIM是解决方案。有两种选择
您必须自己启用自动TRIM。(discard
如果您正在使用ext4,则基本上是将选项添加到安装选项中。)我发现一篇博客文章报告说,在删除文件时,丢弃选项会降低系统的速度。
您有时可以使用fstrim手动执行此操作(或在cron作业中)。如果只有一个分区,那么您要做的就是:
sudo fstrim /
请注意,fstrim仅在11.10及更高版本中可用。对于较旧的系统,您将需要wiper.sh
脚本。我在/usr/share/doc/hdparm/contrib/wiper.sh.gz
系统上找到该脚本。
如果您想知道,如Wikipedia所述,TRIM解决的问题是:
SSD将数据存储在分组为页面的闪存单元中,这些页面(每个页面通常为4 kB)一起被分组为块(每个块通常128页,总计512 kB)。NAND闪存单元只能在空时直接写入。如果认为它们包含数据,则首先需要擦除内容,然后才能可靠地执行写操作。在SSD中,可以在页面级别上执行写操作,但是由于硬件限制,擦除命令始终会影响整个块。结果,只要可以使用空页面,就可以将数据写入SSD介质的速度非常快,但是一旦以前写入的页面需要被覆盖,速度就会大大降低。。由于需要先擦除页面中的单元格才能再次写入,但只能擦除整个块,因此覆盖将启动读取-擦除-修改-写入周期:必须存储整个块的内容在高速缓存中将其有效擦除之前,先在高速缓存中将其覆盖,然后在高速缓存中修改覆盖的页面,以使高速缓存的块保持最新状态,然后才将整个块(带有更新的页面)写入闪存介质。这种现象称为写放大。
有几点:
对准:
经常指出的是分区的正确对齐。这应该等于SSD的块大小。安全播放,并使分区与MiB边界对齐。请注意,您无法使用Ubuntu安装程序的分区工具(使用MB而不使用MiB)来执行此操作,但是可以引导实时CD,使用Gparted(使用MiB),然后单击“安装”以使用您设置的分区。
正确的调度程序:
重要的一点是调度程序应该是noop
。您可以通过kernelparameter elevator=noop
或echo noop > /sys/block/sda/queue/scheduler
rc.local中的条目设置此调度程序。
Mountflags:
我会建议noatime
和discard
Tmpfs
将tmp放在ramdisk上会增加ssd的寿命。要使用此功能,请将以下行放在fstab中:none /tmp tmpfs defaults 0 0
通常,如果您想更深入地研究这个主题,我会推荐这个出色的Wiki文章。
在Ubuntu上快速调整SSD的过程:
文件系统
Arch Wiki 提到了一些用于SSD文件系统的首选选项-其中一个是不稳定的,其他是ext *。我认为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
这里没有几件重要的事情:
swap
分区。如今,仅休眠状态就需要它,因为现代计算机具有大量的RAM。noatime
和discard
选项。信息在这里。调度器
考虑从默认调度程序(在大多数Linux发行版中为cfq(完全公平的排队))切换到SSD的noop或截止时间调度程序。例如,使用noop调度程序,可以简单地按接收请求的顺序处理请求,而无需考虑数据在磁盘上的物理位置。人们认为此选项对SSD有利,因为搜索时间对于SSD上的所有扇区都相同。
将以下内容添加到/etc/rc.local:
# SSD performance tuning
echo noop > /sys/block/sda/queue/scheduler
信息
/tmp
RAM,则很容易出现内存不足的情况,因为许多程序都/tmp
用作存储空间(例如,用于存储DVD映像的Brasero)。
tmpfs
默认情况下为RAM的10%。大小可以使用size
选项进行调整。
我不会将此行添加到您的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中使用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
您可以从此处复制和粘贴,这样就不会出现错误,而不会出现在外行看来是错误的。
我还读到,让您的ssd驱动器的10%保持未格式化状态可以帮助延长使用寿命,这还有待观察。我对此没有读太多,所以我不能保证这样做。
这是最好的全方位指南,他没有浏览Google一天,然后提出了指南,您应该在此处查看
/sbin/fstrim --all || true
在fstrim脚本中使用。
TRIM允许操作系统通知SSD哪些数据块不再使用,可以在内部擦除。整理使SSD可以处理垃圾回收开销,否则将大大减慢将来对相关块的写入操作的速度。1个
在Ubuntu 14.04中,已在util-linux软件包中添加了一项新功能,该功能会定期自动修剪SSD,但是默认情况下,只有Intel和Samsung SSD启用了TRIM,因为某些便宜的SSD甚至在运行TRIM时也会变砖。2/etc/cron.weekly/fstrim
Ubuntu 14.04中的内容:
#!/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
1 https://en.wikipedia.org/wiki/Trim_%28computing%29
2 如何启用修剪?
很明显,/var/tmp
不应将其包含在tmpfs中,因为根据定义,它的内容需要保留,而不需要重新启动:
好的“长话短说”:
ext4
在安装过程中格式化为格式,并创建一个约1 GB的小型交换。安装后,请编辑fstab sudo gedit /etc/fstab
并添加以下行
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
这将为您的临时文件创建一个ramdrive,这将降低老化程度。还可以noatime,nodiratime,discard
在默认设置后添加到ext4行。这还将降低磨损并启用TRIM功能。保存并重新启动。
有一些好的信息如何调整和优化,从对Ubuntu,Linux Mint的SSD http://namhuy.net/1563/how-to-tweak-and-optimize-ssd-for-ubuntu-linux-mint.html你可能对...感兴趣
使用预载
在基于Ubuntu,Linux Mint或Debian的发行版上安装预加载
# apt-get update && apt-get install preload
关闭交换
要更改交换设置:
$ su -
# nano /etc/sysctl.conf
并将此行添加到sysctl.conf文件中。
vm.swappiness = 10
需要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
选项
启用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之后,将noatime,nodiratime添加到您的ssd驱动器或分区中
UUID=bef10b86-494d-41c6-aa46-af72cfba90fd / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
我建议仅将引导时读取的那些东西放在可能需要大量时间加载的应用程序中,例如数据和日志以及其他非关键性的东西(我会在普通的HDD上找到它们),也可以将ubuntu设置为仅加载引导时从SSD获得一个大的initramfs并且不将更改写回ssd,这有一个好处,即对该分区的更改不是持久性的,就像对引导系统的保护一样,因此您当然需要更多的RAM。
我会例如将分区/,/ etc,/ usr,/ boot,/ lib 32/64放在SSD上,
/ opt,/ bin,/ sbin,/ root,/ home甚至交换(增加RAM !!!)
维基百科说:
Linux内核从版本2.6.33开始支持TRIM功能。使用“ discard”参数挂载时,将支持ext4文件系统。最新的磁盘实用程序(以及因此使用它们的安装软件)也将应用正确的分区对齐。
对于备份,有很多方法,最简单的方法是(r)sync plus cron job。
/root
,/home
以及swap都应放在SSD上以提高速度,因为它大多是只读的。为了提高速度,也请装/var
上SSD。
/
Kubuntu Oneiric 的分区在我的SSD上占用4.5GB。/
减去20GB就足够了/home
。调整文件系统布局,将其分布在几个分区上的努力是不值得的。
tmpfs
行进行了注释,那么为什么添加这些行会有所不同呢?我们是否需要添加未注释的内容?