Що саме TRIM?


14

Зі сторінки Вікіпедії TRIM у мене складається враження, що TRIM був введений для зниження запису на SSD, але надішліть файл-файловій системі, у випадку, коли блоки не використовуються.

Якщо це правильно, чи означає це, що SSD, які не використовують TRIM, записують нулі в блоки, коли файл видаляється, щоб SSD знав, що блоки є вільними?

Читаючи це

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

спонукає мене думати, що SSD не перезаписується нулями? Або файлові системи у гостей, щось зовсім інше?

Відповіді:


16

Пристрої флеш-пам’яті (що використовується для сьогоднішніх SSD-дисків) не можуть записувати довільні дані в будь-який момент; перед записом на комірці (як правило, 4 КБ) слід спершу видалити. На жаль, операція стирання відбувається дуже повільно; тому флеш-пристрої були набагато повільнішими, ніж магнітні приводи, незважаючи на відсутність рухомих частин.

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

Щоб завжди було встановлено набір попередньо підготовлених комірок, у будь-який момент, коли комірка не потрібна, накопичувач планує її для фонового стирання та додає до списку комірок комісії.

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

Інструкція TRIM була швидко розроблена та прийнята більшістю файлових систем, що зараз підтримуються. Це простий сигнал, який використовує файлова система, щоб сказати накопичувачеві, що вміст сектора вже не важливий. Як тільки всі сектори, відображені на комірці, будуть звільнені, контролер SSD знімає карту і планує її на стирання. Якщо хост читає ці сектори, SSD не заважає добувати з Flash, він негайно відповідає нулями; але найважливіший ефект полягає в тому, щоб список попередньо попередніх клітин завжди поповнювався.

Тим не менш, більшість SSD мають меншу ємність, ніж фізичний розмір флеш-пам'яті, іноді до 75%. Це дозволяє йому зберігати деякі невикористані комірки навіть у 100% повній системі, так що (над) записування використовуваних секторів все ще швидко.


Цікаво. Я концептуально знав про те, як працює TRIM, але цікавився, скільки зберігатиме SSD. Тепер я хочу дізнатися, чи публікуються ці дані де-небудь для даних SSD ...
Michael B

Кількість зарезервованих комірок зазвичай публікується. Це зазвичай становить від 5 до 10% для дешевших споживчих накопичувачів, 20% + для більш високих кінцевих споживачів. У флеш-накопичувачів підприємства (EFD), як правило, резерв становить від 100% до 400%; отже, чому вони так дорого дорогі, вони зберігають цей величезний резерв, оскільки запис у флеш-пам’ять десь знищує місця десь. Написання важких додатків, як правило, в серверних середовищах, швидко знищить більшість споживчих SSD.
Кріс Ш

"запис на клітинку (як правило, 4 КБ)" - Ви неправильно використовуєте поняття "комірка" порівняно зі звичайним використанням флеш-пам'яті. "Стільникова" клітка зберігає лише один (або кілька) біт. Здається, ваше використання "комірки" відповідає набагато більшому (стираючому) блоку (може бути 128 К), як це зазвичай описано у флеш-таблицях даних ІС. Організація даних - це клітинка <сектор <сторінка <блок <площина <чіп.
тирса

8

TRIM був введений для того, щоб операційна система (файлова система всередині ОС) могла спілкуватися з носієм пам'яті ATA, що сектор більше не використовується файловою системою. Це не має нічого спільного з записом на диск.

TRIM не гарантує, що цей сектор занулений у засоби масової інформації. Це гарантує, коли файлова система вимагає прочитати з цього сектора, що нулі повертаються (зауважте, що оскільки SSD знає, що сектору повинні бути нулі, він поверне їх, незалежно від того, що насправді зберігається в медіа; можливо, можливо відновити дані з простого обробленого диска, хоча, як правило, SSD фактично стирають пам'ять).

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

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


Чи означає це, що TRIM був введений, щоб повідомити SSD, які сектори використовуються, щоб він міг розміщувати нові дані про сектори, які використовуються менше?
Сандра

1
SSD-диски просто використовують TRIM, щоб знати, коли сектор більше не потрібен. Це не гарантує вирівнювання запису або будь-які інші функції, які може застосовувати носій інформації. Однак, більшість SSD використовують це для вирівнювання записів, збору сміття (у флеш-носіях, стирання невикористаних секторів) та збереження списків вільних секторів для покращення продуктивності запису).
Кріс Ш
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.