Как оптимизировать ОС для твердотельных накопителей?

146

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

Ларс Хаугсет
источник

Ответы:

108

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

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

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

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

Если у вас есть сочетание 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) Минимизация записей из ОС и приложений

Предполагая, что вы не используете критически важный сервер продукта, большинство людей не смотрят журналы, если что-то идет не так (особенно, если серьезные ошибки редки для большинства пользователей Ubuntu). Поэтому вы можете настроить Ubuntu так, чтобы все журналы записывались в оперативную память, а не в 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

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

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

jr0cket
источник
7
Что касается последнего бита для логов и прочего, tmpfsстроки комментируются, так почему добавление этих строк будет иметь какое-то значение? Нужно ли добавлять его без комментариев?
Oxwivi
8
Я могу понять, предназначено ли это для повышения скорости, но большая часть того, что вы написали, кажется, предназначена для улучшения жизни SSD. Не правда ли, что с современными твердотельными накопителями эти улучшения не имеют смысла? И за счет большего использования оперативной памяти! (например, см. ссылку, приведенную в этом другом ответе )
Чан-Хо Су
7
Там нет необходимости для 2). relaytime очень хорошо предотвращает запись и работает по умолчанию с ядра 2.6.30 .
Михай Капотэ
3
Просто добавьте к комментарию @ MihaiCapotă ответ на сбой сервера с более подробной информацией о том, почему noatime не нужен.
Cas
1
Они говорят, что noatime подразумевает здесь nodiratime , поэтому достаточно добавить первый вариант.
Ярно
92

SSD Life

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

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

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

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

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

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

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

sudo fstrim /

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

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

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

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

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

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

На что часто указывают правильное выравнивание раздела. Это должно быть равно размеру блока SSD. Будьте осторожны и приведите ваши разделы в соответствие с границами MiB. Обратите внимание, что вы не можете сделать это с помощью инструмента установки разделов установщика Ubuntu (который использует MB, а не MiB), но вы можете загрузить live CD, использовать Gparted (который использует MiB), а затем нажать Install, чтобы использовать разделы, которые вы создали.

Правильный планировщик:

Важным моментом является планировщик, который должен быть noop. Вы можете установить этот планировщик через параметр ядра elevator=noopили через запись echo noop > /sys/block/sda/queue/schedulerв вашем rc.local.

Mountflags:

Я бы порекомендовал noatimeиdiscard

Tmpfs

Поместить tmp на виртуальный диск может увеличить время жизни ssd. Чтобы использовать это, поместите следующую строку в ваш fstab:none /tmp tmpfs defaults 0 0

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

Себастьян Рюль
источник
16

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

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

Arch wiki упоминает несколько предпочтительных опций для файловой системы SSD - один из них нестабильный, другие - ext *. Я полагаю, 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 или дедлайн для SSD. Например, использование планировщика noop просто обрабатывает запросы в том порядке, в котором они были получены, не принимая во внимание то, где данные физически находятся на диске. Считается, что этот вариант предпочтителен для твердотельных накопителей, поскольку время поиска одинаково для всех секторов твердотельного накопителя.

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

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

Информация

один два

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

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

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

Uli
источник
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 поддерживает его, это обязательно, я не использую сброс в 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

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

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

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

Карел
источник
2

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

user95602
источник
2

Хорошо, «Короче говоря»:

  1. Да. Это как обычный жесткий диск. Вот хороший обзор.
  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
источник
Большое спасибо. Я в замешательстве, потому что я всегда использовал Linux с двойной загрузкой, и я впервые установлю Linux на новый SSD, поэтому процесс и хранилище для меня новы. но похоже, что это то же самое, что и установка Ubuntu на HDD, верно?
Варун
Это то же самое. При установке вас могут попросить создать таблицу разделов, но это в один клик.
Гайдипайти
Другой вопрос: нужно ли мне вносить какие-либо изменения в BIOS для моего ноутбука Dell. Я собираюсь установить SSD и Ubuntu сегодня?
Варун
Нет, современный биос автоматически определяет тип жестких дисков.
Гайдипайти
Большое спасибо, очень полезно, сообщу, что произойдет завтра :)
Варун
2

Есть некоторая полезная информация о том, как настроить и оптимизировать SSD для Ubuntu, Linux Mint, с 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
Сью Рассел
источник
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опцию

Подробнее http://vasilisc.com/speedup_ubuntu_eng#speedup_fs

Василий Алексеенко
источник
1

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

Включить TRIM

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

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

# cp /etc/fstab ~/fstab.bk

Редактировать файл fstab

# nano /etc/fstab

Добавьте discard на ваши диски или разделы 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

источник
0

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

Например, я бы разместил разделы /, / etc, / usr, / boot, / lib 32/64 на SSD, пока что-то вроде

/ opt, / bin, / sbin, / root, / home и даже подкачка (увеличение оперативной памяти !!!) на жестком диске

Википедия говорит:

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

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

Майкл К
источник
Знаете ли вы, для чего используется каждое из мест? Все упомянутые места, за исключением /root, /homeи swap должны быть помещены на SSD для скорости, потому что это в основном только для чтения. Для /varувеличения скорости установите SSD.
Лекенштейн
Зависит от того, что вы собираетесь ускорить и насколько велик ваш SSD. 120 ГБ должно быть достаточно, но с меньшим SSD вы легко достигнете границ.
Майкл К
/Раздел для Kubuntu Oneiric занимает 4,5 Гб на мой SSD. 20ГБ достаточно для /минуса /home. Усилия по настройке структуры файловой системы, распределению ее по нескольким разделам не стоят того.
Лекенштейн