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


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


143
2017-08-06 14:03


происхождения




ответы:


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

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

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

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

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

2) Нет записей для временных меток (подходит для SSD и жестких дисков)

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

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

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

Измените параметры монтирования для своих разделов, добавив текст 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, чтобы все журналы записывались в оперативную память, а не в SSD.

Примечание. Выполняйте следующие изменения, только если вы установили все программное обеспечение, которое собираетесь использовать (особенно такие, как веб-сервер Apache), иначе могут возникнуть проблемы с отсутствующими каталогами в / var / log

Для фона этого подхода см. продление срока службы флеш-накопителя на сайте ubuntu-eee.com 

открыто / И т.д. / 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

Вам необходимо будет перезагрузить компьютер до того, как эти изменения вступят в силу

Смотрите также:


106
2017-08-08 13:09



О последнем бит для журналов и tmpfs строки прокомментированы, так почему бы добавить эти строки в любом случае? Нужно ли добавлять его без комментариев? - Oxwivi
Я могу понять, если это предназначено для повышения скорости, но большая часть того, что вы написали, похоже, предназначена для улучшения жизни SSD. Не так ли, что с современными SSD эти улучшения бессмысленны? И за счет большего использования ОЗУ! (например, см. ссылку, приведенную в этот другой ответ) - Chan-Ho Suh
Нет необходимости в 2). relatime делает работу по предотвращению записи очень хорошо, и она по умолчанию активна, поскольку ядро 2.6.30, - Mihai Capotă
Просто чтобы добавить к комментарию @ MihaiCapotă, есть Ответ на ошибку сервера с более подробной информацией о том, почему noatime не требуется. - Cas
Они говорят, что noatime подразумевает nodiratime Вот, поэтому достаточно добавить прежний вариант. - jarno


Жизнь SSD

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

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

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

Однако ухудшение производительности со временем может быть проблемой, и ОТДЕЛКА является решением. Есть два варианта

  • автоматический / онлайн 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 решает, поскольку описанный Википедии, является:

SSD хранят данные в ячейках флэш-памяти, которые сгруппированы по страницам, причем страницы (как правило, 4 кБ каждая) группируются вместе в блоки (как правило, 128 страниц на блок, всего 512 кБ). Ячейки флэш-памяти NAND могут быть записаны только в том случае, если они пусты. Если они считаются содержащими данные, содержимое сначала необходимо удалить до того, как операция записи может быть выполнена надежно. В SSD-операции запись может выполняться на уровне страницы, но из-за аппаратных ограничений команды стирания всегда влияют на целые блоки. В результате, запись данных на SSD-носитель очень быстра, пока могут использоваться пустые страницы, но значительно замедляется, как только ранее написанные страницы должны быть перезаписаны, Поскольку стирание ячеек на странице необходимо, прежде чем ее можно будет записать снова, но можно удалить только целые блоки, перезапись начнет цикл чтения-стирания-изменения-записи: содержимое всего блока должно храниться в кеше до того, как оно будет эффективно удалено на флэш-носитель, тогда перезаписанная страница будет изменена в кеше, чтобы кешированный блок обновлялся, и только тогда весь блок (с обновленным страница), записанная на флэш-носитель, Это явление известно как усиление записи.


90
2017-08-08 19:03



Хотел бы я проголосовать несколько раз. ЭТО было бы одним из этих ответов. Эта связь решила беспокойство, которое у меня было в течение длительного времени. Большое спасибо Хэмиш. - Luis Alvarado♦
Интересная статья от storagesearch.com. Я хочу, чтобы это дало свидание! Таким образом, приведенный выше ответ означает, что владельцам SSD не нужно беспокоиться о предложениях в первом ответе, за исключением TRIM? Мне не очень нужно время доступа к файлу, но с 2G памяти, наличие раздела подкачки может быть полезно при запуске программного обеспечения для редактирования фотографий наряду с несколькими другими программами, такими как Chrome. - Lawrence I. Siden
@lsiden: в статье упоминается «Позже: - в мае 2008 года» частично. И вы правы, что не стоит беспокоиться обо всех других вещах в первой статье. Просто включите TRIM и наслаждайтесь скоростью :) - Hamish Downer
Статья относится к твердотельным накопителям корпоративного уровня: он использует 2 миллиона циклов выдержки для записи. Потребительские SSD имеют около 3000-5000 циклов. SSD емкостью 128 ГБ с 3000 циклами дает 57 дней непрерывной записи 80 МБ / с. - LeartS
В Ubuntu 14.10 и далее TRIMming происходит автоматически каждую неделю на всех SSD, поддерживаемых fstrim. ссылка - KrisWebDev


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

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

Часто упоминается право выравнивание раздела. Это должно быть равно размеру блока 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

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


20
2018-02-03 21:28





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

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

Викиреальность упоминает несколько предпочтительных параметров для файловой системы SSD - один из них нестабилен, другие - вн* одни. Я предполагаю ext4 является одним из лучших решений.
Примечание: в случае ext4 вы можете использовать discard .

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

Информация

один  два


16
2017-12-09 17:24



Без замена, и с /tmp в ОЗУ очень легко добраться до недостаточно памяти ситуация, так как многие программы используют /tmp в качестве места для хранения (например, Brasero для хранения изображений DVD). - arrange
На самом деле, нет. tmpfs по умолчанию - 10% оперативной памяти. Размер можно настроить с помощью size вариант. - Andrejs Cainikovs
Бразеро - плохой пример, он не должен делать этого, в первую очередь, как объясняет Леннарт Поэттеринг в своем блоге 0pointer.de/blog/projects/tmp.html - LiveWireBT


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

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


8
2017-12-30 23:37





Я бы не добавил эту строку в вашу 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 в течение дня, а затем придумал руководство, вы должны проверить его ВОТ


3
2017-07-28 22:53



Является ли идея добавлять все каталоги под регулярным / var / log в /etc/rc.local? Что произойдет, если вы не добавите каталоги? Я думаю, что для добавления может потребоваться больше каталогов, если вы установите несколько новых пакетов. Можно ли обновить /etc/rc.local во время остановки, чтобы создать все каталоги при следующей загрузке? - jarno
В ubuntu 14.04 и более поздних версиях есть задание cron /etc/cron.weekly/fstrim, установленное по умолчанию для обрезки файловых систем еженедельно. Что касается 14.04, см. Вот, Ubuntu 15.10 использует /sbin/fstrim --all || true в скрипте fstrim. - jarno
По крайней мере, каталог / var / log / installer имеет подкаталог под названием ubiquity-apt-clone в Xubuntu 15.10. Должны ли вы создавать рекурсивные подкаталоги? - jarno


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

1https://en.wikipedia.org/wiki/Trim_%28computing%29
2Как включить Trim?


3
2017-12-25 01:52





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


2
2017-10-09 16:12