Настройка TRIM для SSD на серверах Linux (Centos 6, Centos 7)

Настроить в консоли CentOS ip-адрес можно двумя способами.

Предисловие

Пара слов, почему же всё-таки CentOS, а не что-то иное. Вообще знакомство с Linux началось в 2000-м году с какой-то версии RedHat. Потом был BlackCat Linux (из-за его лучшей поддержки русского языка). Затем появился Gentoo и я считал его идеалом за то что за счёт USE-флагов устанавливалось только то что действительно нужно. Ну и за его оптимизацию, в то время более-менее нормально смотреть фильмы на компьютере с процессором AMD K6-2-300 можно было только под Gentoo. После Gentoo на работе была Ubuntu, но она как-то сразу не пошла. Вообще после Gentoo переходить на любой другой Linux сложно. Это как после OS X обратно на Windows садиться. В Gentoo и процесс загрузки, и многие другие вещи красивы с эстетической точки зрения, в Ubuntu же по дефолту в консоли только белый цвет на чёрном фоне.

Предисловие
Предисловие
Предисловие

Затем были курсы по RHEL и сертификат RHCSA. Я посчитал что глупо не пользоваться полученными знаниями – поэтому решил установить CentOS на паре серверов на работе под различные сервисы. В процессе так увлёкся что даже свой личный сервер перевёл с Gentoo на CentOS. Сначала был CentOS 5, затем CentOS 6, теперь вот уже CentOS 7.

Предисловие
Предисловие
Предисловие

С переходом на CentOS стало намного меньше времени уходить на обслуживание сервера, т.к. по времени выполнение команды:

Предисловие
Предисловие
Предисловие
1 $ yum y update
Предисловие
Предисловие
Предисловие

выполняется в разы быстрее нежели выполнение команды

Предисловие
Предисловие
Предисловие
1 $ emerge sync && emerge upvND world
Предисловие
Предисловие
Предисловие

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

Предисловие
Предисловие
Предисловие
Предисловие
Предисловие
Предисловие

Прежде чем устанавливать CentOS 7 предлагаю прочитать эту брошюру RHEL 7: Installation Guide. По ссылке её можно скачать целиком или в виде .pdf-файла, или в виде .epub-файла, кому как будет удобно. Это официальное руководство по установке RHEL 7 (при чём на русском языке). А т.к. RHEL практически то же самое что и CentOS – всё описанное в брошюре применимо и к CentOS.

Предисловие
Предисловие

Как SSD-накопители хранят данные?

Чтобы лучше понимать, какие именно проблемы устраняет TRIM, нужно ознакомиться с особенностями хранения данных на SSD.

Читайте также:  105 команд для работы с сервером Linux по SSH

Ограничение циклов перезаписи

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

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

Восстановление устаревших страниц

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

Как работает TRIM?

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

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

Читайте также:  Как использовать стук портов в Linux (и почему не стоит)

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

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

Зоны firewalld

В firewalld широко используется понятие зоны. Список всех допустимых зон по-умолчанию:

# firewall-cmd —get-zones block dmz drop external home internal public trusted work

Назначение зон (условно, конечно):

  • drop — все входящие пакеты отбрасываются (drop) без ответа. Разрешены только исходящие соединения.
  • block — входящие соединения отклоняются (rejected) с ответом icmp-host-prohibited (или icmp6-adm-prohibited). Разрешены только инициированные системой соединения.
  • public — зона по-умолчанию. Из названия ясно, что эта зона нацелена на работу в общественных сетях. Мы не доверяем этой сети и разрешаем только определенные входящие соединения.
  • external — зона для внешнего интерфейса роутера (т.н. маскарадинг). Разрешены только определенные нами входящие соединения.
  • dmz — зона DMZ, разрешены только определенные входящие соединения.
  • work — зона рабочей сети. Мы все еще не доверяем никому, но уже не так сильно, как раньше