Настройка ssd в linux

Обновлено: 06.07.2024

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

Паравиртуальный драйвер Virtio для SSD

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

Если ваша панель управления KVM VPS позволяет изменять драйвер виртуализации диска, то для улучшения быстродействия дисковой системы, рекомендуется переключить режим работы диска с IDE на Virtio.

Редактирование fstab

Начнем с параметров монтирования разделов в Linux. Для этого необходимо отредактировать файл /etc/fstab , который состоит из набора файловых систем. Для монтирования каждого раздела или диска в файле используется отдельная строка.

Структура файла fstab выглядит следующим образом:

По умолчанию файл fstab в Debian выглядит следующим образом:

Где UUID это идентификатор нашего SSD, который смонтирован в корень и отформатирован в файловой системе EXT4. В качестве параметра используется опция errors=remount-ro .

Будьте предельно внимательны, редактирование fstab может стать причиной невозможности загрузки системы. Создайте резервную копию файла перед внесением каких-либо изменений.

Отключить время доступа к файлам и каталогам

Чтобы снизить нагрузку по записи, можно полностью отключить время последнего доступа к файлам и каталогам. Для этого в параметры монтирования fstab необходимо добавить опции монтирования noatime и nodiratime .

Отключить барьеры

Барьеры гарантируют целостность журнала файловой системы. К их недостаткам можно отнести снижение производительности. Отключив использование барьеров barrier=0 , мы ускоряем операции записи на разделы EXT4.

В итоге файл fstab должен выглядеть следующим образом:

Чтобы принять изменения необходимо выполнить команду ниже:

Настройка параметров ядра Linux для SSD

Для улучшения производительности системы, рекомендуется снизить интенсивность обращения к SWAP. Чтобы снизить минимальный процент свободной памяти, при которой будет происходить запись страниц в SWAP, необходимо установить значение параметра vm.swappiness=10 .

Параметр vfs_cache_pressure отвечает за уровень выделяемой памяти под использование дискового кэша. В зависимости от величины, параметр увеличивает или уменьшает активность выгрузки неиспользуемых страниц памяти из кэша. Для SSD рекомендуется установить значение параметра vfs_cache_pressure равным 50.

Для того чтобы проверить, что система правильно определила ваш SSD, необходимо выполнить команду:

Где vda имя вашего диска в системе. Для просмотра списка устройств используйте команду df . Значение равное 0, служит подтверждением того, что система определила тип используемого диска как SSD. В противном случае, необходимо установить значение вручную:

В ядре Linux имеется несколько типов планировщиков, которые выполняют функции управления дисковым пространством, расстановки приоритетов и обработки запросов в реальном времени. Рекомендуемым планировщиком для работы с SSD является Noop. Он хорошо подходит для работы с флеш-памятью благодаря использованию минимальных задержек для запросов к дисковому пространству.

Связи с тем, что SSD накопители не используют вращающиеся пластины в отличие от традиционных жестких дисков. Нулевое значение отключает использование алгоритмов снижения времени поиска данных, так как SSD и виртуальные диски в этом не нуждаются.

Последняя параметр rq_affinity . Может принимать значение равное 1 принуждает обработку операций на том же процессоре, где они были сгенерированы. Это может повысить эффективность кэширования данных. Для гостевых систем KVM рекомендуется установить значение равное 0, чтобы разрешить обработку операций на любом процессоре.

Твердотельные накопители удивительно быстры и лишены каких-либо механических частей, мобильны, что делает их бесшумными, поддерживают гораздо лучшую вибрацию и удары и не затрагивают (или почти не затрагивают) такие проблемы, как фрагментация файловой системы. Но, конечно, необходимо учитывать ряд особенностей, чтобы максимально увеличить пользу и продлить их жизнь.

Размеры разделов

Размеры разделов должны быть кратны 512 МБ. Кроме того, настоятельно рекомендуется создать раздел на жестком диске для хранения данных в /home. А также наличие как минимум двух разделов, где в одном мы будем хранить /boot, а остальное будет /.

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

Форматирование разделов

Более целесообразными являются следующие форматы:

Все эти форматы поддерживают TRIM. Зачем так важен TRIM? Потому что он позволяет операционной системе сообщать какие блоки данных не используются и могут быть удалены. Это имеет особое значение в случае твердотельных накопителей, поскольку флэш-память типа NAND, которые используют в SSD, не может перезаписать существующие данные. Прежде чем записывать новые данные поверх существующих, необходимо сначала их удалить. Эта проблема усугубляется тем, что минимальной единицей стирания является блок, так как единицей минимальной записи является страница (блок-64 страницы).


Это означает, что с течением времени диск SSD будет, определенным образом фрагментироваться внутри (не так, как традиционные жесткие диски), являясь страницами с пустыми блоками, которые в какой-то момент, даже когда у вас есть свободное пространство на SSD, не будут пустыми страницами для записи. Это снизит производительность, за счет которой для записи новых данных будет та группа блоков, которая рассредоточена, копируя их в буферную память, стирая и собирая вместе с ними все снова на одной странице.

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

Конфигурация отделки

Сначала мы проверим, поддерживает ли наш SSD TRIM следующей командой:

Где X-буква вашего SSD. Ответ команды будет ясен, если он показывает вам что-то подобное, как на следующем скриншоте есть поддержка TRIM, если ничего не появляется у вас её нет.


Вы можете настроить TRIM тремя способами: вручную, настроив fstab и запланировав выполнение fstrim с помощью cron или systemd.

Вручную

Мы установим пакет fstrim:

Выполните следующую команду, чтобы включить TRIM:

В точке монтирования вы указываете, где монтируется наш SSD. Можно указать просто / (Root).

Настройка /etc/fstab

С помощью опции discard в файле fstab мы можем настроить наш SSD для использования TRIM. Просто добавить опцию как показано в примере ниже:

Планирование выполнения fstrim

Наиболее эффективным методом является запланированное выполнение fstrim, которое позволяет нам пользоваться его преимуществами без какого-либо влияния на производительность.

С помощью cron

Создаём следующий файл /etc/cron.daily/trim и добавляем в него:

С использованием systemd

Если ваш Linux использует systemd, вы можете сделать это следующим образом. Сначала мы создаем файл в /lib/systemd/fstrim.service который содержит следующее:

Примечание: где / точка монтирования корня (root).

Используем systemctl для запуска службы:

Монтирование разделов

Еще одна вещь, которую мы рассмотрим, это монтирование разделов. В конфигурационном файле /etc/fstab есть опция noatime для повышения производительности диска.

Временные каталоги

Также настройки временных каталогах (для/tmp, /VAR и/boot, в папке /var/lock и /var/log) в оперативной памяти, чтобы избежать записи на диск. Если у вас мало оперативной памяти, еще лучше иметь раздел на жестком диске на всю жизнь. Параметры монтирования noatime,nodiratime, nodev и nosuid.

Настройка GRUB: вход/выход планировщика

В целом, подавляющее большинство Linux используют CFQ для планирования устройств ввода / вывода. Однако для дисков SSD есть и другие варианты, которые являются более удачными:

Если SSD будет единственным носителем информации компьютера, мы настроим GRUB изменяя файл /etc/default/grub.

Сохраните изменения и обновите grub с помощью этой команды:

SWAP или без SWAP?

Если не волноваться за срок полезного использования, мы все равно можем настроить своп (в том случае, если у нас очень мало оперативной памяти) но с несколькими нюансами:

  • Уменьшить процент использования SWAP/RAM 1%
  • Уменьшить значение блоков данных кэша со 100 до 50
  • Изменить частоту обращений к диску от 500 до 1500

Для этого мы модифицируем следующий файл /etc/sysctl.conf и меняем или добавляем эти значения:

Сокращение количества проверок файловых систем

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

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

Испытание Скорости

С помощью команды hdparm-Tt /dev/sdX , мы можем сделать тест скорости записи, так что вы можете увидеть разницу я сделал два теста, один на SSD и другой на жестком диске. Вот результат:

/dev/sdb:
Timing cached reads: 2070 MB in 2.00 seconds = 1034.96 MB/sec
Timing buffered disk reads: 646 MB in 3.00 seconds = 215.11 MB/sec

/dev/sda:
Timing cached reads: 28842 MB in 2.00 seconds = 14435.64 MB/sec
Timing buffered disk reads: 1232 MB in 3.01 seconds = 409.76 MB/sec

Как всем известно SSD очень быстры, но имеют один маленький (или не маленький) недостаток - ограниченное число циклов записи. Т.е. их надо стараться больше использовать на чтение, а запись свести к минимуму, дабы свести риск выхода из строя диска раньше времени к минимуму. Статья написана для Ubuntu 14.04 и более новых версий.

/etc/fstab – один из важных файлов ОС, который исполняется во время загрузки системы. В нем описаны какие разделы накопителей и как именно монтируется в файловую систему ОС. Открываем:

Отключаем swap

Для систем, у которых systemd надо еще отключить службу

Если же памяти для задач ОС маловато, то пробуем настроить приоритет использования swap

Опции монтирования

compress - сжатие файлов (lzo - рекомендумое значение, быстрое сжатие; zlib - выше уровень сжатия, но значительно медленнее, больше нагрузка ЦПУ, больше потребление батареи на ноутбуках.

После применения этой опции новые файлы будут сжиматься при записи, а также старые при изменении. Если хотите сжать уже установленную систему нужно применить команду дефрагментации со сжатием .

Часто рекомендуют опцию discard - активирует TRIM для SSD. Опция discard не использована в силу того, что в Ubuntu начиная с версии 14.04 разработчики позаботились о пользователях. Система сама периодически делает fstrim-all, эта команда тримит SSD в момент запуска (команды), а не на лету как discard. Но результат один, деградации скорости не будет.

Как видим BTRFS хорошо приспособлена для SSD. Ранее BTRFS имела проблемы с производительностью, особенно при установке пакетов. Сейчас, на свежих ядрах 4.* я не вижу этой проблемы, работает быстро.

Кэш apt в ОЗУ

Кэш apt не будет сохраняться на диске и при переустановке пакетов, потребуется их выкачивать заново. Кроме того это не сильно поможет нашему SSD, т.к. пакеты сжатые, а при установке занимают в 5-10 раз больше места, чем в архиве. Также это увеличит использование ОЗУ. После включения убедитесь, что в системе хватает памяти для выполнения ваших задач Для SSD не требуется дефрагментация. В данном случае она применена для того, чтобы сжать файлы уже установленной системы

Для выполнения нужно загрузиться в живую сессию, примонтировать раздел с BTRFS и применить команду дефрагментации со сжатием:

У себя я получил коэффициент сжатия 0.63, было 5.21 ГБ, стало 3.7 ГБ, т.е. в 1.5 раза меньше запись на SSD в процессе дальнейшей работы. Замечу, что я не храню на SSD плохо сжимаемые файлы - аудио, видео, фото и т.п., они размещены на другом разделе.

1) Mozilla Firefox

Правка → Настройки → Дополнительные → Сеть → Поставить галочку «Отключить автоматическое управление кэшем» → Установить значение в 0.

2) Opera

Ctrl + F12 → Расширенные → История → Дисковый кэш → Отключено

3) Chromium/Google Chrome

К сожалению этот браузер не умеет отключать дисковый кэш полностью из GUI .

Настройки → Дополнительные инструменты → Инструменты разработчика ( Ctrl + Shift + I ) → Настройки (значек шестеренки) → поставить галочку Disable cache (while DevTools is open)

LINUX для всех!

Настройка диска ssd в ubuntu в связке с hdd

Хочу поделиться опытом настройки диска ssd в Ubuntu. А также развеять мифы оптимизации. К тому же расскажу о монтировании дополнительного диска hdd, чтобы хранить большие объемы информации.

На свой ноутбук купил ssd диск, к тому же вместо оптического привода вставил hdd диск на 500 гигабайт, чтобы хранить фильмы, музыку, фотки.

1. Выравнивание диска ssd.

Итак, хотелось бы сказать про то, что на многих сайтах советуют выравнивать диски ssd. Хочу вас уверить, что и fdisk и gparted и стандартный менеджер разбивки дисков при установке ubuntu автоматически выравнивают разделы.

Вот таким образом я разбил свой диск ssd:



Для корневого раздела "/" выделил стандартно 40 гигабайт.
Для "swap" 4 гигабайта. (swap это хорошее дело на ssd, дальше опишу почему)
Для "/home" домашнего каталога - все остальное.

( Первый раздел это 200 мегабайт - загрузочный раздел для uefi.
В следующей статье расскажу как легко и просто поставить ubuntu на uefi )

"aligned", то значит ваш диск выравнен.
И не надо читать кучу форумов об этом, сидеть с калькулятором и вымерять, все делается автоматически, при использовании популярных программ, таких как gparted, gdisk, fdisk или менеджер дисков установщика.

2. Swap раздел нужен на ssd.

40:1 чтение:запись.
Поэтому не нужно объяснять, что чтение с ssd диска будет идти быстрее, чем с hdd.
Единственное, что нужно сделать, это изменить параметр swappiness на значение 10 . О том, как это можно сделать, написано в этой моей статье:

3. Настройка Trim.

О том, что такое Trim , можно почитать на википедии.
Скажу лишь, что это команда, которая посылает контроллеру информацию о том, где уже были удалены файлы и освобождено место, чтобы очистить информацию на диске.

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

То можно перейти к самой настройке включения.

То значит Trim был успешно выполнить.

Автоматическое включение можно настроить добавление discard в опции монтирования fstab, об этом расскажу ниже. ( Но многие говорят, что это плохой способ )
Либо создав задачу в Cron (менеджере задач по расписанию):
Создаем ежедневную задачу с именем "trim" следующей командой: sudo gedit /etc/cron.daily/trim
И в открывшийся текстовый файл вставляем следущее:

После чего, сохраняем и закрываем.
Теперь сделаем данный файл исполняемым следующей командой: sudo chmod +x /etc/cron.daily/trim
Теперь ubuntu будет каждый день выполнять trim.
Не советую добавлять параметр discard в опции монтирования fstab.

Стоит упомянуть, что Trim в linux работает только со следующими файловыми системами: ext4 и btrfs.

4. Монтирование разделов в fstab.
При загрузке системы, у вас монтируются диски и разделы, которые указаны в файле:

В принципе, если у вас один жесткий диск ssd, то можете смело им пользоваться без тех настроек, что описаны в данном пункте.
Я в данном файле примонтировал второй жесткий диск, для того, чтобы примонтировать каталоги Музыка, Видео и Изображения, которые будут весить много места и на sdd они все не поместятся.
Ну и еще можно переместить на hdd с ssd каталог /var, так как в него пишется очень много всякого, например логи и деб пакеты перед установкой программ.

Отредактируем данный файл, выполнив следующую команду в терминале: sudo gedit /etc/fstab
Откроется текстовый файл, где перечислены монтируемые устройства:
У меня он вот такой (кликните по изображению для увеличения):



Разберем теперь как примонтировать (подключить) новый жесткий диск к системе.
Это у меня делается следующей строчкой:
UUID="5cfa4dbd-fca2-470a-a785-ebc56cd29387" /diskette ext4 defaults 0 2

Разберем данную команду подробнее.
1 параметр. Это UUID устройства. Увидеть его можно либо в gparted щелкнув по разделу дважды мышкой. Либо выполнив в терминале команду: blkid
И появится весь список устройств с UUID:

Мне нужен выделенный раздел жесткого диска, в этой строчке выделяем наш UUID и прописываем в первом параметре .

2 параметр. Это точка монтирования.
Это папка, через которую будет производиться обращение к разделу. В принципе, может быть любой.
Прежде чем монтировать в какую-либо папку, не забудьте ее создать.
Например в моем случае это sudo mkdir /diskette

3 параметр. Это файловая система. Думаю объяснения не нужно, если не уверены как пишется или не знаете, то для ленивых есть параметр "auto".

4 параметр. Это параметры монтирования. В принципе достаточно defaults.
Вот какие параметры можно использовать:
exec - Разрешение на запуск исполняемых файлов. Опция включена по-умолчанию.
noexec - Запрет на запуск исполняемых файлов.
auto - Раздел будет автоматически монтироваться при загрузке системы. По-умолчанию.
noauto - Раздел не будет автоматически монтироваться при загрузке системы.
ro - Монтирование только для чтения.
rw - Монтирование для чтения и записи. По-умолчанию.
user - Разрешение простым пользователям монтировать/демонтировать этот раздел.
nouser - Запрещает простым пользователям монтировать/демонтировать этот раздел. По-умолчанию.
defaults - Использование всех параметров по-умолчанию.
discard - Включает Trim на раздела с ФС ext4 и btrfs (очень не рекомендуется)

5 параметр. Флаг бэкапа.
Если 1 - то программа dump включит этот раздел при резервном копировании.
Если 0 - то этот раздел не будет включен при резервном копировании.

6 параметр. Порядок проверки разделов.
Устанавливает порядок проверки раздела при монтировании на наличие ошибок. Если установить один и тот же порядок для двух разделов, они будут проверяться одновременно.
Если 0 - раздел не проверяется.

Таким вот образом можно примонтировать новый жесткий диск к определенному каталогу в систему.

Но если мы выставили параметр монтирования defaults, то на данном жестком диске мы не сможем выполнять операции создания и удаления.
Для этого нам нужно получить права на новый диск, делается это очень просто, выполняем в терминале команду: sudo chmod -R 777 /diskette/
естественно в команде вместо /diskette/ вы указываете свою точку монтирования.


И теперь, когда мы примонтировали жесткий диск, мы можем перегрузиться и проверить что он монтируется.
Теперь вот можно перейти к самому интересному. А именно к монтированию каталогов. Переносу Музыка, Видео, Загрузки на HDD, потому что на нем намного больше места.
Почему не перенести всю папку home?
Потому что в ней хранятся файлы конфигураций и многое другое, высокая скорость чтения которых обязательна. Иначе зачем вообще покупать ssd?

Монтируются каталоги следующим способом.
В каталоге точки монтирования, у меня это /diskette/ создаем каталоги с такими же названиями Музыка, Видео и тд
После чего прописываем следующую команду:

Разберем данный случай для монтирования каталогов,
первым параметром мы указываем нашу новую папку на HDD, которая монтируется в каталог домашней папки Музыка.
Обязательные параметры none bind 0 0.
Таким образом вы можете прописать и другие каталоги по желанию.

Вот что получилось в моем случае:


В домашний каталог можно записать всего лишь 77 гигабайт, а в папку Видео можно записать почти 500 гигабайт информации.

Вот таким образом можно настроить свою систему.

Больше ничего делать не нужно с ssd. Не нужно настраивать commit, atime и прочую ересь, что несут в других блогах. Это все было актуально на старых моделях ssd, когда они только появились.

Читайте также: