Root » Servers » » Harde schijf » » SSD » » Minpunten en oplossingen
Solid State Disk
Minpunten en oplossingen
SSD
Een nadeel van de SSD, namelijk dat de cellen maar een beperkt aantal keren geschreven kunnen worden wordt automatisch opgevangen door de manier van werken van de SSD zelf. De directories (en andere bestanden die vaak gewijzigd worden) worden automatisch op een andere plaats geschreven.
-

-

Gebrekkige communicatie


De SSD gebruiken dezelfde connectoren als klassieke harde schijven en zijn leverbaar in PATA en SATA uitvoering.
De consumer-SSD zitten in een 2.5-inch behuizing, terwijl de server-uitvoeringen (“Entreprise SSD”) uitgevoerd zijn in 3.5-inch maat.
Het probleem met de huidige operating systems en de SSD is dat beide onvoldoende met elkaar communiceren:
  • Het OS wist bestanden door dit enkel aan te geven in de directory. De SSD denkt dat het bestand nog steeds bestaat en zal de vrijgekomen ruimte niet claimen, in tegendeel! Deze phantom-bestanden nemen plaats in, bemoeilijken het zoeken naar wisbare blokken en worden nodeloos herschreven na het wissen van een blok.

  • Het OS gebruikt een eigen clustersize, dat vaak niet overeenkomt met de fysische pagina-afmeting. Bij het schrijven van één cluster moeten er twee pagina's gebruikt moeten worden, of omgekeerd: een cluster is maar de helft van een pagina. Een cluster is een aantal sectoren die samen geschreven en gelezen worden omdat het OS liever niet werkt met kleine sectoren van 512 bytes. De huidige SSD werken met pagina's van 4k. De clustersize kan je enkel aanpassen met bijvoorbeeld Partition Magic.

  • Het OS schrijft een bestand dat gewijzigd is volledig opnieuw, in plaats van enkel de wijzigingen aan te geven. Voor iedere schrijfopdracht moeten er pagina's gebruikt worden.
Het is dan ook niet verwonderlijk dat het OS dat het best werkt met SSD... windows 2000 is! Dit operating system voert relatief weinig schrijfopdrachten uit. Maar beterschap is op komst: windows 7 is geoptimaliseerd voor het werken met SSD (de OS vraagt de rotatiesnelheid aan, en als de schijf een rotatiesnelheid van nul aangeeft, dan weet de OS dat het een SSD is). Maar dit maat Windows 7 niet noodzakelijker sneller...

Een ander probleem gekoppeld aan de clustersize rn bloksize: vaak is de bloksize (de afmeting van een fysische blok op de schijf) gelijk aan de clustersize (de logische blokgrootte van het operating system). Dit is echter niet voldoende, want de schijf telt zijn blokken vanaf het begin van de schijf, terwijl een operating system zijn clusters telt vanaf het begin van de partitie. Enkel als de partitie uitgelijnd is speelt het voordeel van de SSD ten volle.

Oplossingen

Oplossingen kunnen zowel komen van de kant van de SSD maker (hardware of firmware verbeteringen) als van de kant van het operating system. Het is echter zo dat de SSD nooit de exacte bedoeling van een schrijfopdracht kan achterhalen: de SSD kan namelijk niet ontcijferen wat er in de directories geschreven wordt, evenmin als een harde schijf dat zou kunnen. De SSD werkt op een lager niveau dat het filesystem (OSI lagensysteem) en weet niet wat boven hem gebeurt: een blok is een blok.

Hardware-oplossingen

Garbage collection

De firmware van de SSD kan automatisch blokken beginnen te wissen (en de eventuele gegevens herschrijven) van zodra er bijna geen vrije pagina's meer zijn. Dit heet garbage collection (een benaming dat afstamt van het DOS en Basic-tijdperk). Dit is ideaal als het systeem vooral in burst-mode werkt (hoge belasting gedurende een korte tijd, en dan een pauze). De firmware gebruikt de pauze om opnieuw ruimte vrij te maken. Om de solid state schijf langer te laten meegaan wordt niet noodzakelijk de blok met de meeste ongeldige pagina's gewist, maar de blok die het minst vaak geschreven werd.

Write buffer

Om de bottleneck van het schrijven te beperken kan de SSD met een schrijf-buffer uitgerust worden: de bestanden worden tijdelijk in de buffer opgeslagen. Dit maakt de SSD veel complexer: de SSD moet namelijk ook bijhouden dat een bestand in de cache zit, en niet in het statisch geheugen. Bij stroomuitval is de inhoud van de schrijf-buffer verloren, waardoor de filestruktuur in een ongedefinieerde status terechtkomt, de nachtmerrie van iedere systeembeheerder. De beste SSD gebruiken een high capacity back up elko zodat de wachtende schrijf-opdrachten autonoom afgewerkt kunnen worden terwijl de computer al stroomloos is. Kostprijs voor een dergelijke server-grade SSD: ongeveer 5.000 USD. Deze SSD zijn uitgevoerd in 3.5 inchmaat (zoals de klassieke HDD), terwijl de meeste SSD in 2.5 inchmaat uitgevoerd zijn.

Data-compressie en conditioneel vervangen

Aangezien het schrijven zo traag is, loont het soms de moeite om de gegevens te comprimeren voordat ze opgeslagen worden. Dit comprimeren gebeurt volledig transparant voor de gebruiker. Een eigenschap van de gebruikte compressietechnieken is dat de compressie meer tijd vergt dan het decomprimeren: er is dus nauwelijks tijdsverlies bij leesopdrachten. Het comprimeren zorgt er ook voor dat er minder schrijfopdrachten nodig zijn. De opslagcapaciteit van de schijf zal echter niet verhogen; de capaciteit die niet gebruikt wordt dankzij compressie wordt gebruikt als overprovisionning.

Als een bestand wordt geschreven kan het in feite een wijziging van een bestand betreffen (rewrite). Bij een rewrite is soms slechts een deel van het bestand effektief veranderd (bijvoorbeeld kleine wijzigingen aanbrengen aan brieven). Het operating system zal echter het volledig bestand herschrijven (bij een klassieke harde schijf kan dit geen kwaad). “Herschrijven” is echter niet mogelijk bij SSD's. Bij bepaalde SSD eenheden wordt gecontroleerd of de te schrijven blok niet reeds bestaat op de schijf. Als dat het geval is, dan wordt er geen tweede (identieke) blok geschreven, maar wordt er gewoon verwezen naar het eerste blok.

Software-oplossingen

Door het aantal schrijfopdrachten te beperken kan men het systeem sneller maken. Moet het operating system echt continu logs bijhouden? Moet de access date van ieder bestand bijgehouden worden? (van zodra een bestand gelezen wordt, wordt de datum en tijd van de access gewijzigd). Er bestaan een aantal filesystemen die de beperkingen van de SSD omzeilen, de bekendste zijn YAFFS (Yet Another Flash File System) en JFFS (Journalling Flash File System).

Beide filesystemen werken niet met directories die de informatie over de bestanden bevatten. Deze informatie is opgeslagen op de SSD in de vorm van een journaal (journaling file system). Na iedere transactie wordt een stukje in het journaal geschreven. Het journaal zit her en der over de SSD verspreid (het wordt geschreven nadat een bestand geschreven wordt) en vormt een linked list. Voor een harde schijf is dat een verkeerde manier van doen (een bestand lezen dat uit vele fragmenten bestaat is zeer traag wegens de vele kopbewegingen), maar voor een SSD maakt random access niets uit.

De directories zelf worden enkel in RAM (werkgeheugen van de PC) bewaard en gaan verloren als de computer uitgeschakeld wordt. Bij de opstart wordt het journaal ingelezen en de directories worden opnieuw in RAM gecreerd. Dit duurt een paar seconden, maar nadien is de access supersnel, want alle informatie over de bestanden zit in het geheugen.

TRIM commando

Om het probleem van de niet meer gebruikte blokken op te lossen werd het TRIM commando in het leven geroepen. Als een bestand gewist wordt, dan wordt eerst de directory aangepast (samen met de andere files die informatie over de schijfinhoud bevatten, zoals bijvoorbeeld de FAT of het journaal). Als laatste wordt een TRIM opdracht gegeven met de bloknummers die het bestand gebruikte. De SSD weet nu dat deze bloks vrijgekomen zijn.

Windows zeven en de Linux kernel (vanaf versie 2.6) omdersteunen de TRIM opdracht. Er bestaan echter utilities (vaak van de leverancier van de SSD) die op regelmatige basis de inhoud van de schijf analyseren (partities, directories en FAT) en automatisch TRIM opdrachten uitsturen om de niet-gebruikte blokken vrij te geven.

  1. De schijf is nieuw en volledig leeg.
  2. Er wordt een bestand geschreven, een deel van de schijf wordt gebruikt.
  3. Een stuk van het bestand wordt gewist. Het operating systeem weet dat het laatste stuk van het bestand geen geldige informatie meer bevat, maar de schijfcontroller weet dat niet.
  4. Met een TRIM commando wordt het stuk dat niet meer gebruikt wordt vrijgegeven.

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's