Как оптимизировать ОС для SSD?

143

Какие шаги следует предпринять до / во время / после установки Ubuntu на твердотельном диске для оптимизации производительности и обеспечения максимальной долговечности накопителя?

    
задан Lars Haugseth 06.08.2010 в 16:03
источник

13 ответов

106

Я успешно использовал несколько разных методов, чтобы улучшить способ использования Ubuntu устройством хранения, будь то твердотельное или традиционное устройство.

Для SSD вы пытаетесь свести к минимуму количество времени, в которое записывается диск, так как чтение не должно увеличивать износ диска.

1) Управление файлом подкачки

Если вы не спящий спящий режим на вашем компьютере, и у вас достаточно памяти RAM для запуска всех ваших приложений, тогда теоретически вам не нужен раздел подкачки.

Если у вас есть сочетание SSD и жестких дисков, поместите свой раздел подкачки только на жесткие диски.

2) No Writes for Timestamps (подходит для SSD и жестких дисков)

Установка разделов с параметрами noatime и nodiratime остановит запись метки времени при чтении файлов и папок. Эти записи временных меток обычно не требуются, если вы не используете клиента локального почтового сервера, такого как mutt. Причина, по которой это, как правило, плохая идея, состоит в том, что каждое чтение будет производить запись при обновлении временных меток. Это уменьшает срок службы SSD.

Измените конфигурационный файл / etc / fstab (осторожно - сделайте резервную копию, чтобы убедиться, что нарушение вашей конфигурации fstab может помешать работе вашей системы):

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

Измените параметры монтирования для своих разделов, добавив текст noatime и nodiratime к строкам, определяющим ваш root (/) и другие разделы, если у вас есть (/ 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), выполните следующие изменения: в противном случае у вас могут возникнуть проблемы с отсутствующими каталогами в / 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?
ответ дан jr0cket 08.08.2010 в 15:09
источник
90

Жизнь SSD

В общем, я бы не стал беспокоиться - беспокойство о жизни SSD раздуто. Вы можете прочитать эту подробную статью о том, почему вы действительно не должны беспокоиться . Короче говоря, схема внутри современных твердотельных накопителей управляет износостойкостью для вас, и они знают, как сделать это намного лучше, чем вы.

В статье приведен расчет жизни SSD, который получает записи с непрерывной скоростью 80 М / с. Жизнь 51 год . Это основано на технологии 2007 года - жизнь SSD будет дольше. И вы почти наверняка не пишете на свой SSD по 80 Мбит / с 24 часа в сутки.

Производительность SSD

Однако ухудшение производительности со временем может быть проблемой, и TRIM является решением. Существует два варианта

  • автоматический / онлайн TRIM, aka discard
  • руководство TRIM

Вы должны включить автоматический TRIM . (В основном вы добавляете параметр discard в параметры монтирования, если используете ext4.) Я нашел сообщение в блоге, сообщающее, что опция discard замедляет вашу систему при удалении файлов .

Вы можете иногда делать это вручную (или в задании cron), используя fstrim . Если у вас только один раздел, вам нужно всего лишь:

sudo fstrim /

Обратите внимание, что fstrim доступен только в 11.10 и новее. Для старых систем вам понадобится скрипт wiper.sh . Я нашел скрипт в /usr/share/doc/hdparm/contrib/wiper.sh.gz в моей системе.

Если вам интересно, проблема, которую TRIM решает, поскольку , описанный в Википедии , является:

SSDs store data in flash memory cells that are grouped into pages, with the pages (typically 4 kB each) grouped together into blocks (typically 128 pages per block, totaling 512 kB). NAND flash memory cells can only be directly written to when they are empty. If they are considered to contain data, the contents first need to be erased before a write operation can be performed reliably. In SSDs, a write operation can be done on the page-level, but due to hardware limitations, erase commands always affect entire blocks. As a result, writing data to SSD media is very fast as long as empty pages can be used, but slows down considerably once previously written pages need to be overwritten. Since an erase of the cells in the page is needed before it can be written again, but only entire blocks can be erased, an overwrite will initiate a read-erase-modify-write cycle: the contents of the entire block have to be stored in cache before it is effectively erased on the flash medium, then the overwritten page is modified in the cache so the cached block is up to date, and only then is the entire block (with updated page) written to the flash medium. This phenomenon is known as write amplification.

    
ответ дан Hamish Downer 08.08.2010 в 21:03
20

Есть несколько моментов:

Выравнивание:

Часто указывается правильный выравнивание раздела. Это должно быть равно размеру блока SSD. Играйте в безопасном режиме и делайте свои разделы согласованными с границами MiB. Обратите внимание: вы не можете сделать это с помощью инструмента разделения раздела Ubuntu (который использует MB not MiB), но вы можете загружать Live 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

Как правило, если вы хотите глубже погрузиться в эту тему, я бы рекомендовал эту отличную вики-статью.

    
ответ дан Sebastian Rühl 03.02.2011 в 22:28
16

Быстрый курс настройки для вашего SSD на Ubuntu:

Файловая система

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

Несколько важных вещей здесь:

  • Для систем с > = 2 гигабайтов памяти желательно расположение / tmp в ОЗУ.
  • Нет swap раздела. В настоящее время это необходимо только для спячки, поскольку современные машины имеют довольно большой объем оперативной памяти.
  • noatime и discard . Информация здесь .

планировщик

Рассмотрим переход от планировщика по умолчанию, который в большинстве дистрибутивов Linux является cfq (полностью честная очередь), для планировщика noop или deadline для SSD. Например, использование планировщика noop просто обрабатывает запросы в том порядке, в котором они получены, без какого-либо учета того, где данные физически находятся на диске. Эта опция считается предпочтительной для SSD, поскольку времена поиска идентичны для всех секторов на SSD.

Добавьте в /etc/rc.local следующее:

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

Информация

один два

    
ответ дан Andrejs Cainikovs 09.12.2011 в 18:24
8

4) включить автоматический TRIM

Если ваш SSD поддерживает его, вы также должны включить автоматический TRIM (как описано здесь )

    
ответ дан Uli 31.12.2010 в 00:37
3

Я бы не добавил эту строку в вашу 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 поддерживает его, это обязательно, я не использую discard в fstab. Я создаю ежедневный cron, потому что мой компьютер всегда включен, делая следующее:

gksu gedit /etc/cron.daily/trim

Затем добавьте это в файл и сохраните (если у вас нет отдельного / домашнего раздела на 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» и ниже последнего #:

# 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 неформатированным может помочь продлить жизнь, что еще предстоит выяснить. Я не так много читал в этом, поэтому я не могу ручаться, если имеет смысл это сделать.

Это лучший во всем руководстве, он не обошел Google в течение дня, а затем придумал руководство, вы должны проверить его ЗДЕСЬ

    
ответ дан JohnRB 29.07.2013 в 00:53
3

TRIM позволяет операционной системе сообщать SSD, какие блоки данных больше не используются и могут быть протерты внутренне. Обрезка позволяет SSD обрабатывать накладные расходы на сбор мусора, что в противном случае значительно замедляло бы будущие операции записи для задействованных блоков заранее. 1

В Ubuntu 14.04 добавлена новая функция в пакет util-linux , который автоматически обрезает SSD-файлы автоматически, но по умолчанию только SSD от Intel и Samsung имеют TRIM, потому что некоторые дешевые SSD могут даже кирпичи 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 Ссылка
2 Как включена функция Trim?

    
ответ дан karel 25.12.2013 в 02:52
2

Понятно, что /var/tmp не должно быть в tmpfs, поскольку по определению его содержимое необходимо сохранить за перезагрузкой:

  • Различия между TMP и VarTMP
ответ дан user95602 09.10.2012 в 18:12
2

Ок "длинный рассказ короткий":

  1. Да. Это похоже на нормальный hdd. Здесь - хороший обзор.
  2. Некоторые специальные дополнения, которые я расскажу.
  3. Довольно хорошо. Я использую его с сервером.

Отформатировать как ext4 во время установки и создать небольшую свопинг ~ 1 ГБ. После установки отредактируйте fstab с sudo gedit /etc/fstab и добавьте следующую строку

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

Это создаст ramdrive для ваших временных файлов, что приведет к снижению старения. Также добавьте noatime,nodiratime,discard к вашей строке ext4 после значений по умолчанию. Это также уменьшит износ и активирует функцию TRIM. Сохраните и перезагрузитесь.

    
ответ дан gajdipajti 24.04.2012 в 00:06
2

Есть некоторая хорошая информация Как настроить и оптимизировать SSD для Ubuntu, Linux Mint от Ссылка вам может быть интересно

Использовать предварительную загрузку

Чтобы установить предварительную загрузку в Ubuntu, дистрибутивах Linux Mint или debian

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

Отключить своп

Чтобы изменить настройку swappiness:

$ su -
# nano /etc/sysctl.conf

И добавьте эту строку в файл sysctl.conf.

vm.swappiness = 10
    
ответ дан Sue Russell 09.11.2013 в 19:58
2

ИБП требуется. В файле /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

Подробнее Ссылка

    
ответ дан Василий Алексеенко 12.05.2012 в 13:08
1

Как настроить и оптимизировать SSD для Ubuntu, Linux Mint

Включить TRIM

Команда TRIM (команда Trim позволяет ОС знать, какие блоки SSD не используются и могут быть удалены)

Создайте резервную копию fstab сначала, если произойдет что-то неправильное.

# cp /etc/fstab ~/fstab.bk

Изменить файл fstab

# nano /etc/fstab

Добавить сброс на диски или разделы ssd, после ext4

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

Добавьте noatime, nodiratime к вашим дискам или разделам ssd, после ext4

UUID=bef10b86-494d-41c6-aa46-af72cfba90fd / ext4 discard,noatime,nodiratime,errors=remount-ro 0 1
    
ответ дан user223973 24.12.2013 в 23:44
0

Я предлагаю размещать только те вещи, которые читаются во время загрузки на SSD, возможно, приложения, требующие много времени для загрузки. Даты и журналы и другие некритические вещи, которые я нашел бы на обычном жестком диске. Также вы можете настроить свой ubuntu чтобы загружать большие initramfs из SSD во время загрузки и не записывать обратно изменения в ssd. Это имеет преимущество, что изменения в этом разделе не являются постоянными, что является защитой для вашей системы загрузки. Для этого вам понадобится гораздо больше ОЗУ конечно.

Я бы, например, разместить разделы /, / etc, / usr, / boot, / lib 32/64 на SSD, в то время как sth like

/ opt, / bin, / sbin, / root, / home и даже swap (увеличить RAM !!!) на HDD

Wikipedia говорит:

The Linux kernel supports the TRIM function starting with version 2.6.33. The ext4 file system is supported when mounted using the "discard" parameter. The most recent disk utilities (and therefore installation software that make use of them) also apply proper partition alignment.

Для резервных копий существует множество способов, самым простым из которых является (r) синхронизация плюс задание cron.

    
ответ дан Michael K 09.12.2011 в 17:26