TRIM в дисках SMR та SSD

Рівні адресації в носіях інформації



З точки зору користувача, дані зберігаються у файлах упорядкуваних у логічну структуру каталогів. У свою чергу, дерева каталогів розміщуються на розділах - логічно відокремлених частинах дисків або їх наборів - масивів RAID. Зберигання даних у впорядкованій структурі керується файловими системами, які значно відрізняються між собою в деталях.
Окрім цих відмінностей, ми можемо помітити деякі подібності у всіх файлових системах. Файлові системи розташовують файли в певні одиниці розміщення, які називаються кластерами (в файлових системах пов'язаних з фірмою Microsoft) або блоками (зазвичай в середовищах похідних від системи Unix), залежно від номенклатури конкретної файлової системи. Через те, що поняття блоку є дуже неоднозначним, щоб уникнути плутанини, далі для позначення цих одиниць розподілу використовуватимо термін "кластер" незалежно від типу файлової системи.
Кластери містять меншу або більшу (але завжди рівну ступені двійки) кількість секторів LBA (англ. Logical Block Addressing - адресація в логічних блоках). Адресація LBA була винайдена в першій половині 1980-х років, щоб спростити керування жорстким диском, замінити адресацію CHS (англ. Cylindr, Head, Sector - циліндр, голівка, сектор), яка стосувалась безпосередньо фізичних секторів та забезпечити сумісність між пристроями різних виробників. Цей метод адресування секторів був прийнятий стандартами ATA та SCSI, а також використовується й іншими протоколами зв'язку, які вживаються для обміну інформації між різними носіями даних.
Коли потрібно прочитати або записати дані на носій, кластерна адресація файлової системи перераховується на адресацію LBA і відповідні команди вказують на сектори саме в цій адресації. Але жорсткі диски все таки складаються з меншої чи більшої кількості пластин з круглими, концентричними доріжками розділеними на фізичні сектори. Таким чином, необхідно призначити конкретні номери адрес LBA відповідним фізичним секторам. Це завдання виконується частиною мікропрграми прошивки жорсткого диска - підсистемою трансляції логічної адресації у фізичну, яку коротко називають транслятором.
Подібна ситуація й у випадку напівпровідникових накопичувачів, що зберігають дані в мікросхемах Flash-NAND. Ми також звертаємось до них за допомогою адрес LBA, хоча в них немає пластин, доріжок, чи секторів. Пристрої, що використовують мікросхеми типу флеш, адресують дані в сторінках (це мінімальна одиниця програмування та читання) та блоках (мінімальна одиниця стирання). Сектори емулюються контролером виключно для сумісності з протоколами зв'язку з зовнішнім світом. І також у випадку напівпровідникових носіїв, прошивка містіть частину відповідальну за перетворення логічних адрес у фізичні, яка в цих пристроях називається прошарком трансляції флеш (англ. Flash Translation Layer - FTL).
Адресація LBA також використовується масивами RAID. Коли ми обмінюємось даними з масивом RAID, ми викорисьуваємо його адресацію LBA, яка потім перераховується контролером масиву на адресацію LBA окремих дисків, що входять до його складу. Якщо ми маємо справу зі складним середовищам, в якому є масиви на інших масивах, адресація масиву, до якого ми звертаємося, спочатку перераховується на адресацію масивів, які його складають, і лише потім в адресацію фізичних дисків.
Адресацію LBA знайдемо теж у файлах віртуальних машин. В середині такого файлу ми маємо віртуальну файлову систему, незалежну від файлової систему, яка описує цей файл. І кожен файл віртуальної машини зміщує в собі віртуальні кластери, які перераховуються на віртуальні сектори LBA. Саме ці адреси дозволяють знаходити ці фрагменти віртуальної машини, які ми хочемо читати або записати. І тільки з цією інформацією можна перетворити внутрішні адреси віртуальної машини в реальні кластери файлової системи, що описує її файл, а далі - у фізичні адреси носія.

Вільне та зайняте місце



Коли ми купуємо новий диск, ми вважаємо його порожнім. Лише після того, як ми його ініціалізуємо, розділимо на розділи, відформатуємо та почнемо на ньому розміщувати деяки дані, ми помічаємо, що цей диск поступово заповнюється. Ми також можемо використовувати інструменти операційної системи, щоб перевірити, скільки на диску вільного та зайнятого місця. Але про зайняте та вільне місце ми можемо говорити дише по відношенню до логічних структур файлової системи.
У фізичному сенсі кожен носій інформації завжди зберігає певну інформвцію, навіть, якщо вона не піддається інтерпретації на логічному рівні. Звертаючись до будь-якого сектора LBA, ми завжди отримаємо певну відповідь, незалежно від того, чи читаємо вільний, чи зайнятий сектор в сенсі логічних структур. У випадку нових дисків це буде послідовність байтів зі значенням 0х00, але якщо диск вже був вживаний, це не так очевидно.
Іноди нам може здатися, що вільний простір - це сектори заповнені нулями, а сектори, що містять інший вміст - це зайняті сектори. Насправді все інакше. Зайнятий простір - це області диска, які відповідно описані в логічних структурах файлової системи як файли або елементи цих структур, навіть, якщо вони містять сектори заповнені нулями.
Якщо ці нулі описуються як частина файлу або якоїсь логічної структури та певнми чином інтерпретуються, ми не можемо їх вважати вільним простором. З іншого боку, навіть області, що містять повні та зв'язні файли, якщо вони не будуть належним чином адресовані в логічних структурах файлової системи, з їхньої точки зору будуть вільним простором, в якому можна розмістити інші дані. Такі файли не видно в структурі каталогів, але їх можна відновити, доки вони не будуть перезаписані.

Підсистема трансляції логічної адресації у фізичну



Класичний транслятор в жорстких дисках



Протягом десятіліть трансляція адрес LBA на фізичні сектори жорстких дисків була дуже простою. Фізичні сектори отримували послідовні номери LBA, починаючи від нуля до останнього номера, що випливає з номінальної ємності диска. Адреси LBA призначались починаючи з доріжок на зовнішньому краю пластини диска та їх номери збільшувалися в напрямку до осі двигуна. Це тому, що доріжки з більшим радіусом довші, завдяки чому на них можна розташувати більше секторів, ніж на коротших доріжках з меншим радіусом.
Це рішення дозволяє зчитувати початкові сектори LBA швидше, оскільки за один оберт пластини їх можна прочитати більше. Це легко спостеригається під час тестування диска, де діаграма швидкості читання падає зі зростанням номерів адрес LBA. Коли на диску використовуються декілька поверхонь пластин, безперервність нумерації на даній поверхні час від часу переривається, щоб розмістити наступні адреси на інших поверхнях. Призначення конкретних адрес LBA конкретним поверхням пластин називається мапою головок, оскільки така мапа повідомляє нам, яка голівка зчитує конкретні діапазони адрес LBA.
Одним із завдань транслятора є обхід пошкоджених секторів. З точки зору підсистеми трансляції, пошкоджені сектори можна поділити на заводскі та ці, що виявляються під час експлуатації. Перші з них записуються в базовий список дефектів (P-List) і пропускаються при призначенні номерів адрес LBA. Останні виявляються під час роботи диска та записуються в нарощувальний список дефектів (G-List). Оскільки їм вже було призначено номери адрес LBA, ці номери перепризначаються резервним секторам в процесі перерозподілу.
Деталі підсистеми трансляції різняться залежно від архітектури прошивки та моделі накопичувача, але нам для зрозуміння функції TRIM такі детальні знання не будуть потрібні. Насправді найбільш суттєвою зміною, яка відбулась між впровадженням адресації LBA, а винаходом черепичного запису була заміна 512-байтних секторів на 4-кілобайтні (Advanced Format). У випадку останнього один фізичний сектор відповідає 8 секторам LBA.

Диски SMR та транслятор другого рівня.



В гонитві за збільшенням щильності запису виробники жорстких дисків помітили, що зчитувальна голівка здатна зчитувати сигнал з набагато вужчої доріжки, ніж записує записуюча голівка. Тому вони розробили метод черепичного запису (англ. Shingled Magnetic Recording - SMR), в якому наступні доріжки частково перезаписують попередні. Для цього знадобилось змінити конструкцію записуючої голівки таким чином, щоб вона індукувала магнітне поле асиметрично, щоб найсилніший сигнал був записаний якомога ближче до попередньої доріжки, не пошкоджуючи її.
Негативним наслідком впровадження черепичного запису стала втрата вільного доступу до сектора при записі. Коли ми записуємо новий вміст у сектор, магнітне поле індуковане голівкою пошкоджує вміст секторів розташуваних на наступних доріжках. Щоб уникнути необхідності перезаписувати кожного разу всю поверхню пластини, виробники групують доріжки в зони SMR ємністю в кілька десятків МБайт, та відокремляють ці зони безпечними проміжками.
Однак внесення змін до одного сектора все таки вимагає перезапису всієї зони доріжок. Оскільки це дуже негативно впливає на продуктивність запису, виробники вирішили записувати новий вміст не там, де даний сектор LBA фізично знаходився раніше, а в інші фізичні сектори, там, де це в тій, чи іншій ситуації найзручніше. Деталі вирішення цієї проблеми різняться залежно від виробника, але вони мають одну спільну рису. Вони порушують відносно постійне прикріплення адрес LBA до конкретних фізичних секторів.
У дисках з черепичним записом номери адрес LBA можуть легко змінювати своє фізичне розташування, а другий рівень транслятора відповідає за відстеження їх поточного розміщення. Такі динамічні зміни положення логічних адрес у фізичних секторах вимагають введення в прошивку диска спеціальних таблиць для запису цих змін. Практично кожен запис на диск потребує також запису інформації про нове фізичне розташування деяких адрес LBA. Це прзводить до підвищеного ризику помилок в таблицях транслятора другого рівня, що є поширеною причиною збоїв дисків SMR та втрату даних.

Прошарок трансляції флеш у напівпровідникових накопичувачах



Характерною особливістю напівпровідникових накопичувачів є неможливість безпосереднього перезапису існуючого вмісту. Це пов'язано з фізикою зберігання даних в цих носіях, що дозволяє електронам поміщатись лише в порожні плаваючі затвори транзисторів, які потрібно стерти перед перерограмуванням. Таким чином, якщо ми змінюємо вміст сектора LBA, він записується в інше фізичне місце, а застарілий вміст потрібно стерти, щоб звільнити фізичний блок для наступних записів.
Це рішення вимагає, щоб деякі фізичні одиниці розподілу в накопичувачу були завжди готові до запису нових даних. Тому адресація LBA не може охопити всю фізичну ємність носія. Співвідношення кількості доступних секторів LBA до фізичного розміру накопичувача є компромісом між бажанням продавати пристрої з максимально можливою ємністю та необхідністю підтримувати резерв, що забезпечує їх ефективну і безвідмовну роботу.
Наявність операцій програмування та стирання в напівпровідникових носіях робить зміни вмісту секторів LBA більш складним, ніж у магнітних накопичувачах, які дозволяють прямий перезапис. Запис нового вмісту секторів LBA в інше фізичне місце змушує прошивку записувати їх нове розташування в таблицях транслятора. В свою чергу, блоки, що зміщують застаріли дані, видаляються з адресації LBA та стираються. Цей метод керування даними означає, що адреси LBA не прив'язвні до конкретних одиниць розподілу, а чергуються між ними відповідно до виконуваних операцій.
Додатковою складністью у випадку напівпровідникових накопичувачів є те, що вони використовують дві різні олиниці розподілу: сторінки, які є мінімальними одиницями читання і програмування та блоки, які є мінімальними одиницями стирання. Розмір сторінок зазвичай дозволяє їм зберігати від одного до 32 512-байтових секторів LBA (їх кількість завжду дорівнює ступеню двійки), а також надлишкову інформацію необхідну дла коректної роботи носія. В свою чергу, блоки містять від кількох до кількох сотень сторінок. І до певного моменту кількість сторінок в блоку була рівна ступеню двійки, але вже від декількох років виробники не дотримуються цього правила.
Це означає, що на практиці зміни вмісту на рівні сектора LBA можуть призвести до того, що фізичні одиниці розподілу одночасно містітимуть як поточні, так і застарілі сектори LBA. Це стає проблемою, коли кількість вільних блоків, готових приймати нові дані починає зменшуватись. Іншою проблемою, з якою стикаються напівпровідникові накопичувачі є їх зношення через операції стирання та програмування, що зрештою призводить до збою пристрою. І саме ці проблеми призвели до застосування в цих носіях функції TRIM.

Як працює TRIM твердотільниках?



Основою для функції TRIM є той факт, що, принаймні теоретично, з точки зору користувача не має необхідності фізично зберігати дані, які не адресувані в логічних структурах файлової системи. Підсистемі трансляції достатньо знати, які сектори лежать в областях зайятих файлами або логічними структурами, що їх описують, а які, в логічному сенсі, є вільним простором. І, в разі останнього, заміст фізичного зчитування секторів, контролер може відразу відправити у відповідь сектори заповнені нулями.
Робота функції TRIM дещо подібна до розріджених файлів (англ. sparse file), у яких більші фрагменти файлу заповнені нулями не завжди потрібно фізично записувати в носій. У деяких файлових системах достатньо, щоб метадані містили інформацію про те, скільки заповнених нулями кластерів і де саме у файлі їх слід вставити під час його читання. І, якщо прошивка твердотільника дозволяє включити подібну інформацію в прошарок трансляції флеш, транслятор не шукатиме фізичне розташування потрібних секторів, а повідомить контролеру, що це "порожні" сектори.
Впровадження функції TRIM в твердотільниках підвищило їх продуктивність. Відсутність потреби фізично читати сектори розташовані у "вільній області" диска означає, що ми можемо отримати відповідь швидше. Ми також можемо утримувати більше стертих блоків, що не тільки позитивно впливає на продуктивність запису, але також зменшує навантаження на носій від операцій програмування і стирання та полегшує роботу алгоритмів вирівнювання зносу. Це важливо дла стійкості накопичувачів, що значною мірою залежить від операцій програмування та стирання.
Оскільки самі накопичувачі не интерпретують дані, а лише їх зберігають, то для роботи функції TRIM, крім її підтримки прошивкою носія, також необхідне джерело інформації про те, що відбувається на рівні логічних структур файлової системи. Диск повинен якимось чином знати, які сектори "використовуються", а які ні. Інформацію з цього приводу надає контродеру операційна система, яка керує файловими системами на розділах диска.
Зараз більшість операційних систем підтримують функцію TRIM, яку, як правило, ввімкнено за замовчуванням. Однак не у всіх випадках операційна система підтримує функцію TRIM для всіх підтримуваних файлових систем. Також бувають ситуації, коли операційна система не хоче співпрацювати з деякими дисками, хоча і сама система і накопичувач підтримують функцію TRIM. Прикладом можуть бути старші версії MacOS, які вимагали зовнішнього програмного забезпечення для підтримки функції TRIM у твердотільниках від інших постачальників, крім Apple.
Щоб функція TRIM працювала, її також має підтримувати протокол зв'язку. Тому TRIM не працюватиме на старішому апаратному забезпеченні, яке несумісно з ATA-8. Також можуть бути проблеми з контролерами масивів RAID, які не завжди підтримують TRIM. Ця функція теж не підтримується більшістю перехідників USB-SATA. Відповідником функції TRIM у стандарті SCSI є UNMAP.

Розсіювання даних в мікросхемах Flash-NAND



Дані в напівпровідникових накопичувачах не записуються послідовно, а розкидані по різних фізичних одиницях розподілу. На це впливає багато чинників пов'язаних з продуктивністю та стійкістю носіїв. Пам'ять Flash-NAND є досить повільною, тому продуктивність накопичувачів, що використовують ці мікросхеми, побудована на паралельній обробці даних в багатьох мікросхемах одночасно, подібним чином, як у масивах RAID, які паралельно обробляють дані на багатьох дисках.
Другою важливою причиною є проблема тепла Джоуля, що виділяється під час запису та стирання даних. Операції програмування та стирання в пристроях, що побудовані на мікросхемах Flash-NAND, використовують квантово-механічне явище тунелювання Фаулера - Нордхейма, яке вимагає збільшення напругі всередині мікросхеми, що є пов'язане в втратами енергії. Якщо фізичний запис на носіях, що побудовані на мікросхемах Flash-NAND, був би викониваний послідовно, локальний перегрів мікросхеми міг би стати частою причиною пошкодження пристрою. Тому пам'яті Flash-NAND часто внутрішньо логічно розділені на дві або чотири частини, між якими дані записуються в порядку чергування.
З наведених вище причин, дані записані на напівпровідниковий накопичувач, розкидані таким чином, що суміжні сектори LBA зазвичай фізично потрапляють у різні фізичні сторінки. Це легко помітити на носіях, де винікають помилки читання. Під час сканування такого накопичувача часто можна спостерігати послідовності пошкоджених секторів, які чергуються з хорошими. Таки пошкоджені сектори зчитуються із зіпсутої сторінки, а правильно прочитані поміж ними, розташовані на справної.

Збірання сміття



Коли вносяться зміни на рівні адресації LBA, вміст змінених секторів записується в інші фізичні сторінки, розташовані в інших фізичних блоках. Оскільки блоки містять багато сторінок, зараз їх зазвичай сотні, легко можна зіткнутися з ситуаціями, коли блоки міститимуть деяки сторінки з поточним вмістом, а одночасно й інші - застаріли. Доки блок містить поточні сторінки, його не можна стерти та підготувати до прийому нових даних.
Ця ситуація дуже незручна з точки зору керування адресацією носія, тому, що можемо опинитись у глухому куті, коли занадто багато блоків міститимуть малу кількість поточних сторінок, які унеможлювують стирання цих блоків. Це може спричинити значне зменшення кількості стертих блоків, доступних для запису нових даних. А це ускладнює запис цих даних, навіть, якщо з логічної точки зору, накопичувач має достатньо вільного місця. Для вирішення цієї проблеми, використовується процедура збору сміття (англ. garbage collection).
Натхненний процедурами збирання сміття в оперативної пам'яті, процес збирання сміття в напівпровідникових накопичувачах передбачає переміщення сторінок, що зберігають поточний вміст, із блоків, які містять порівняно мало таких поточних сторінок, до інших блоків. Це дозволяє стерти блоки, які вже містять тільки застаріли сторінки. Цей процес зазвичай відбувається у фоновому режимі, коли контролер не зайнятий обробкою вхідних команд. Функція TRIM дозволяє пропускати під час збору сміття сторінки, що зберігають дані, які були видалені на логічному рівні. Це не тільки прискорює роботу носія, але й зменшує його навантаження операціями запису та стирання.

Чому TRIM використовується в дисках SMR?



У випадку дисків з черепичним записом, використання функції TRIM є наслідком втрати вільного доступу до секторів при записі. Це змусило виробників шукати рішення для збереження продуктивності запису дисків цього типу, що призвело до ускладнення підсистеми трансляції логічної адресації у фізичну. Різні виробники по-різному підходять до проблеми адресування та зберігання даних на дисках SMR.
Одним із рішень є використання буфера Media Cache - групи доріжок з шириною, що дозволяє традицийний запис. Дані, що надходять на диск, в першу чергу записуються в буфері, а лише потім, коли диск не обробляє команди користувача, переписуються у відповідні зони SMR. Це дозволяє, щоб процес перезапису цілих зон SMR та очищення буфера Media Cache відбувався у більшості випадків у фоновому режимі, непомітно для користувача. Однак записування одночасно даних дуже великого обсягу є проблематичним, зокрема, якщо ці дані містять велику кількість невеликих файлів. У таких ситуаціях буфер Media Cache може переповнюватись, а швидкість запису може різко впасти.
Інший підхід полягає в записі даних безпосередньо в зони SMR, як правило, інші від тих, у яких дані сектори LBA були розташовані попередньо. Тут є певна схожість з чергуванням адрес LBA між фізичними одиницями розподілу, яке відбувається в напівпровідникових накопичувачах. Хоча у випадку магнітних носіїв, таких, як жорсткі диски, непотрібна операція стирання, оскільки в них можливо безпосередньо перезаписувати дані, запис до зони SMR пошкоджує у цієї зоні вміст секторів, що не змінюються. Це вимушує забезпечення в буфері та перезаписання цих секторів ще раз.
Таким чином, у випадку обох описаних вище рішень, використання функції TRIM позитивно впливає на продуктивність диска. І під час запису, коли диск знає, які області не адресувані в логічних структурах файлових систем, завдяки чому може заощадити час необхідний для їх запису в зону SMR, і під час читання, коли не потрібно шукати сектори, що містять "порожній простір", а можна просто відповісти сакторами заповненими нулями. Оскільки, на відміну від напівпровідникових накопичувачів, операції запису не зношують жорсткі диски, TRIM не впливає на їх стійкість, як це відбувається з твердотільниками.

Практичні наслідки функції TRIM



Відновлення даних та комп'ютерна криміналістика



Якщо носій викрпистовує функцію TRIM, видалення даних на логічному рівні означає, що ми не зможемо відновити видалені файли під час праці на рівні адресації LBA. Це пов'язано з тим, що у відповідь на команду читання секторів, що містять ці файли, диск віддатиме сектори заповнені нулями. Однак на фізичному рівні ці дані все ще можуть існувати. При цьому інша ситуація у випадку з жорсткими дисками, а інша - з твердотільниками.
Оскільки напівпровідниковий носій мусить фізично стирати дані, процес фізичного знищення даних видалених на логічному рівні починається практично відразу після їх видалення. Важливо, що цей процес відбувається на рівні прошивки, тому, якщо накопичувач підключений до джерела живлення, процес знищення інформації відбувається незалежно від інших команд отримуваних від комп'ютера та не може бути зупинений за допомогою блокувальників запису, які зазвичай використовуються в комп'ютерній криміналістиці. Щоб зупинити процес стирання, можна випаяти мікросхеми пам'яті та зчитати їх на програматорі. Можна теж перевісти твердотільник у сервісний режим (safe mode).
У разі випаяння мікросхем Flash-NAND, відновлення даних може зіткнутися з низкою практичних перешкод. Найсерйознішою з них є шифрування. Сьогодні шифрування широко використовується в твердотільних накопичувачах не тільки тому, що воно добре продається як елемент безпеки, але також тому, що алгоритми шифрування дуже добре рандомізують дані, що допомагає зменшити ризик виникнення бітових помилок. Там, де шифрування не вживається, часто використовується динамічна рандомізація, яку математично важко розкодувати. Іншою проблемою, з якою можна зіткнутись під час відновлення даних з бінарних зображень мікросхем пам'яті, є внутрішне стиснення інформації, метою якого є зменшення обсягу даних фізично зберіганих в носію і, таким чином, кількості операцій запису, які зношують накопичувач.
З цієї причини далеко не в кожному випадку випаювання мікросхем пам'яті є рішенням, яке дозволяє ефективно відновити дані. Альтернативою є переведення твердотільника в сервісний режим, в якому контролер не має прямого доступу до пам'яті. Якщо в сервісному режимі можливий доступ до фізичної адресації при блокуванні фонових процесів, можливе відновлення частини даних, яка до того часу ще не була фізично стерта. Однак, оскільки процес фізичного стирання даних позначених TRIMом як видалені на логічному рівні триває від кількох до кількох десяток хвилин, шанси відновити таким чином будь-що - досить примарні.
Ситуація трохі краща у випадку жорсткіх дисків, які не підтримують стирання даних. На жорстких дисках дані видалені логічно у фізичної адресації залишаються недотроканими, доки не будуть перезаписані іншим вмістом. У них час реакції та сам факт підключення до джерела живлення не так критичні для відновлення даних, як у випадку твердотільників. Однак слід пам'ятати, що диски з черепичним записом теж не вільні від фонових процесів, наприклад очищення Media Cache, в яких перезаписуються не окремі сектори, а цілі зони SMR.

Знищення даних.



У разі знищення даних, функція TRIM ускладнює перевірку правильності виконання завдання. Це означає, що на логічному рівні ми можемо бути переконаними, що дані результативно знищені, тоді як на фізичному рівні вони все ще можуть існувати та підлягати відновленню. Тільки пізніше операції стирання блоків, що відбуваються у фоновому режимі, призводять до фактичного знищення даних.
Крім того, так для твердотільників, як і для жорстких дисків з черепичним записом, існує ризик залишити незнищені дані в областях за межами адресації LBA. Цей ризик більший у випадку жорстких дисків, оскільки вони не мають операції стирання блоків, як напівпровідникові накопичувачі. Тому для знищення інформації часто рекомендується вживати процедуру Secure Erase, яка працює ближче до фізичної адресації, що має забезпечити результативне знищення даних. Однак інколи виникають сумніви щодо правильності запрограмування процедури Secure Erase в прошивці носія.
Дуже цікавий приклад некоректрої реалізації процедури Secure Erase в пам'яті eMMC продемонструвала Ая Фукамі під час конференції Flash Data Recovery & Digital Forensic Summit 2024. У презентації "Exploiting the eMMC security features using the VNR" вона показала мікросхеми eMMC з яких після виконання процедури Secure Erase можна відновити дані майже стовідсотково, незважаючи на те, що в адресації LBA всі сектори заповнені нулями. Однак перехід на рівень фізичної адресації дозволив зробити висновок, що вміст фізичних блоків був пошкоджений лише незначно і значну частину можна було відновити.
З цієї причини, при знищувані даних варто звертати увагу на час виконання операції Secure Erase. І якщо вона завершиться підозріло швидко, за час менший, ніж потрібно для перезапису носія в повному обсязі, дуже ймовірно, що дані фізично не були знищенні, а лише були виконані операції на підсистемі трансляції логічної адресації у фізичну. У випадку зашифруваних носіїв, як правило, Secure Erase знищує також ключ шифрування (т. зв. cryptoerase), що значно підвищує рівень безпеки операції. Однак і у такої ситуації краше мати до Secure Erase обмежену довіру та знищити дані шляхом перезапису.

Як вимкнути функцію TRIM?



В системі Windows



Запустить командний рядок (cmd) від імені адміністратора,
введить команду:

fsutil behavior set disabledeletenotify 1

В системі Linux



З системами Linux все не так просто. Через відмінності між окремими дистрибутивами та файловими системами, що використовуються в середовищі Linux, детальну інформацію потрібно перевірити в документації. Зазвичай за підтримку функції TRIM в системі Linux відповідає параметр discard, який повідомляє диску про видалення файлів на логічному рівні відразу після виконання операції або команда fstrim, яка передає контролеру інформацію про логічно звільнені області після її ручного подання або автоматично (наприклад за допомогою системного менеджера systemd) через задані інтервали часу. Параметри монтування розділів зберігаються у файлі конфігурації etc/fstab і там їх слід перевірити. Важливо пам'ятати, що в деяких файлових системах підтримка функції TRIM може бути ввімкнена за замовчанням (для її примусового вимкнення використовується параметр nodiscard) або шляхом встановлення прапорця в параметрах суперблоку.

В системі MacOS



Впишить в термінал:

sudo trimforce disable

Введить пароль адміністратора та підтвердить зміни. Після підтвердження, комп'ютер автоматично перезавантажиться.


Сторінка не збірає даних користувачів