TRIM

Поделись знанием:
Перейти к: навигация, поиск

TRIM (англ. to trim — подрезать) — команда интерфейса ATA, позволяющая операционной системе уведомить твердотельный накопитель о том, какие блоки данных уже не содержатся в файловой системе и могут быть использованы накопителем для физического удаления.

TRIM входит в спецификацию интерфейса ATA, стандартизацией которого занимается группа T13 в составе INCITS.[1]





Цели использования

Команда TRIM была введена вскоре после появления твердотельных накопителей (SSD), чтобы сделать их конкурентоспособной альтернативой традиционным HDD в персональных компьютерах. Из-за того, что на внутреннем уровне реализация операций в SSD существенно отличается от реализации тех же операций в традиционных механических жёстких дисках, обычные методы ОС таких операций, как удаление файлов и форматирование диска (не обращаясь непосредственно к затрагиваемым секторам/страницам на накопителе), приводит к прогрессирующему ухудшению производительности операций записи на SSD.[2] Применение TRIM позволяет устройству SSD уменьшить влияние сборки мусора, которая в противном случае в дальнейшем выразится падением производительности операций записи в затронутые секторы.[3]

Хотя утилиты для «сброса» некоторых накопителей в начальное состояние были уже доступны ранее появления TRIM, они, помимо прочего, удаляли все данные на накопителе, что делало их практически неприменимыми для проведения оптимизации.[4]

Особенности работы твердотельных накопителей

Ввиду особенностей методов удаления, обычно применяемых в файловых системах, накопители «не знают», какие секторы/страницы действительно используются, а какие могут считаться незанятыми. Операции удаления обычно ограничиваются пометкой блоков данных как «неиспользуемых» в файловой системе.[5][6] В отличие от, например, операции перезаписи, удаление не приведёт к физической записи в затрагиваемые секторы, содержащие данные. Поскольку накопитель не имеет доступа к структурам файловой системы — таким как список неиспользуемых кластеров — накопитель остаётся в неведении об освобождении блоков. Хотя это часто позволяло восстановить удалённые данные на традиционных HDD, несмотря на то, что они были отмечены как «удалённые» операционной системой, также это означало, что когда позже операционная система произведёт операцию записи в один из секторов, считающихся свободным местом, эта операция будет считаться операцией перезаписи с точки зрения накопителя. Для традиционных жёстких дисков эта операция никак не отличается от записи в незанятый сектор, для SSD из-за выравнивания износа перезапись данных существенно отличается от записи в незанятый сектор (каждая запись в тот же логический сектор будет произведена в разные физические секторы), потенциально ухудшая производительность дальнейших операций записи.[6]

SSD хранят данные в ячейках флеш-памяти, сгруппированных (в MLC SSD) в «страницы» (обычно по 4 Кбайт каждая), которые, в свою очередь, сгруппированы в блоки (обычно 128 страниц или 512 Кбайт суммарно)[5][7] Ячейки NAND-флеш-памяти могут быть непосредственно записаны лишь в том случае, когда они чисты. В случае, когда они хранят данные, содержимое ячеек должно быть очищено, прежде чем в них будут записаны новые данные. В SSD накопителях операция записи может быть проделана только для страниц, однако из-за аппаратных ограничений команда удаления всегда выполняется на весь блок.[7] В результате, запись на SSD-носитель выполняется очень быстро до тех пор, пока существуют чистые страницы, но значительно замедляется, если необходимо очищать предварительно записанные страницы. Так как очистка ячеек в странице необходима перед тем, как в них можно будет записывать снова, но только целый блок может быть очищен, процесс перезаписи инициирует цикл чтение-очистка-модификация-запись:[5][8] содержимое целого блока должно быть сохранено в кеше перед тем, как оно может быть удалено с накопителя, перезаписываемые данные модифицируются в кеше и только после этого целый блок (с обновленной страницей) записывается на накопитель. Это явление известно как усиление записи (англ.).[9][10]

В своих SSD-контроллерах производители используют различные техники для оптимального распределения операций записи по всему флеш-накопителю.[5][11] Это делается не только для того, чтобы оптимизировать скорость путём минимизации усиления записи, но также для увеличения продолжительности жизни флеш-ячеек (выравнивание износа (англ.)), так как обычные MLC-флеш-ячейки выдерживают 3000-5000 циклов записи.[11] Другой подход заключается в том, чтобы использовать лишнюю память, не задекларированную операционной системе, для предоставления чистых страниц для операций записи как можно дольше перед тем, как начать перезаписывать другие страницы.[3]

Эффективность этих методов по большей части зависит от обмена информацией между ОС и контроллером SSD о том, какие страницы могут считаться занятыми, а какие — свободными. Традиционно большинство ОС не информируют накопители об удаленных секторах/страницах, что не позволяет контроллерам SSD оптимально распределять свободное пространство. Команда TRIM была введена чтобы исправить это, очищая неиспользуемые ячейки до того, как в них будет произведена запись, таким образом уменьшая время доступа.[3]

Так как команда полностью стирает данные в ячейках, восстановить из них данные обычно не представляется возможным.[12]

Ограничения

Поддержка команды операционными системами и дисками

Для старых твердотельных дисков, произведённых до добавления команды TRIM в стандарт ATA, необходимо обновление прошивки — в противном случае команда будет ими игнорироваться. Команда TRIM поддерживается также не всеми операционными системами.

Поддержка TRIM в операционных системах
ОС Поддержка
Windows 8 и выше Поддерживается с финального релиза (октябрь 2012)
Windows Server 2012 Поддерживается с финального релиза (октябрь 2012)
Windows 7 Поддерживается с финального релиза (октябрь 2009)[14]
Windows Server 2008 R2 Поддерживается с финального релиза (октябрь 2009)[15][16]
Linux 2.6.33 Поддерживается с февраля 2010[17], ioctl BLKDISCARD
OpenSolaris Поддерживается с июля 2010[18]
FreeBSD 8.3, 9.2, 10.0 Поддерживается с UFS[19], поддерживается с ZFS[20][21].
Mac OS X Поддерживается (с версии 10.10.4 для любых SSD, до этого только SSD поставляемые Apple[22])
Android Начиная с версии 4.3 в систему была добавлена поддержка функции fstrim, которая является аналогом TRIM

В некоторых случаях, когда TRIM не поддерживается операционной системой, существуют утилиты, позволяющие отправлять эту команду «вручную». Обычно такие программы с помощью ОС составляют список свободных блоков и передают его диску в виде последовательности команд TRIM. Такие продукты существуют как в виде универсальных утилит (hdparm версии 9.17 и выше), так и в виде ПО для отдельных дисков (Intel,[23] G.Skill[24]).

Аналогом команды TRIM для SCSI являются команды UNMAP и WRITE SAME[25].

Напишите отзыв о статье "TRIM"

Примечания

  1. [t13.org/Documents/MinutesDefault.aspx?keyword=trim T13 documents referring to TRIM] (англ.). INCITS T13. INCITS. Проверено 8 июля 2009. [www.webcitation.org/68ojvjX6A Архивировано из первоисточника 1 июля 2012].
  2. Shimpi, Anand Lal. [www.anandtech.com/show/2738 The SSD Anthology] (англ.). AnandTech.com (18 March 2009). Проверено 19 июня 2010. [www.webcitation.org/68ojwJEtT Архивировано из первоисточника 1 июля 2012].
  3. 1 2 3 Shimpi, Anand Lal. (2009-03-18). p. 10.
  4. Shimpi, Anand Lal. (2009-03-18). p. 11.
  5. 1 2 3 4 Savill, John. [www.windowsitpro.com/article/john-savills-windows-faqs/q-i-heard-solid-state-disks-ssds-suffer-from-a-decline-in-write-performance-as-they-re-used-why-.aspx I heard solid-state disks (SSDs) suffer from a decline in write performance as they're used. Why?] (англ.). WindowsITPro (21 April 2009). Проверено 19 июня 2010. [www.webcitation.org/68ojwt3Bp Архивировано из первоисточника 1 июля 2012].
  6. 1 2 Shimpi, Anand Lal. (2009-03-18). p. 7.
  7. 1 2 Shimpi, Anand Lal. (2009-03-18). p. 5.
  8. Shimpi, Anand Lal. (2009-03-18). p. 8.
  9. [www.extremetech.com/article2/0,2845,2329594,00.asp Write Amplification: Intel’s Secret Sauce]
  10. [www.tomshardware.com/reviews/Intel-x25-m-SSD,2012-5.html Inside the X25-M Controller: Wear Leveling, Write Amplification Control]
  11. 1 2 Shimpi, Anand Lal. (2009-03-18). p. 6.
  12. [techgage.com/article/too_trim_when_ssd_data_recovery_is_impossible Too TRIM? When SSD Data Recovery is Impossible] (англ.). TechGage. TechGage (5 March 2010). Проверено 16 апреля 2010. [www.webcitation.org/68ojxgVUI Архивировано из первоисточника 1 июля 2012].
  13. Gareth Halfacree. [www.bit-tech.net/news/hardware/2010/03/23/intel-releases-trim-for-raid/1 Intel release TRIM for RAID] (англ.). bit-tech.net (23 March 2010). Проверено 2 ноября 2010. [www.webcitation.org/68ojyUA0T Архивировано из первоисточника 1 июля 2012].
  14. [blogs.msdn.com/e7/archive/2009/05/05/support-and-q-a-for-solid-state-drives-and.aspx Support and Q&A for Solid-State Drives] (англ.). MSDN (9 May 2009). Проверено 2010-08-12]. [www.webcitation.org/68ojzSxJG Архивировано из первоисточника 1 июля 2012].
  15. [download.microsoft.com/download/F/A/7/FA70E919-8F82-4C4E-8D02-97DB3CF79AD5/COR-T558_Shu_Taiwan.pdf Windows 7 Enhancements for Solid-State Drives] (англ.). Microsoft downloads. Microsoft Corporation (12 November 2008). Проверено 8 июля 2009. [www.webcitation.org/68ok0ShNC Архивировано из первоисточника 1 июля 2012].
  16. [windowsitpro.com/article/articleid/101966/q-what-is-the-trim-function-for-solid-state-disks-ssds-and-why-is-it-important.html Q. What is the TRIM function for solid state disks (SSDs) and why is it important?] (англ.)(недоступная ссылка — история). Windows IT Pro. Проверено 1 сентября 2010. [web.archive.org/20100102014124/windowsitpro.com/article/articleid/101966/q-what-is-the-trim-function-for-solid-state-disks-ssds-and-why-is-it-important.html Архивировано из первоисточника 2 января 2010].
  17. [kernelnewbies.org/Linux_2_6_33#head-b9b8a40358aaef60a61fcf12e9055900709a1cfb Trim on Linux] (англ.). Kernel Newbies. Проверено 1 сентября 2010. [www.webcitation.org/68ok0wDgp Архивировано из первоисточника 1 июля 2012].
  18. [www.c0t0d0s0.org/archives/6792-SATA-TRIM-support-in-Opensolaris.html SATA TRIM support in OpenSolaris] (29 июля 2010). [www.webcitation.org/68ok1OipR Архивировано из первоисточника 1 июля 2012].
  19. [svnweb.freebsd.org/base?view=revision&revision=216796 SVN revision 216796] (29 декабря 2010). [www.webcitation.org/68ok2Nd9H Архивировано из первоисточника 1 июля 2012].
  20. [svnweb.freebsd.org/base?view=revision&revision=240868 SVN revision 240868] (23 сентября 2012). [www.webcitation.org/6BgfVTDTy Архивировано из первоисточника 26 октября 2012].
  21. [freebsd.1045724.n5.nabble.com/TRIM-clustering-tt4360722.html#a4373359 TRIM clustering] (5 мая 2011). [www.webcitation.org/68ok2peOA Архивировано из первоисточника 1 июля 2012].
  22. Daniel Eran Dilger. [www.appleinsider.com/articles/11/03/04/apples_macbook_pros_ship_with_active_ssd_trim_support_in_snow_leopard.html Apple's MacBook Pros ship with active SSD TRIM support in Snow Leopard] (англ.). appleinsider.com (4 March 2011). Проверено 7 марта 2011. [www.webcitation.org/68ok3MsWz Архивировано из первоисточника 1 июля 2012].
  23. [download.intel.com/design/flash/nand/mainstream/Intel_SSD_Optimizer_White_Paper.pdf Intel SSD Optimizer White Paper] (англ.) (pdf). Intel Corporation. Проверено 23 января 2010. [www.webcitation.org/68ok472Dk Архивировано из первоисточника 1 июля 2012].
  24. [www.xtremesystems.org/forums/showthread.php?p=3784347 wiper.exe for Falcon Series] (англ.). XtremeSystems. Проверено 23 января 2010. [www.webcitation.org/68ok4e1oW Архивировано из первоисточника 1 июля 2012].
  25. [lists.freebsd.org/pipermail/freebsd-current/2011-December/030714.html Note for SCSI UNMAP support in FreeBSD mailing list]. [www.webcitation.org/68ok5Z2bP Архивировано из первоисточника 1 июля 2012].

Ссылки

  • Louis Gerbarg. [www.devwhy.com/blog/2009/8/4/from-write-down-to-the-flash-chips.html From write() down to the flash chips] (англ.). devwhy.com (4 August 2009). — Описание принципа удаления неиспользуемых данных. Проверено 24 ноября 2010. [www.webcitation.org/67wp3nW0B Архивировано из первоисточника 26 мая 2012].
  • Nathan Edwards. [www.maximumpc.com/article/features/white_paper_trim_command White Paper: The TRIM Command] (англ.). Maximum PC (2 December 2009). — Описание команды. Проверено 24 ноября 2010. [www.webcitation.org/67wp4edGe Архивировано из первоисточника 26 мая 2012].

Отрывок, характеризующий TRIM

«Le cosaque ignorant la compagnie dans laquelle il se trouvait, car la simplicite de Napoleon n'avait rien qui put reveler a une imagination orientale la presence d'un souverain, s'entretint avec la plus extreme familiarite des affaires de la guerre actuelle», [Казак, не зная того общества, в котором он находился, потому что простота Наполеона не имела ничего такого, что бы могло открыть для восточного воображения присутствие государя, разговаривал с чрезвычайной фамильярностью об обстоятельствах настоящей войны.] – говорит Тьер, рассказывая этот эпизод. Действительно, Лаврушка, напившийся пьяным и оставивший барина без обеда, был высечен накануне и отправлен в деревню за курами, где он увлекся мародерством и был взят в плен французами. Лаврушка был один из тех грубых, наглых лакеев, видавших всякие виды, которые считают долгом все делать с подлостью и хитростью, которые готовы сослужить всякую службу своему барину и которые хитро угадывают барские дурные мысли, в особенности тщеславие и мелочность.
Попав в общество Наполеона, которого личность он очень хорошо и легко признал. Лаврушка нисколько не смутился и только старался от всей души заслужить новым господам.
Он очень хорошо знал, что это сам Наполеон, и присутствие Наполеона не могло смутить его больше, чем присутствие Ростова или вахмистра с розгами, потому что не было ничего у него, чего бы не мог лишить его ни вахмистр, ни Наполеон.
Он врал все, что толковалось между денщиками. Многое из этого была правда. Но когда Наполеон спросил его, как же думают русские, победят они Бонапарта или нет, Лаврушка прищурился и задумался.
Он увидал тут тонкую хитрость, как всегда во всем видят хитрость люди, подобные Лаврушке, насупился и помолчал.
– Оно значит: коли быть сраженью, – сказал он задумчиво, – и в скорости, так это так точно. Ну, а коли пройдет три дня апосля того самого числа, тогда, значит, это самое сражение в оттяжку пойдет.
Наполеону перевели это так: «Si la bataille est donnee avant trois jours, les Francais la gagneraient, mais que si elle serait donnee plus tard, Dieu seul sait ce qui en arrivrait», [«Ежели сражение произойдет прежде трех дней, то французы выиграют его, но ежели после трех дней, то бог знает что случится».] – улыбаясь передал Lelorgne d'Ideville. Наполеон не улыбнулся, хотя он, видимо, был в самом веселом расположении духа, и велел повторить себе эти слова.
Лаврушка заметил это и, чтобы развеселить его, сказал, притворяясь, что не знает, кто он.
– Знаем, у вас есть Бонапарт, он всех в мире побил, ну да об нас другая статья… – сказал он, сам не зная, как и отчего под конец проскочил в его словах хвастливый патриотизм. Переводчик передал эти слова Наполеону без окончания, и Бонапарт улыбнулся. «Le jeune Cosaque fit sourire son puissant interlocuteur», [Молодой казак заставил улыбнуться своего могущественного собеседника.] – говорит Тьер. Проехав несколько шагов молча, Наполеон обратился к Бертье и сказал, что он хочет испытать действие, которое произведет sur cet enfant du Don [на это дитя Дона] известие о том, что тот человек, с которым говорит этот enfant du Don, есть сам император, тот самый император, который написал на пирамидах бессмертно победоносное имя.
Известие было передано.
Лаврушка (поняв, что это делалось, чтобы озадачить его, и что Наполеон думает, что он испугается), чтобы угодить новым господам, тотчас же притворился изумленным, ошеломленным, выпучил глаза и сделал такое же лицо, которое ему привычно было, когда его водили сечь. «A peine l'interprete de Napoleon, – говорит Тьер, – avait il parle, que le Cosaque, saisi d'une sorte d'ebahissement, no profera plus une parole et marcha les yeux constamment attaches sur ce conquerant, dont le nom avait penetre jusqu'a lui, a travers les steppes de l'Orient. Toute sa loquacite s'etait subitement arretee, pour faire place a un sentiment d'admiration naive et silencieuse. Napoleon, apres l'avoir recompense, lui fit donner la liberte, comme a un oiseau qu'on rend aux champs qui l'ont vu naitre». [Едва переводчик Наполеона сказал это казаку, как казак, охваченный каким то остолбенением, не произнес более ни одного слова и продолжал ехать, не спуская глаз с завоевателя, имя которого достигло до него через восточные степи. Вся его разговорчивость вдруг прекратилась и заменилась наивным и молчаливым чувством восторга. Наполеон, наградив казака, приказал дать ему свободу, как птице, которую возвращают ее родным полям.]
Наполеон поехал дальше, мечтая о той Moscou, которая так занимала его воображение, a l'oiseau qu'on rendit aux champs qui l'on vu naitre [птица, возвращенная родным полям] поскакал на аванпосты, придумывая вперед все то, чего не было и что он будет рассказывать у своих. Того же, что действительно с ним было, он не хотел рассказывать именно потому, что это казалось ему недостойным рассказа. Он выехал к казакам, расспросил, где был полк, состоявший в отряде Платова, и к вечеру же нашел своего барина Николая Ростова, стоявшего в Янкове и только что севшего верхом, чтобы с Ильиным сделать прогулку по окрестным деревням. Он дал другую лошадь Лаврушке и взял его с собой.


Княжна Марья не была в Москве и вне опасности, как думал князь Андрей.
После возвращения Алпатыча из Смоленска старый князь как бы вдруг опомнился от сна. Он велел собрать из деревень ополченцев, вооружить их и написал главнокомандующему письмо, в котором извещал его о принятом им намерении оставаться в Лысых Горах до последней крайности, защищаться, предоставляя на его усмотрение принять или не принять меры для защиты Лысых Гор, в которых будет взят в плен или убит один из старейших русских генералов, и объявил домашним, что он остается в Лысых Горах.
Но, оставаясь сам в Лысых Горах, князь распорядился об отправке княжны и Десаля с маленьким князем в Богучарово и оттуда в Москву. Княжна Марья, испуганная лихорадочной, бессонной деятельностью отца, заменившей его прежнюю опущенность, не могла решиться оставить его одного и в первый раз в жизни позволила себе не повиноваться ему. Она отказалась ехать, и на нее обрушилась страшная гроза гнева князя. Он напомнил ей все, в чем он был несправедлив против нее. Стараясь обвинить ее, он сказал ей, что она измучила его, что она поссорила его с сыном, имела против него гадкие подозрения, что она задачей своей жизни поставила отравлять его жизнь, и выгнал ее из своего кабинета, сказав ей, что, ежели она не уедет, ему все равно. Он сказал, что знать не хочет о ее существовании, но вперед предупреждает ее, чтобы она не смела попадаться ему на глаза. То, что он, вопреки опасений княжны Марьи, не велел насильно увезти ее, а только не приказал ей показываться на глаза, обрадовало княжну Марью. Она знала, что это доказывало то, что в самой тайне души своей он был рад, что она оставалась дома и не уехала.
На другой день после отъезда Николушки старый князь утром оделся в полный мундир и собрался ехать главнокомандующему. Коляска уже была подана. Княжна Марья видела, как он, в мундире и всех орденах, вышел из дома и пошел в сад сделать смотр вооруженным мужикам и дворовым. Княжна Марья свдела у окна, прислушивалась к его голосу, раздававшемуся из сада. Вдруг из аллеи выбежало несколько людей с испуганными лицами.
Княжна Марья выбежала на крыльцо, на цветочную дорожку и в аллею. Навстречу ей подвигалась большая толпа ополченцев и дворовых, и в середине этой толпы несколько людей под руки волокли маленького старичка в мундире и орденах. Княжна Марья подбежала к нему и, в игре мелкими кругами падавшего света, сквозь тень липовой аллеи, не могла дать себе отчета в том, какая перемена произошла в его лице. Одно, что она увидала, было то, что прежнее строгое и решительное выражение его лица заменилось выражением робости и покорности. Увидав дочь, он зашевелил бессильными губами и захрипел. Нельзя было понять, чего он хотел. Его подняли на руки, отнесли в кабинет и положили на тот диван, которого он так боялся последнее время.
Привезенный доктор в ту же ночь пустил кровь и объявил, что у князя удар правой стороны.
В Лысых Горах оставаться становилось более и более опасным, и на другой день после удара князя, повезли в Богучарово. Доктор поехал с ними.
Когда они приехали в Богучарово, Десаль с маленьким князем уже уехали в Москву.
Все в том же положении, не хуже и не лучше, разбитый параличом, старый князь три недели лежал в Богучарове в новом, построенном князем Андреем, доме. Старый князь был в беспамятстве; он лежал, как изуродованный труп. Он не переставая бормотал что то, дергаясь бровями и губами, и нельзя было знать, понимал он или нет то, что его окружало. Одно можно было знать наверное – это то, что он страдал и, чувствовал потребность еще выразить что то. Но что это было, никто не мог понять; был ли это какой нибудь каприз больного и полусумасшедшего, относилось ли это до общего хода дел, или относилось это до семейных обстоятельств?
Доктор говорил, что выражаемое им беспокойство ничего не значило, что оно имело физические причины; но княжна Марья думала (и то, что ее присутствие всегда усиливало его беспокойство, подтверждало ее предположение), думала, что он что то хотел сказать ей. Он, очевидно, страдал и физически и нравственно.
Надежды на исцеление не было. Везти его было нельзя. И что бы было, ежели бы он умер дорогой? «Не лучше ли бы было конец, совсем конец! – иногда думала княжна Марья. Она день и ночь, почти без сна, следила за ним, и, страшно сказать, она часто следила за ним не с надеждой найти призкаки облегчения, но следила, часто желая найти признаки приближения к концу.
Как ни странно было княжне сознавать в себе это чувство, но оно было в ней. И что было еще ужаснее для княжны Марьи, это было то, что со времени болезни ее отца (даже едва ли не раньше, не тогда ли уж, когда она, ожидая чего то, осталась с ним) в ней проснулись все заснувшие в ней, забытые личные желания и надежды. То, что годами не приходило ей в голову – мысли о свободной жизни без вечного страха отца, даже мысли о возможности любви и семейного счастия, как искушения дьявола, беспрестанно носились в ее воображении. Как ни отстраняла она от себя, беспрестанно ей приходили в голову вопросы о том, как она теперь, после того, устроит свою жизнь. Это были искушения дьявола, и княжна Марья знала это. Она знала, что единственное орудие против него была молитва, и она пыталась молиться. Она становилась в положение молитвы, смотрела на образа, читала слова молитвы, но не могла молиться. Она чувствовала, что теперь ее охватил другой мир – житейской, трудной и свободной деятельности, совершенно противоположный тому нравственному миру, в который она была заключена прежде и в котором лучшее утешение была молитва. Она не могла молиться и не могла плакать, и житейская забота охватила ее.