Що таке TRIM?
Щоб пояснити призначення цієї команди, необхідно спочатку порівняти те, як поводяться твердотільні та механічні диски під час видалення файлів. Перш за все, коли файл видаляється, чи то з SSD, чи з HDD, конкретна файлова система, застосована на цьому пристрої, позначає відповідний простір для зберігання як такий, що більше не використовується, і позбувається посилання на цей файл. Це дозволяє повторно використовувати звільнений простір для збереження інших файлів. Механічний жорсткий диск здатний перезаписувати такі області одразу, коли надходять нові дані. Однак у випадку твердотільної флеш-пам'яті все працює не так.
Твердотільний накопичувач складається з комірок флеш-пам'яті, у які можна щось записати лише тоді, коли вони фізично порожні. Таким чином, накопичувач повинен або використовувати ще незайняті нові комірки, або, за їх відсутності, вилучити з комірок старі дані, перш ніж розпочати операцію запису. Самі комірки згруповані в сторінки по 4-16 Кб, а 128 сторінок разом складають блок. Операцію запису можна виконати на окремій сторінці, тоді як видалення завжди зачіпає весь блок через специфіку флеш-пам'яті. Отже, SSD має скинути вміст цього блоку в кеш, стерти його на носії, замінити дані на сторінках даними із кешу, які призначені для видалення, а потім відновити оновлений блок у новому місці. З такою кількістю кроків, які потрібно виконати, запис стає суттєво повільнішим, ніж при роботі з незайнятими сторінками. Тож, з цієї точки зору, було б доцільно підготувати ці комірки пам'яті до запису заздалегідь. Але проблема полягає в тому, що накопичувач, за визначенням, не може знати, що комірки містять нерелевантну інформацію, доки файлова система не вирішить використати їх. І ось тут у гру вступає TRIM.
TRIM — це спеціальна команда, яка надсилається операційною системою на SSD після видалення файлу або форматування розділу. Вона дозволяє контролеру накопичувача фізично очистити блоки, які все ще зберігають видалені файли, і підготувати їх для розміщення нових даних. Це робиться шляхом так званого "Активного збирання сміття" (з англ. Active Garbage Collection) під час простою: всі дійсні дані з блоку копіюються та записуються до порожніх сторінок іншого блоку, щоб блок, про який йдеться, можна було очистити. Такий підхід дозволяє прискорити майбутні операції запису і сприяє оптимальній роботі накопичувача. Крім того, це зменшує кількість непотрібних операцій запису, подовжуючи строк служби накопичувача.
Слід зазначити, що дані не стираються відразу після надсилання цієї команди. Тим не менш, це може статися будь-коли, залежно від різних факторів, наприклад, коли диск не зайнятий або під час наступного запису. До того ж, контролери SSD, як правило, позначають блоки, що очікують на очищення, як порожні одразу після того, як отримують команду TRIM, навіть незважаючи на те, що їх ще не очищено.
TRIM — це фактично команда ATA для Serial ATA (SATA) SSD, але у неї також є аналоги для інших інтерфейсів SSD, наприклад UNMAP для дисків SCSI та SAS або DEALLOCATE для дисків PCI Express NVMe.
Як активувати TRIM на пристрої?
Як правило, TRIM запускається автоматично операційною системою і не вимагає ніяких дій від користувача. Однак ця команда насправді не є обов'язковою до виконання. Щоб все працювало належним чином, мають бути виконані всі наведені нижче умови:
-
Програмне забезпечення твердотільного накопичувача підтримує TRIM
Більшість сучасних SSD, випущених починаючи з 2010 року, мають підтримку цієї операції. Менше з тим, деякі накопичувачі попереднього покоління можуть вимагати оновлення мікропрограми для того, щоб підтримувати її, або ж навіть не можуть виконувати цю команду взагалі. Виробник повинен вказати це в технічних характеристиках відповідного цифрового носія.
-
ОС комп'ютера підтримує TRIM
Основні операційні системи отримали підтримку TRIM приблизно в 2010 році. На ПК TRIM підтримується у Windows 7 і новіших версіях. У macOS, починаючи з версії 10.6 Snow Leopard, TRIM доступний виключно для фірмових SSD від Apple. З випуском macOS версії 10.10.4 Yosemite команда стала підтримуватися ще й для сторонніх твердотільних накопичувачів, але в цьому випадку має бути активована вручну. Linux також підтримує TRIM, однак у деяких дистрибутивах ця команда може бути вимкнена за замовчуванням.
Незважаючи на це, не кожна файлова система є сумісною з TRIM. Наприклад, Windows пропонує TRIM для NTFS і ReFS, але не для FAT32 і exFAT. У Linux TRIM працює з ext4, Btrfs, F2FS, XFS, JFS та деякими іншими файловими системами.
-
Інтерфейс між комп'ютером і SSD підтримує TRIM
Навіть якщо і SSD, і ОС підтримують TRIM, фізична шина між ними може не підтримувати надсилання цієї команди. Незважаючи на повну сумісність з інтерфейсом SATA (включно з eSATA), TRIM зазвичай не проходить, якщо такий накопичувач під'єднано ззовні через USB, FireWire, Thunderbolt тощо. У той же час є зовнішні корпуси високого класу та USB-SATA адаптери, які підтримують TRIM-подібні команди через USB Attached SCSI Protocol (UASP).
-
Конфігурація, до якої належить накопичувач, сумісна з TRIM
За рідкісними винятками, TRIM не можна виконати на дисках-компонентах більшості рівнів RAID і деяких складених томів, наприклад, Windows Dynamic Disks та Apple Software RAID. Те саме стосується деяких пристроїв NAS.
TRIM в контексті відновлення даних
Хоча операція TRIM корисна для продуктивності SSD, не можна сказати те саме про відновлення видалених або відформатованих даних. Після виконання TRIM вміст файлів остаточно знищується і, таким чином, перестає існувати у сховищі. Це робить дані неможливими для відновлення будь-якими автоматизованими чи ручними методами. Навіть якщо відповідні блоки були внесені в список очікування для очищення пізніше, контролер SSD, швидше за все, видасть нулі або випадкове "сміття", коли будь-яке програмне забезпечення запитає їх. Єдина можливість відновити дані з SSD з увімкненою командою TRIM залишається, доки остання ще фактично не була виконана. Такі випадки дуже рідкісні, але час від часу можуть траплятися з наступних причин:
-
TRIM не підтримується на одному з "рівнів"
Як було зазначено, TRIM — це функція, яка має підтримуватися носієм даних, операційною системою, яка ним керує, застосованою файловою системою та інтерфейсом, який використовується для його підключення. Якщо в цьому ланцюжку відсутня будь-яка ланка, команда TRIM не може бути виконана, а, отже, дані залишаються доступними для відновлення. Типовим прикладом такої ситуації є видалення файлу з диску SSD, підключеного через порт USB.
-
Пошкоджені дані
При пошкодженні ключових елементів логічної структури накопичувача (файлової системи, таблиці розділів тощо) дані можуть стати недоступними як для користувача, так і для ОС. Незважаючи на те, що фактично ці дані втрачаються, може статися, що операційна система не вважатиме їх видаленим за відсутності належної операції видалення і, як наслідок, не надсилатиме команду TRIM.
-
Раптове відключення або втрата живлення
Коли накопичувач раптово втрачає живлення або від'єднується одразу після операції видалення, ОС може не мати достатньо часу для виконання TRIM, тож дані можуть залишитися недоторканими.
-
Несправна прошивка SSD
Мікропрограмне забезпечення твердотільних накопичувачів не завжди ідеальне, особливо це стосується моделей низького класу. Помилки, які воно містить, іноді можуть перешкоджати певним процесам, зокрема виконанню TRIM і Збору сміття. У цьому випадку вихідні дані можуть залишатись на накопичувачі навіть після їх видалення.