jr0*_*ket 113
我已经成功地使用了几种不同的技术来改进 Ubuntu 使用存储设备的方式,无论是固态驱动器还是传统驱动器。
对于 SSD,您也希望尽量减少写入驱动器的次数,因为读取不应增加驱动器的磨损。
1) 管理交换文件
如果您不使计算机休眠并且您有足够的 RAM 内存来运行所有应用程序,那么理论上您不需要交换分区。
如果您混合使用 SSD 和硬盘驱动器,请仅将交换分区放在硬盘驱动器上。
2) 无写入读取时间戳(适用于 SSD 和硬盘驱动器)
使用选项noatime和nodiratime挂载分区将在您读取文件和文件夹时停止时间戳写入。除非您使用本地邮件服务器客户端(例如 mutt),否则通常不需要这些时间戳写入。这通常是一个坏主意,因为每次读取都会在更新时间戳时产生写入。这会缩短 SSD 的使用寿命。
编辑您的/etc/fstab配置文件(小心 - 进行备份以确保破坏您的 fstab 配置会阻止您的系统工作):
cp /etc/fstab ~/fstab-backup
gksudo gedit /etc/fstab
Run Code Online (Sandbox Code Playgroud)
通过将文本 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
Run Code Online (Sandbox Code Playgroud)
在这些更改生效之前,您需要重新启动机器
3) 最小化操作系统和应用程序的写入
假设您没有运行关键任务产品服务器,大多数人不会在出现问题时查看日志(特别是因为大多数 Ubuntu 用户很少出现严重错误)。因此,您可以配置 Ubuntu,以便将所有日志写入 RAM 内存而不是 SSD。
注意:只有在安装了要使用的所有软件(尤其是 Apache Web 服务器之类的东西)后才进行以下更改,否则您可能会遇到 /var/log 中缺少目录的问题
有关此方法的背景信息,请参阅ubuntu-eee.com 上的延长闪存驱动器的使用寿命
用编辑器打开/etc/fstab(假设你已经备份了 /etc/fstab 文件)
gksudo gedit /etc/fstab
Run Code Online (Sandbox Code Playgroud)
在 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
Run Code Online (Sandbox Code Playgroud)
在这些更改生效之前,您需要重新启动机器
也可以看看:
Ham*_*ner 94
通常我不会打扰 - 对 SSD 寿命的担忧被夸大了。你可以阅读这篇详细的文章,了解为什么你真的不应该担心。简而言之,现代 SSD 内部的电路为您管理磨损均衡,他们比您更知道如何做到这一点。
文章中计算了以 80M/s 的连续速率接收写入的 SSD 的寿命。寿命51岁。这是基于 2007 年的技术 - 现在 SSD 的寿命会更长。而且您几乎可以肯定不会一天 24 小时以 80M/s 的速度写入 SSD。
然而,随着时间的推移性能下降可能是一个问题,TRIM是解决方案。有两种选择
您必须自己启用自动修剪。(基本上,您将该discard
选项添加到您的挂载选项中,前提是您使用的是 ext4。)我发现一篇博客文章报告说,在删除文件时丢弃选项会降低您的系统速度。
您偶尔可以使用fstrim手动(或在 cron 作业中)执行此操作。如果您只有一个分区,那么您需要做的就是:
sudo fstrim /
Run Code Online (Sandbox Code Playgroud)
请注意, fstrim 仅在 11.10 及更新版本中可用。对于较旧的系统,您将需要该wiper.sh
脚本。我/usr/share/doc/hdparm/contrib/wiper.sh.gz
在我的系统上找到了脚本。
如果您想知道,TRIM 解决的问题,如Wikipedia 所述,是:
SSD 将数据存储在分组为页面的闪存单元中,页面(通常每个 4 kB)组合成块(通常每个块 128 个页面,总计 512 kB)。NAND 闪存单元只能在空时直接写入。如果认为它们包含数据,则首先需要擦除内容,然后才能可靠地执行写入操作。在 SSD 中,写入操作可以在页面级别完成,但由于硬件限制,擦除命令总是会影响整个块。因此,只要可以使用空页面,将数据写入 SSD 介质的速度就会非常快,但是一旦需要覆盖之前写入的页面,速度就会大大减慢. 由于在再次写入之前需要擦除页面中的单元,但只能擦除整个块,因此覆盖将启动读取-擦除-修改-写入循环:必须存储整个块的内容在闪存介质上被有效擦除之前,被覆盖的页面在缓存中被修改,因此缓存的块是最新的,只有这样整个块(带有更新的页面)才会写入闪存介质。这种现象称为写放大。
Seb*_*ühl 20
有几点:
结盟:
经常被指出的是分区的正确对齐。这应该等于 SSD 的块大小。安全操作并使您的分区与 MiB 边界对齐。请注意,您无法使用 Ubuntu 安装程序的分区工具(使用 MB 而不是 MiB)来执行此操作,但您可以启动 live CD,使用 Gparted(使用 MiB),然后单击安装以使用您设置的分区。
正确的调度程序:
重要的一点是调度程序应该是noop
。您可以通过内核参数elevator=noop
或通过echo noop > /sys/block/sda/queue/scheduler
rc.local 中的条目设置此调度程序。
安装标志:
我会推荐noatime
和discard
tmpfs
将 tmp 放在 ramdisk 上可以增加 ssd 的使用寿命。要使用它,请在 fstab 中添加以下行:none /tmp tmpfs defaults 0 0
一般来说,如果你想更深入地研究这个话题,我会推荐这篇优秀的维基文章。
And*_*ovs 16
Ubuntu 上的 SSD 快速调优课程:
文件系统
Arch wiki提到了几个 SSD 文件系统的首选选项 - 其中之一是不稳定的,其他是ext * 的。我认为ext4是最好的选择之一。
注意:在ext4 的情况下,您可能需要使用discard
挂载选项。
表
# <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
Run Code Online (Sandbox Code Playgroud)
这里有几件重要的事情:
swap
分区。现在它只用于休眠,因为现代机器有相当大的内存。noatime
和discard
选项。信息在这里。调度器
考虑从默认调度程序(在大多数 Linux 发行版中为 cfq(完全公平排队))切换到 SSD 的 noop 或截止日期调度程序。例如,使用 noop 调度程序,只需按照收到的顺序处理请求,而无需考虑数据在磁盘上的物理位置。此选项被认为对 SSD 有利,因为 SSD 上所有扇区的寻道时间都相同。
将以下内容添加到/etc/rc.local:
# SSD performance tuning
echo noop > /sys/block/sda/queue/scheduler
Run Code Online (Sandbox Code Playgroud)
信息
归档时间: |
|
查看次数: |
133406 次 |
最近记录: |