Ці можна эфектыўна выкарыстоўваць SSD без падтрымкі TRIM?

Вынесены намі ў загаловак пытанне даволі часта займае розумы сістэмных адміністратараў

Вынесены намі ў загаловак пытанне даволі часта займае розумы сістэмных адміністратараў. Сапраўды, што лепш, сабраць з цвёрдацельных дыскаў RAID масіў, але страціць падтрымку TRIM, або адмовіцца ад адмоваўстойлівасці на карысць высокай прадукцыйнасці? Сітуацыя пагаршаецца яшчэ і тым, што нямногія рэальна ўяўляюць сабе механізмы ўнутранай працы SSD і арыентуюцца больш на маркетынгавыя матэрыялы, чым на рэальную тэхнічную неабходнасць.

Асноўны міф датычна SSD такі: на сістэмах без падтрымкі TRIM прадукцыйнасць SSD будзе імкліва дэградаваць. Чаму і як гэта адбываецца звычайна не паведамляецца, без TRIM будзе дрэнна і кропка. У той жа час большасць серверных канфігурацый дыскавай падсістэмы TRIM не падтрымліваюць, альбо падтрымліваюць, але ў вельмі абмежаваным аб'ёме. Пры гэтым некаторую дзіўнасць выклікае тое, што ні вытворцы жалеза, ні вытворцы софту не спяшаюцца з гэтай "праблемай" што-небудзь рабіць.

Каб зразумець, для чаго патрэбен TRIM і што гэта, разадзьмуты маркетолагамі тэрмін або жыццёвая неабходнасць, разбярэмся як працуе SSD. Мы не будзем удавацца ў тэхнічныя падрабязнасці і свядома спросцім мадэль да ўзроўню дастатковай для разумення працэсаў, якія адбываюцца.

Першапачаткова ўспомнім, як успрымаюць дыск розныя падсістэмы ПК, якія ўдзельнічаюць у працы з ім. Прыкладання і АС ўзаемадзейнічаюць з файлавай сістэмай, працуючы на ​​ўзроўні кластараў і табліцы файлаў. Пра тое, што знаходзіцца ніжэй АС не мае ніякага ўяўлення. Файлавая сістэма ўспрымае дыск як некаторы блокавае прылада стандартнага фармату, таксама не моцна ўнікаючы ў яго ўнутраную сутнасць, аддаючы ўсе пытанні на водкуп драйверу кантролера запамінальных прылад. Той, у сваю чаргу, успрымае дыск як некаторы LBA-прылада, не ведаючы яго ўнутранай структуры. Пра тое, як менавіта канфігурацыя LBA адпавядае фізічнай канфігурацыі прылады ведае толькі кантролер дыска, які ў сваю чаргу не мае ні найменшага падання аб файлах, раздзелах, кластарах і да т.п.

Фізічна прастору SSD дзеліцца на старонкі, якія з'яўляюцца мінімальна адрасаванай участкам памяці, для таго, каб змяніць вочка памяці, неабходна лічыць старонку, змяніць у ёй неабходныя дадзеныя і запісаць яе на ранейшае месца. Тут узнікае першая складанасць, у адрозненне ад HDD, у SSD пісаць можна толькі ў загадзя вычышчаныя вочка. Пры гэтым тэхнічна ачысціць асобную старонку нельга, ачыстцы падвяргаюцца толькі групы старонак, якія аб'ядноўваюцца ў блокі.

Памеры старонак і блокаў залежаць ад канфігурацыі памяці канкрэтнага SSD, але, як тыповае, можна прыняць значэнне 4 КБ для старонкі і 512 КБ для блока. А цяпер уявім, што мы адкрылі файл і змянілі ў ім 100 байт дадзеных. Для HDD праблемы няма, ён лічыць патрэбны сектар (512 байт), зменіць дадзеныя і перазапіша яго. У рэальнасці будзе ўсё крыху па-іншаму, так як мінімальна адрасаванай прасторай ФС з'яўляецца кластар, то HDD перазапіша адпаведную колькасць сектараў, але ніякіх дадатковых накладных расходаў гэта не выкліча.

А вось SSD не можа ўзяць і проста так запісаць змененыя дадзеныя. Для гэтага яму спатрэбіцца лічыць кудысьці ўвесь блок, ачысціць яго і вярнуць усе дадзеныя назад. Таму замест змены і запісы 4 КБ дадзеных SSD прыйдзецца запісаць 512 КБ дадзеных, што не самым лепшым чынам адаб'ецца на рэсурсе вочак. Акрамя таго, аперацыя сцірання вочак досыць павольная, у параўнанні з запісам у чыстыя вочкі і менавіта неабходнасцю сцірання перад запісам тлумачыцца дэградацыя прадукцыйнасці SSD.

Каб вырашыць гэтую праблему ў SSD ўжываецца алгарытм "капіраванне пры запісе". Сутнасць яго заключаецца ў наступным: пры неабходнасці запісы ўжо існуючай старонкі, яна капіюецца ў вольныя вочкі, а сама пазначаецца як даступная да ачыстцы.

Гэта дазваляе SSD адразу запісваць змененыя дадзеныя, не выклікаючы кожны раз працэдуру ачысткі і ня перезаписывая астатнія дадзеныя блока Гэта дазваляе SSD адразу запісваць змененыя дадзеныя, не выклікаючы кожны раз працэдуру ачысткі і ня перезаписывая астатнія дадзеныя блока. Гэта будзе працягвацца да таго часу, пакуль не скончацца вольныя вочкі.

Нескладана заўважыць, што праз некаторы час на дыску ўперамешку апынуцца свабодныя, занятыя і даступныя да ачыстцы старонкі. Тут уступае ў дзеянне алгарытм ўнутранай аптымізацыі, названы "зборкай смецця". Ён перамяшчае дадзеныя на SSD такім чынам, каб згрупаваць даступныя да ачыстцы старонкі ў асобныя блокі і ачысціць іх.

Ён перамяшчае дадзеныя на SSD такім чынам, каб згрупаваць даступныя да ачыстцы старонкі ў асобныя блокі і ачысціць іх

Менавіта ад эфектыўнасці дадзенага механізму залежыць, як доўга дыск зможа падтрымліваць высокую прадукцыйнасць пры інтэнсіўнай запісу на яго. Асноўная ўмова высокай хуткасці запісу на SSD - гэта наяўнасць свабодных вочак. Эфектыўнасць алгарытму уборкі смецця адказвае за тое, як хутка даступныя да ачыстцы вочкі будуць станавіцца свабоднымі.

З-за чаго надыходзіць дэградацыя? Ад таго, што вольныя вочкі канчаюцца, напрыклад, мы цалкам запоўнілі прастору дыска. У гэтым выпадку ў SSD ўсё роўна застаецца прастора для манэўру ў выглядзе рэзервовай вобласці, якая прызначана для замены якія выйшлі са строю вочак, але дастатковай колькасці свабодных старонак можа не апынуцца і там. Насуперак яшчэ аднаму ходкаму думку, рэзервовая вобласць SSD выкарыстоўваецца заўсёды, гэта робіцца ў мэтах выраўноўвання нагрузкі, проста яна недаступная для размяшчэння карыстацкіх дадзеных.

Калі памер рэзервовай вобласці невялікі, а інтэнсіўнасць запісу высокая, то зборшчык смецця будзе не паспяваць эфектыўна чысціць блокі, і мы атрымаем дэградацыю прадукцыйнасці дыска.

Заўважце, мы да гэтага часу ні словам не абмовіліся аб камандзе TRIM. Можа быць гэта нейкая перадавая тэхналогія, уключэнне якой дапаможа рэзка змяніць сітуацыю? На жаль няма! Для чаго тады патрэбен TRIM?

Зноў самы час успомніць, што файлавая сістэма не мае не найменшага падання аб фізічным размяшчэнні дадзеных на носьбіце, гэта прэрагатыва кантролера дыска. Таму выдаленне файла ў сучасных файлавых сістэмах фізічна не адбываецца, выдаляецца толькі запіс у табліцы файлаў, пасля чаго дадзенае месца лічыцца свабодным. Пры гэтым самі дадзеныя будуць знаходзіцца на дыску да таго часу, пакуль не будуць перазапісаны. Пры гэтым файлавая сістэма ніяк не паведамляе кантролеру аб такіх дадзеных, і ён працягвае лічыць гэтыя вочкі занятымі. У SSD гэта прывядзе да сітуацыі аналагічнай таго, калі дыск цалкам запоўнены, хоць з пункту гледжання ФС там шмат вольнага месца і яна будзе спрабаваць пісаць туды.

У гэтым выпадку SSD будзе цалкам счытваць блок у памяць, чысціць яго і зноўку запісваць змененыя дадзеныя.

А як жа тэхналогія зборкі смецця? А ніяк, таму што прыбіраць ёй няма чаго. Гэтыя вочкі вольныя толькі з пункту гледжання файлавай сістэмы, з пункту гледжання кантролера дыска ў іх запісаныя дадзеныя. Зразумець, што гэтую старонку можна чысціць дыск зможа толькі тады, калі сістэма туды што-небудзь запісаць, а для таго, каб хутка выканаць запіс патрэбныя вольныя вочкі.

Для таго, каб файлавая сістэма паведаміла кантролеру, што гэтыя дадзеныя выдалены і прыдумалі каманду TRIM, яе задача - пазначыць старонкі з выдаленымі дадзенымі як даступныя да ачыстцы, а далей у справу ўступіць усё той-жа зборшчык смецця.

Такім чынам каманда TRIM ніяк не ўплывае на прадукцыйнасць SSD, калі вы запоўнілі дыск практычна цалкам, то атрымаеце дэградацыю прадукцыйнасці што з падтрымкай TRIM, што без. Калі вы выдаліце ​​файлы і нават прымусова пашлеце каманду TRIM - цуда не будзе, прадукцыйнасць будзе заставацца нізкай да таго часу, пакуль зборшчык смецця не ачысціць дастаткова свабодных вочак.

Калі мы размесцім на SSD базу дадзеных або віртуальны жорсткі дыск і будзем актыўна працаваць з імі, то ніякай TRIM нам не патрэбны. Калі на дыску дастаткова свабодных вочак і эфектыўна працуе зборшчык смецця - прадукцыйнасць будзе падтрымлівацца на высокім узроўні. Падзенне прадукцыйнасці адбудзецца толькі тады, калі колькасць вольных вочак паменшыцца і зборшчык смецця не будзе паспяваць чысціць іх у неабходнай колькасці. Гэта можа адбыцца пры выкарыстанні усяго даступнага прасторы дыска і TRIM на гэта ніяк паўплываць не можа.

Каманда TRIM, у першую чаргу, прызначана для настольных сістэм і сістэмных раздзелаў, дзе файлы актыўна ствараюцца і выдаляюцца, у большасці серверных сцэнараў, дзе ідзе змена ўжо запісаных дадзеных, неабходнасці ў ёй няма.

Тут самы час успомніць пра карпаратыўныя серыі SSD, якія часта не бліскаюць прадукцыйнасцю, але затое прапануюць высокую надзейнасць і падтрымліваюць эфектыўную працу нават без падтрымкі TRIM. За кошт чаго гэта адбываецца? За кошт большага памеру рэзервовай вобласці. Гэта дазваляе заўсёды мець дастатковы запас свабодных вочак і дабратворна адбіваецца на эфектыўнасці працы зборшчыка смецця. Так як карыстальнік не можа непасрэдна пісаць у рэзервовую вобласць, то ў ёй могуць быць старонкі толькі трох відаў: свабодныя, занятыя і даступныя да ачыстцы. Занятых старонак, якія ФС лічыць свабоднымі, там быць не можа.

Звычайныя SSD маюць памер рэзервовай вобласці ў 6-7% ад ёмістасці дыска, гэтага памеру відавочна недастаткова для падтрымання высокай прадукцыйнасці, карпаратыўныя дыскі маюць значна большы аб'ём рэзервовай вобласці, што наўпрост адбіваецца на іх кошту. Гэта дазваляе ім паменшыць знос кожнай даступнай карыстальніку вочкі і эфектыўна працаваць у RAID-масівах без падтрымкі TRIM. Хоць калі вы запоўніце цвёрдацельны назапашвальнік "пад завязку", то ніякай TRIM вам не дапаможа.

А што рабіць уладальнікам звычайных або "карпаратыўных" бюджэтных дыскаў? Адказ просты - забяспечыць дыск дастатковай колькасцю свабодных вочак. Самы просты спосаб зрабіць гэта - размеціць не ўсю даступную ёмістасць дыска. Як паказвае практыка - рэзерв у 20-25% ёмістасці назапашвальніка дазваляе эфектыўна выкарыстоўваць нават цалкам запоўнены дыск без падтрымкі каманды TRIM.

Каб пераканацца ў гэтым, мы правялі невялікі эксперымент. Ўзялі стары SSD OCZ Agility 2 <OCZSSD2-2AGTE60G>, алгарытмы прыбіральніка смецця якога ў разы саступаюць сучасным алгарытмах, цалкам запоўнілі яго на сістэме без падтрымкі TRIM, затым яшчэ раз зрабілі тое ж самае, толькі стварыўшы "рэзервовую вобласць" ў 25% ёмістасці назапашвальніка.

Такім чынам, дыск ачышчаны пры дапамозе каманды Secure Erase фірмовай утылітай і ўсе яго вочкі з'яўляюцца свабоднымі. Здымаем паказчыкі хуткадзейнасці пры дапамозе AS SSD Benchmark.

сінтэтыка:

Сцэнары рэальнага выкарыстання:

Прадукцыйнасць дадзенага SSD, па сучасных мерках, вядома невялікая, але нас цікавяць не абсалютныя колькасці, а захаванне прадукцыйнасці пры працы ў цяжкіх умовах, у гэтым выпадку выкарыстанне старой мадэлі нават цікавей, калі справіцца яна, то сучасныя дыскі, з больш дасканалымі алгарытмамі уборкі смецця , справяцца тым больш.

Пасля чаго мы падключылі яго да виртуалке пад кіраваннем Windows Server 2003 і цалкам запоўнілі, затым выдалілі ўсе дадзеныя і вярнулі назад. Нягледзячы на ​​тое, што Windows 8.1, у якой мы вырабляем замеры, ёсць падтрымка TRIM - гэта ні на што не ўплывае, так як прымусова дадзеную каманду ніхто не пасылаў, а Windows 8.1 зробіць гэта не раней, чым запіша і выдаліць дадзеныя і тое, толькі для гэтых старонак.

Дэградацыя прадукцыйнасці на твар:

Прасяданне прадукцыйнасці ад 20 да 50% у сінтэтыкі і 30-35% у сцэнарах: Прасяданне прадукцыйнасці ад 20 да 50% у сінтэтыкі і 30-35% у сцэнарах:

Зараз зноў выканаем Secure Erase і размеціць не ўсе прастору дыска, вылучыўшы пад рэзерв 25%: Зараз зноў выканаем Secure Erase і размеціць не ўсе прастору дыска, вылучыўшы пад рэзерв 25%:

Важна! Перад тым як зрабіць перадзел цвёрдацельны дыск яго варта цалкам ачысціць ад дадзеных пры дапамозе фірмовай утыліты для таго, каб у рэзервовую вобласць трапілі толькі вольныя вочкі. Калі проста выдаліць разметку і выканаць яе зноўку або змяніць межы раздзелаў, то гэта не дасць жаданага эфекту.

Затым зноў запоўнім дыск у асяроддзі Windows Server 2003 і выдалім дадзеныя, пасля чаго яшчэ раз выканаем тэст:

Затым зноў запоўнім дыск у асяроддзі Windows Server 2003 і выдалім дадзеныя, пасля чаго яшчэ раз выканаем тэст:

Дыск ўпэўнена трымае прадукцыйнасць, так як свабодных вочак для запісу дастаткова, нягледзячы на ​​тое, што быў запоўнены цалкам і з пункту гледжання кантролера SSD свабодных вочак у даступнай карыстальніку часткі дыска няма.

Якія высновы варта зрабіць з гэтага матэрыялу? Нягледзячы на ​​тое, што ў свядомасці многіх TRIM з'яўляецца ці ледзь не панацэяй і абавязковы да прымянення, на прадукцыйнасць дыска ён не ўплывае. Гэта ўсяго толькі спосаб зрабіць працу прыбіральніка смецця больш эфектыўнай. На прадукцыйнасць дыска ўплывае толькі тое, якая колькасць свабодных вочак ёсць у наяўнасці і іх дастатковасці для абслугоўвання бягучых аперацый запісу.

За тое, з якой хуткасцю дыск і як эфектыўна дыск здольны чысціць блокі, адказвае прыбіральнік смецця. Больш эфектыўны алгарытм прыбіральніка дазваляе выкарыстоўваць меншы памер рэзервовай вобласці.

Таксама варта памятаць, што ў большасці серверных сцэнараў каманда TRIM проста не патрабуецца, таму калі выбіраць даводзіцца паміж RAID без TRIM або адзіночны дыск з TRIM, выбіраць варта першае. Тым больш, што забяспечыць высокую прадукцыйнасць дыска нескладана самастойна.

Выкарыстанне адзіночнага дыска з больш частым бэкапу таксама дапушчальна, але такое рашэнне прымаецца, як правіла, па эканамічных меркаваннях.

Сапраўды, што лепш, сабраць з цвёрдацельных дыскаў RAID масіў, але страціць падтрымку TRIM, або адмовіцца ад адмоваўстойлівасці на карысць высокай прадукцыйнасці?
З-за чаго надыходзіць дэградацыя?
Можа быць гэта нейкая перадавая тэхналогія, уключэнне якой дапаможа рэзка змяніць сітуацыю?
Для чаго тады патрэбен TRIM?
А як жа тэхналогія зборкі смецця?
За кошт чаго гэта адбываецца?
А што рабіць уладальнікам звычайных або "карпаратыўных" бюджэтных дыскаў?
Якія высновы варта зрабіць з гэтага матэрыялу?