• База знань
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

Стаття також доступна російською (перейти до перегляду).

Як налаштувати Periodic TRIM для SSD-сховища на серверах Linux

Вступ

Доволі часто у Адміністраторів – початківців виникають питання стосовно швидкості роботи SSD-накопичувачів, котрі постійно працюють у напруженому режимі, тобто, мають значну густину операцій запису / зчитування. У цьому разі швидкість їхньої роботи помітно знижується через невдало налаштований механізм впорядкування даних, що і є основною причиною негараздів. Примусове включення Periodic TRIM допоможе вирішити вказану проблему. Розглянемо більш детально, як це можна зробити на прикладі SSD-сховища, побудованого на базі сервера під управлінням Ubuntu 22.04.

Особливості запису / зчитування інформації у SSD-накопичувачах

SSD-накопичувачі у контексті використання Linux-системами є блочними пристроями, котрі утворюють таке собі блочне сховище. Така термінологія пов`язана з тим, що ядро Linux-системи взаємодіє з апаратною частиною пристрою, посилаючись на блоки фіксованого розміру, котрі утворюють одиниці збереження даних різного рівня. Найменша одиниця – сторінка. Найбільша – блок, котрий складається із кількох сторінок. Правильне налаштування будь-якого блочного пристрою дає можливість організувати ефективне сховище даних, у котрому фактично повністю виключається вплив навантаження на реальну швидкість роботи пристрою із даними. При цьому методи налаштування певною мірою залежать від типу операційної системи, а не тільки від типу пристрою.

Рекомендуємо ознайомитися зі статтею “LINUX 24 рекомендації з безпеки php для системних адміністраторів”.

SSD-накопичувачі здатні оперувати як блоками, так і сторінками даних. Тобто, вони можуть здійснювати операції запису / зчитування також і на рівні окремих сторінок, а не тільки блоків. Однак, операції очищення використаних даних можуть виконуватися ними лише на рівні блоків. В результаті, SSD-накопичувачі не можуть самостійно здійснювати увесь спектр необхідних операцій по обслуговуванню даних, а лише за посередництвом файлової системи, яка, зокрема, надає їм інформацію про блоки із застарілими даними.

Сутність налаштування таких пристроїв полягає в управлінні командами файлової системи, що до даних, котрі призначені для видалення. Команди такого типу мають назву TRIM-команди. Лише після її надходження процесор накопичувача активує чергову фазу очищення або обнулення сторінок із застарілою інформацією, що врешті решт замикає коло життєвого циклу даних сховища: запис-зчитування-видалення. При цьому відбувається підготовка сторінок простору даних до прийняття нової порції інформації, тобто, своєрідне «оновлення» сховища.

Проблеми впорядкування даних SSD-сховища

Ідеальне SSD-сховище даних повинно функціонувати таким чином, щоб, по-перше: фаза очищення виконувалася лише в автоматичному режимі; по-друге: фаза очищення повинна припадати на час найменшого навантаження на носій. Лише при виконанні вказаних умов можна говорити про ефективне використання SSD-сховища.

У Linux-системах за замовчуванням ініціалізація фази очищення або поява відповідної TRIM-команди файлової системи накопичувача відбувається після кожної операції видалення даних, що призводить до гальмування роботи пристрою під час значних навантажень. Така ситуація не може вважатися адекватною, оскільки вона суперечить вказаним вище умовам існування ідеального SSD-сховища. Для її виправлення необхідно змінити налаштування таким чином, щоб активація фази очищення відбувалася хоча б через рівні проміжки часу, що буде певним компромісом між крайніми варіантами налаштувань.

Нижче буде показано, як це можна зробити в умовах сервера під управлінням Ubuntu 22.04.

Налаштування процесу періодичного оновлення SSD-сховища

Попередні налаштування

У Linux-системах при монтуванні будь-якої з доступних файлових систем одразу ж вказуються параметри із відповідними значеннями, котрі і визначають їх характеристики. Одним з них є параметр discard, який встановлює режим безперервного запуску TRIM-команди файлової системи після виконання кожної операції видалення даних. Перевірити це можна, переглянувши конфігурації змонтованих на даний час файлових систем на нашому пристрої. Наберемо у терміналі:

$ findmnt -O discard

Параметр discard

В результаті, ми отримали потрібну інформацію, котра дає повне уявлення про конфігурацію сховища:

TARGET 	  SOURCE         FSTYPE       OPTIONS
/               	   /dev/vda2     	ext4        	   rw,noatime,discard,commit=120

Таким чином, ми з'ясували наступне:

  • Місце монтування: кореневий каталог;
  • Пристрій: vda2;
  • Тип файлової системи: ext4;
  • Встановлені параметри: noatime, rw, discard, commit.

Отже, на даний час включено режим безперервного запуску TRIM-команди, що, звісно, нас не влаштовує. І тому, ми можемо прямо зараз перемонтувати нашу файлову систему із іншими параметрами, котрі змінюють значення попередніх налаштувань. Для цього введемо у терміналі:

$ sudo mount -o remount,nodiscard /

Монтування конфігурації сховаища

За допомогою символу «/» ми вказали місце монтування – кореневий каталог.

Тепер спробуємо знову запустити команду перегляду поточної конфігурації сховища, щоб з'ясувати, чи відбулися якісь зміни:

$ findmnt -O discard

Поточна конфігурація сховища

Ми бачимо, що ніякої додаткової інформації вже не виводиться, що, зокрема, означає, що параметр discard відключений. Однак, цього буде недостатньо, оскільки у файлі налаштувань /etc/fstab додатково визначаються конфігурації монтування файлових систем при кожному завантаженні системи. Його також треба відредагувати. Зробимо це за допомогою редактора nano:

$ sudo nano /etc/fstab

Запуск редагування файлу fstab

Кожна строчка параметрів із файлу визначає конфігурацію відповідної файлової системи, котру необхідно змонтувати (під'єднати) при завантаженні операційної системи. Наявність вказаного запису гарантує їх автоматичне монтування. Наводимо строчку, котра відповідає нашій поточній файловій системі:

/dev/disk/by-uuid/3cd87dc4-371e-4264-9b09-0058cf3bbe6e / ext4 discard, noatime, commit=120, defaults 0 1

Можна переконатися, що тут також присутній параметр discard, котрий ми і видаляємо. Після його видалення, строчка налаштувань повинна виглядати наступним чином:

Видалення параметру discard

Збережемо внесені у файл зміни та вийдемо із редактору (ctrl+X).

Таким чином, ми відключили режим безперервного виконання TRIM-команди для всіх подальших завантажень операційної системи нашого сервера. Після цього можна переходити до налаштування режиму періодичного запуску TRIM-команди.

Включення режиму періодичного запуску TRIM-команди

Як вже зазначалося, методи налаштування вказаного режиму також залежать від типу ОС, що використовується, навіть, у межах групи Linux-подібних систем. Зокрема, в конфігурації Ubuntu 22.04 вже присутній скрипт, котрий щотижнево запускається даемоном cron. Вказаний скрипт повністю визначає потрібний нам режим для TRIM-команди, що нас цілком влаштовує.

Переглянемо вміст скрипта, щоб переконатися в цьому. Для цього наберемо в терміналі:

$ nano /etc/cron.weekly/fstrim

Перегляд вмісту файлу fstrim

Як бачимо, тут встановлено параметр --all для запуску плагіна fstrim, що, власне, і визначає режим періодичного запуску команди. У більш ранніх версіях цієї ж ОС вказаний параметр відсутній.

Що ж стосується інших ОС сімейства Linux, таких, наприклад, як CentOS, Fedora чи Debian, то тут вказаний режим можна включити за допомогою модулю timer, котрий щотижня буде запускати TRIM-команду на всіх доступних сумісних пристроях.

Відповідна команда буде виглядати наступним чином:

$ sudo systemctl enable fstrim.timer

Висновки

Представлений нами механізм оптимізації роботи SSD-сховища не вирішує всіх проблем, виникаючих при експлуатації сховищ з великими об'ємами даних, однак поліпшує якість їхньої роботи і, тому, він вартий того, щоб додати до арсеналу невідкладних заходів при роботі із SSD-сховищами.

Дата-центр FREEhost.UA пропанує оренду серверів для вирішення різноманітних завдань: віддалений робочий стіл, сервера баз даних, розміщення сайтів, збереження резервних копій. Сервери ми надаємо клієнту вже налаштовані, при потребі спеціалісти FREEhost.UA нададуть послугу з додаткового адміністрування, та контролю роботи за сервером. Два дизель-генератора, 3 оптичні вводи, резервування іншої необхідної інфраструктури гарантують постійну доступність серверів.

Підписуйтесь на наш телеграм канал https://t.me/freehostua, щоб бути в курсі нових корисних матеріалів.

Дивіться наш Youtube канал на https://www.youtube.com/freehostua.

Ми в чомусь помилилися чи щось пропустили?

Напишіть про це у коментарях на сайті та в телеграм-каналі. Ми із задоволенням відповімо та обговоримо Ваші зауваження та пропозиції.

 
Дата: 08.11.2023
Автор: Олександр Ровник
Голосування

Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:

comments powered by Disqus
navigate
go
exit
Дякуємо, що обираєте FREEhost.UA