TRIM

Comanda que permet a un sistema operatiu optimitzar l'accés a un SSD From Wikipedia, the free encyclopedia

Remove ads

La comanda trim (conegut com a TRIM en el ATA command set, i UNMAP en el SCSI command set) permet a un sistema operatiu d'informar a una unitat d'estat sòlid (SSD) de quins blocs de dades ja no es consideren en ús i es poden netejar internament.[1]

TRIM es va introduir poc després que els SSD apareguessin. A causa que l'operació de baix nivell dels SSD difereix significativament dels discs durs, la forma típica en què els sistemes operatius manegen operacions com les eliminacions i els formats va donar lloc a una degradació del rendiment progressiva i inesperada de les operacions d'escriptura en els SSD.[2] El trimming permet al SSD de gestionar més eficientment la Recollida d'Escombraries, que si no alentiria les operacions d'escriptura futures als blocs implicats.[3]

Tot i que les eines per "resetejar" alguns discos a un estat "net" ja estaven disponibles abans de la introducció del trimming, també eliminaven totes les dades del disc, cosa que les feia poc pràctiques per utilitzar per una optimització constant.[4] En 2014, molts discos SSD tenien mecanismes de recollida d'escombraries de fons interns que treballaven independentment del trimming. Encara que aquest va mantenir amb èxit el seu rendiment fins i tot en sistemes operatius que no van donar suport al TRIM, tenia els inconvenients associats de l'augment de l'amplificació d'escriptura i el desgast de les cel·les flaix.[5]

Remove ads

Qüestions específiques d'unitat de flash

A causa de la forma en què molts sistemes d'arxius manegen operacions d'eliminació, marcant els blocs de dades com "fora d'ús",[6][7] mitjans d'emmagatzematge (discs SSD, sinó també discos durs tradicionals) en general no saben quins sectors / pàgines estan realment en ús i que pot considerar l'espai lliure. Al contrari de, per exemple, una operació de sobreescriptura, una eliminació no implicarà una escriptura física dels sectors que contenen les dades. Ja que un SSD comú no té coneixement de les estructures del sistema d'arxius, incloent la llista dels no utilitzats blocs / sectors, el mitjà d'emmagatzematge no és conscient que els blocs s'han fet disponibles. Si bé això permet sovint eines de "recuperació" a recuperar arxius de discs durs electromecànics,[7][8] tot i els arxius que es presenten com "eliminats" pel sistema operatiu, sinó que també significa que quan el sistema operatiu posterior porta a terme una operació d'escriptura en un dels sectors, que considera espai lliure, aquest es converteix efectivament en una operació de sobreescriptura des del punt de vista del medi d'emmagatzematge. Per als discs magnètics això no és diferent a escriure un sector buit, però a causa de com funcionen algunes unitats SSD en el nivell més baix, un sobreescriptura produeix una sobrecàrrega significativa en comparació amb l'escriptura de dades en una pàgina en blanc, el que potencialment paralitza el rendiment de l'escriptura.[7][9] emmagatzemar dades SSD en les cèl·lules de memòria flaix que s'agrupen en pàgines típicament de 4 a 16 kB, agrupats en blocs de típicament 128 a 512 pàgines, per exemple, 512 kB per bloc amb pàgines de 4 KB en 128 pàgines blocs.[6][10] memòria flash NAND cèl·lules només es pot escriure directament a quan estan buits. Si ells poden contenir dades, els continguts han de ser esborrats abans d'una operació d'escriptura. Una operació d'escriptura SSD es pot fer en una sola pàgina, però, a causa de les limitacions de maquinari, comandaments d'esborrar sempre afecten blocs sencers;[10] en conseqüència, l'escriptura de dades en les pàgines buides en un SSD és molt ràpid, però s'alenteix considerablement una vegada que les pàgines escrites amb anterioritat han de ser sobrescrites. Atès que es necessita un procés d'esborrat de les cèl·lules a la pàgina abans que es pogui escriure de nou, però només es pot esborrar blocs sencers, una sobreescriptura iniciarà un cicle de lectura-esborrat-modificació-escriptura:[6][11] el contingut de tot el bloc s'emmagatzemen a la memòria cau, a continuació, tot el bloc s'esborra de la SSD, la pàgina sobreescriu s'escriu al bloc de memòria cau, i només llavors es pot tot el bloc actualitzat pot escriure al medi flaix. Aquest fenomen es coneix com amplificació d'escriptura .[12][13]

Remove ads

Operació

La comanda TRIM permet a un sistema operatiu notificar a la SSD les pàgines que ja no contenen dades vàlides. Per a una operació d'eliminació de l'arxius, el sistema operatiu marcarà els sectors arxius lliures per a noves dades, a continuació, enviarà una comanda TRIM per al SSD. Després del trimming, el SSD no conservarà cap contingut del bloc quan escrigui noves dades en una pàgina de memòria flash, el que resulta en menys d'amplificació d'escriptura (un menor nombre d'escriptures), un major rendiment d'escriptura (sense necessitat d'una seqüència de lectura i esborrat de modificar), augmentant així la vida de la unitat.

Diferents unitats SSD implementen la comanda de una manera una mica diferent, de manera que el rendiment pot variar.[3][8]

Trim de forma irreversible esborra les dades, sense possibilitats de recuperació.[14] això és la diferència d'una unitat magnètica de la qual les dades eliminades pot recuperar-se.

Remove ads

Implementació

Sistemes operatius suportats

Trimming només és eficaç en sistemes operatius que hi donen suport. La següent taula identifica cada sistema operatiu i la primera versió de prova de la comanda. A més, les unitats d'estat sòlid més antigues, dissenyades abans de l'addició del comando TRIM amb l'estàndard ATA necessitaran actualitzacions de firmware, en cas contrari no es tindrà en compte el nou comandament. No obstant això, no totes les unitats poden ser actualitzades per donar suport trimming.

Més informació Operating System, Supported since ...

Qüestions RAID

A Gener 2017, el suport per la comanda TRIM no està implementat en la majoria de les tecnologies basades en maquinari RAID. No obstant això, les implementacions de programari RAID sovint inclouen suport per TRIM.

Windows:

Windows 10 ofereix suport per TRIM en volums RAID SSD utilitzant l'opció de "optimitzar unitats" en configurar un volum RAID.

Mac OS:

El controlador RAID MacOS no suporta TRIM. Això és cert per a totes les versions de Mac OS X 10.7 fins al MacOS 10.12.x.

TRIM és compatible amb volums quan s'utilitza l'aplicació SoftRAID® de tercers, incloent suport TRIM amb dispositius SSD no són d'Apple RAID (10) i 0,1,4,5.(Nota: TRIM per a dispositius SSD no són d'Apple ha d'estar habilitat específicament amb la comanda terminal "sudo trimforce enable")

Linux:

TRIM està disponible amb volums RAID en comunicats de post-gener-2011 de del nucli de Linux dmraid, que implementa BIOS-assistida "RAID fals maquinari" de suport, i que ara passa a través de totes les sol·licituds de retoc des del sistema d'arxius que es troba en la matriu RAID.[44]

No s'ha de confondre amb dmraid, sistema RAID de programari de propòsit general de Linux, mdraid, que té suport experimental per a (en lloc de en viu, a causa de la supressió de fitxers) basat en lots TRIM en matrius RAID1 quan els sistemes estan configurats perquè periòdicament executi la utilitat mdtrim en sistemes d'arxius (fins i tot els que són com ext3 sense suport TRIM natiu).[45] In later versions of Linux, e.g. Red Hat Enterprise Linux 6.5 and beyond, mdraid supports actually passing through TRIM commands in real-time, rather than just as a batch job.[46]

No obstant això, tingui en compte que Red Hat desaconsella l'ús de nivells de programari RAID1, 4, 5, i 6 en els SSD amb la majoria de les tecnologies RAID, ja que durant la inicialització, la majoria de les utilitats d'administració de RAID (per exemple, de Linux mdadm) escriuen a tots els blocs en els dispositius per assegurar que les sumes de comprovació (o unitat-a-unitat verifica, en el cas de RAID 1/10) funciona correctament, fent que el SSD cregui que tots els blocs que no siguin en l'àrea de recanvi estan en ús, degradan significativament rendiment.[47]

D'altra banda, Red Hat recomana l'ús de RAID1 o RAID 10 per LVMen els SSD, ja que aquests nivells suporten TRIM ("discard" en la terminologia de Linux), i les utilitats de LVM no escriuen a tots els blocs en crear un volum RAID1 o RAID 10.[46]

Per un curt temps al març de 2010, als usuaris se'ls va fer creure que ela drivers Rapid Storage Technology d'Intel (RST) 9.6 soportaven TRIM en volums RAID, però Intel més tard van aclarir que TRIM va ser recolzada per la configuració del BIOS en mode AHCI i RAID, però no si la unitat era part d'un volum RAID.[48]

A partir d'agost de 2012, Intel confirma que els chipsets de la sèrie 7 amb Rapid Storage Technology (RST) 11.2 suporten TRIM per a RAID 0 a Microsoft Windows 7.[49] While Intel did not confirm support for 6-series chipsets, TRIM on RAID 0 volumes has been shown to work on Z68, P67, and X79 chipsets by hardware enthusiasts with a modified RAID option ROM.[50] S'especula que la manca de suport oficial per als xipsets sèrie 6 és a causa dels costos de validació[51] o un intent d'encoratjar als consumidors a actualitzar,[52] més que per raons tècniques.

Una excepció a la necessitat d'una opció en la ROM modificada en les plaques base amb un chipset X79 és si el fabricant ha afegit un interruptor ROM; això implica tant la RST i ROM RST-I dins de la BIOS / UEFI. Això permet que la ROM RST per ser utilitzat en lloc de la ROM RST-I, el que permet TRIM per funcionar.[53] Intel assenyala que el millor rendiment es pot aconseguir mitjançant l'ús d'un conductor amb la mateixa versió que la ROM; per exemple, si la BIOS / UEFI té una opció ROM 11.0.0.0m, un controlador de versió 11.x potser ser utilitzat.[54]

Determinació de sistemes de fitxers no suportats

Quan el sistema de fitxers no admet automàticament TRIM, algunes empreses de serveis públics poden enviar comandaments trimming manualment. En general, ells determinen quins blocs estan lliures i després passen a aquesta llista com una sèrie d'ordres trimming a la unitat. Aquestes utilitats estan disponibles de diversos fabricants (per exemple, Intel,[55] G.Skill),[56] o com a serveis d'utilitat general (per exemple de Linux hdparm des de v9.17,[57][58] o mdtrim, com es va esmentar dalt).

Remove ads

Maquinari que suporta

ATA

Les especificacions de la comanda TRIM[59] s'ha normalitzat com a part de l'estàndard d'interfície AT Attachment (ATA), dirigit pel Comitè Tècnic T13 del Comitè Internacional de Normes de Tecnologia d'Informació (INCITS).[60] TRIM s'implementa sota el comandament DATA SET MANAGEMENT (06h opcode) el projecte d'especificació ACS-2.[61] L'estàndard ATA és recolzada per tant paral·lel (IDE, POTA) i (SATA) maquinari sèria ATA.

Un inconvenient de la comanda original d'ATA TRIM és que es va definir com una ordre no pot anar en cua i, per tant, no pot ser barrejada amb una càrrega de treball normal de les operacions en cua de llegir i escriure. SATA 3.1 va introduir una ordre TRIM en cua per remeiar això.[62]

Hi ha diferents tipus de TRIM definit per les Paraules SATA 69 i 169 que retornen una comanda ATA IDENTIFY DEVICE:

  • TRIM no determinista: Cada comanda de lectura a les Direcció lògica de blocs (LBA) després d'una TRIM pot retornar dades diferents.
  • Determinista TRIM (DRAT): Totes les ordres de lectura a la LBA després d'un TRIM haurà de tornar les mateixes dades, o pot ser determinat.
  • Determinista Lectura Zero després de TRIM (RZAT): Totes les ordres de lectura a la LBA després d'una TRIM tornaran a zero.

Aquí és la informació addicional en paraula SATA 105 que descriu el nombre màxim de blocs de 512 bytes per comandes DATA SET MANAGEMENT que una unitat pot suportar. Normalment el valor predeterminat és 8 (o 4 kB), però moltes unitats redueixen a 1 per complir amb els requisits de maquinari de Microsoft Windows per TRIM, que el temps total d'instrucció no excedirà de 20 ms o 8 ms x (nombre d'entrades d'interval LBA), el que sigui major, i sempre serà inferior a 600 ms.[63]

Un rang LBA individual es diu a una Entrada de Rang LBA i està representat per vuit bytes. El LBA s'expressa per sis primers bytes de l'entrada Rang de LBA i la Longitud Rang és un comptador de base zero (per exemple, 0 = 0 i 1 = 1) representat pels dos bytes restants. Si la longitud de rang de doble byte és zero, llavors l'entrada Rang LBA es descartarà com a afegit.[64] Això vol dir que per cada bloc de 512 bytes de rangs TRIM que el dispositiu suporta, el màxim és de 64 rangs de 32 MB, o 2 GB. Si un dispositiu suporta SATA Paraula 105-8 llavors hauria de ser capaç de retallar 16 GB en un sol comandament TRIM (DATA SET MANAGEMENT).

SCSI

SCSI proporciona la comanda UNMAP (un anàleg ple de TRIM), i la comanda WRITE SAME (10 i 16 variants) amb l'indicador UNMAP.[65]

SD/MMC

La comanda MultiMediaCard and SD ERASE (CMD38) proporciona una funcionalitat similar a la comanda TRIM ATA, encara que requereix que els blocs esborrats poden sobreescriure amb qualsevol de zeros o uns. EMMC 4.5 defineix més un "descarti" sub-operació que s'aproximi més ATA TRTM en què el contingut de blocs rebutjats poden considerar indeterminada (és a dir, "no importa").

Remove ads

Deficiències

  • Si el xifrat està en ús, amb la comanda TRIM revela informació sobre quins blocs estan en ús i quines no ho són.[66]
  • La versió original de la comanda TRIM s'ha definit com una comanda no en cua pel T13 subcommittee i, per tant, pot incórrer en una massiva penalització si s'utilitza sense cura, per exemple, si s'envia després de cada ordre d'eliminar arxius. La naturalesa no en cua de la comanda requereix que el conductor ha d'esperar primer a totes les ordres pendents d'acabar, executa l'ordre TRIM, a continuació, quan repren les ordres normals. TRIM pot trigar molt de temps a completar-se, depenent del microprogramari al SSD, i fins i tot pot desencadenar un cicle de recollida d'escombraries. Aquesta penalització pot ser minimitzat en solucions que fan periòdicament un TRIM per lots, en lloc de retallar sobre cada eliminació d'arxiu, mitjançant la programació d'aquests treballs per lots per als moments en què la utilització del sistema és mínim. Aquesta deficiència TRIM s'ha superat en Serial ATA revisió 3.1 amb la introducció de la cua de comandes TRIM.[67][68]
  • Les ordres TRIM en cua s'han relacionat amb la corrupció de dades importants en diversos dispositius, sobretot M500 de Micron,[69] els Crucial M500,[69] i la sèrie Samsung 8**.[70] La corrupció de les dades ha estat confirmada per al sistema operatiu Linux en aquests dispositius l'1 de juliol del 2015.[71]

Aquests dispositius estan en llistes negres en el nucli de Linux libata-core.c per forçar l'enviament de comandes TRIM no en cua a aquestes unitats en lloc de les comandes TRIM en cua:[72]

  • Micron M500 utilitzades a totes les versions de firmware (només aquells anteriors a MU07 tenen el problema, però Linux no ha posat al dia)
  • Crucial M500 utilitzades totes les versions de firmware incloent els SSD rectificats de fàbrica (només aquells anteriors a MU07 tenen el problema, però Linux no ha posat al dia)
  • Micron M510 utilitzant la versió de firmware MU01
  • Micron M550 utilitzant la versió de firmware MU01
  • Crucial M550utilitzant la versió de firmware MU01
  • Crucial MX100 utilitzant la versió de firmware MU01
  • Samsung SSD 8** series SSDs utilitzades totes les versions de firmware

Aquest arxiu també posa en la llista negra el S238 SuperSSpeed contra TRIM en general, pel fet que causen els blocs erronis que fan perdre dades quan s'emet TRIM.[72][73]

libata-core.c també té una llista blanca per veure els SSD que són coneguts de forma fiable als mantenidors del subsistema d'aplicar correctament les banderes DRAT i RZAT, en lloc d'ignorar-les, ja que moltes unitats ho fan. Les unitats de la llista blanca són els següents:[72]

  • Crucial SSDs
  • Intel SSDs excloent el Intel SSD 510
  • Micron SSDs
  • Samsung SSDs
  • Seagate SSDs[74]
Remove ads

Referències

Enllaços externs

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads