Root » Servers » » Harde schijf » » Onderverdeling » » Uitlijnen
Uitlijnen van de partities
zodat de logische clusters samenvallen met de fysische blokken
Uitlijnen

De klassieke harde schijven (tot een paar jaren geleden) werkten met blokken van 512 bytes. Moderne schijven (Advanced Format) en SSD (Solid State Disk) gebruiken grotere blokken van 4k. Hoewel deze moderne schijven nog steeds met blokken van 512 bytes kunnen werken, moet het operating system aangepast worden om het maximum uit die moderne schijven te halen.
-

-

Advanced Format en SSD


Een enkelvoudige schrijfopdracht van 512 bytes veroorzaakt een lees-verwerk-schrijf (read-modify-write) operatie die een extra omwenteling van de harde schijf nodig maakt, en dit "kost" ongeveer 10milliseconden.
Een harde schijf met slecht uitgelijnde partities


Zowel de logische blokken (clusters) als de fysische blokken hebben dezelfde afmetingen, maar ze vallen niet samen. Een enkele schijfopdracht veroorzaakt drie operaties (lees-verwerk-schrijf) die de harde schijf bezig houdt gedurende een extra omwenteling van de schijf. Dit had men kunnen vermijden door de partities correct uit te lijnen.



Vòòr de uitlijning


Correcte uitlijning


Niet uitgelijnde partitie


Correct uitgelijnde partitie

msinfo32

Wat is eigenlijk het probleem? Moderne harde schijven werken met 8 opeeenvolgende blokken van 512 bytes. De toegang gebeurt per 4096 bytes, zelfs al vraagt het operating system slechts 512 bytes. De moderne schijven zijn namelijk volkomen compatibel met oudere operating systemen.

Het advanced format wordt op deze pagina besproken.

Zolang er enkel gelezen wordt, maakt dit in feite weinig uit: de harde schijf leest een blok van 4096 bytes, maar stuurt slechts 512 bytes door naar het operating system. Er is geen tijdsverlies.

Als er geschreven moet worden, is de situatie volkomen anders. Bij een oude organisatie van 512 bytes, wordt de blok gewoon op zijn plaats geschreven (de fysische gaps op de magnetische laag vòòr en na de blok zorgen ervoor dat de blok perfekt op zijn plaats gezet kan worden). Maar als dezelfde blok van 512 bytes geplaatst moet worden op een schijf die met blokken van 4096 bytes werkt, dan moet eerst de volledige blok van 4096 bytes gelezen worden, de 512 bytes ervan moeten gewijzigd worden en de volledige blok moet weggeschreven worden. Het schrijven van een blok van 512 bytes is dus minstens tweemaal zo traag als het schrijven van 4096 bytes! Daarbij komt nog dat de schijfcontroller moet wachten tot de blok weer onder de koppen passeert (volledige diskomwenteling, dus ongeveer 10ms).

Operating systems werken echter met clusters, dat is een groepering van opeenvolgende blokken. Er zijn immers zoveel blokken, dat het operating system de bestandsorganisatie niet meer efficient kan doen als er zoveel individuele blokken zijn. Het operating system werkt met clusters van 4k, zoals de blokken van de harde schijf.

Het probleem van slecht uitgelijnde partities

Uitleg over partities staat hier

Zijn alle problemen van de baan? Neen, er blijft één probleem over, maar die zorgt er wel voor dat de schijf bijzonder slecht presteert.

De harde schijft telt zijn blokken vanaf het fysisch begin van de schijf, terwijl het operating system zijn clusters telt vanaf het begin van de partitie. Het is de gewoonte dat de partitie vanaf blok 63 begint. De reden daarvoor is historisch en heeft ook een technische achtergrond, maar het zou ons te ver leiden deze hier uit te leggen.

Zelfs als het operating system met clusters van 4k werkt, deze komen niet overeen met de fysische blokken van de schijf, omdat het begin van de partitie op blok 63 begint.

De situatie hier is nog erger dan het vorig geval. Bij het lezen is de penaliteit beperkt (er moeten twee blokken gelezen worden in plaats van één enkele), maar bij het schrijven moeten er twee blokken gelezen worden, gewijzigd worden, en dan weggeschreven worden. Bij een schrijfopdracht met uitgelijnde blokken moet er enkel geschreven worden (het lezen en wijzigen vervalt). Bij harde schijven met het Advanced Format moeten de blokken die gewijzigd moeten worden tweemaal onder de koppen passeren, wat het schrijven zeer traag maakt: men verliest ongeveer 10ms per schrijfoperatie!

Magnetische schijven gaan trager werken, maar ook SSD hebben daar last van. De SSD schijven zijn namelijk beperkt in het aantal schrijfopdrachten. Bij een niet-uitgelijnde partitie moeten er twee blokken geschreven worden, terwijl er logisch maar één cluster gewijzigd is. De schijf gaat dus 50% minder lang mee, maar deze onnodige schrijfopdrachten vertragen ook de werking van de SSD (dergelijke schijven schrijven traag).

De twee tabellen rechts ("before" en "after") tonen het verschil: een slecht uitgelijnde partitie bowen en een correct uitgelijnde partitie onder. Er is nauwelijks verschil bij het lezen, maar de verschillen vallen des te meer op bij het schrijven.

  • Sequentieel schrijven gaat van 164 naar 208MB/sec
  • Random schrijven gaat van 4975 naar 15500 opdrachten per seconde
De ingebouwde routines van de firmware vangen de schrijfopdrachten op en zetten de data in een tijdelijke buffer, zodat de meting niet als absoluut gezien mag worden. Dit is vooral merkbaar bij het schrijven: de te schrijven data wordt tijdelijk in een buffer opgeslagen, en de schijf komt opnieuw vrij.

Bij de opstart valt de optimalisatie door de firmware minder op (er zit immers niets in de buffer). Mijn computer start op in 15 seconden met juist uitgelijnde partities en in 35 seconden met verkeerd uitgelijnde partities, wat overeenkomt met de berekeningen.

Er bestaan verschillende utilities om de uitlijning van de partities uit te lezen. De twee voorbeelden zijn van de eerste partitie van twee schijven. De eerste partitie is een klassiek DOS-aangemaakte partitie, dus met verkeerd uitgelijnde partitie. De tweede partitie is correct uitgelijnd. De waarde van 2048 houdt rekening met de komende technologies zoals het Advanced Format II die met blokken van 1MB zal werken. (2048 blokken van 512 bytes = 1.048.576 bytes).

Na het uitlijnen begint iedere partitie op een blok die een veelvoud is van 2048 blokken (met een SSD of AF I was een veelvoud van 8 ook goed geweest).

Het is niet mogelijk een partitie op bloc 0 te beginnen (ook deelbaar door 2048) want de eerste twee blokken bevatten informatie over de schijf.

Er gaat weinig plaats verloren met het uitlijnen (maximaal 1MB) en dit weegt zeker niet op tegen de talrijke voordelen. Eén foto is doorgaans groter dan het plaatsverlies.

Indien men met logische partities werkt, moet men niet de container (extended partition) uitlijnen, maar wel de logische partities die er in zitten. De container heeft namelijk zelf een bepaalde "dikte". Zolang men maar 4 partities nodig heeft moet men geen extended partitie aanmaken.

De utility die ik zelf gebruik voor het uitlijnen is Partition Magic Lite gebaseerd op Partition Magic (betalend). De drie printscreens zijn afkomstig van dit programma. Partition Magic kan alle partities verschuiven (de partities zijn een "container"), maar kan enkel windows partites verkleinen (doorgaans moet de partitie met maximaal 1MB verkleind worden bij het uitlijnen). Bij het verkleinen moet namelijk een deel van de inhoud van de partitie aangepast worden (pointers), en Partition Magic kent enkel de organisatie van FAT en NTFS partities. Unix beschikt over zijn eigen utilities voor het wijzigen van partities (Gparted).

Erase Block Size

Op een aantal fora kan men de kreet "Erase Block Size" tegenkomen. Een SSD kan geen individuele blokken (van 4096 bytes) wissen, maar moet een volledige Erase Block wissen. Een Erase Block bevat een groot aantal blokken die individueel gelezen en geschreven worden (maar niet gewijzigd worden).

De EBS is echter geen vaste waarde en hangt af van de gebruikte technologie. De waarden gaan in de praktijk van 512kB tot 2MB. Volgens bepaalde commentatoren worden de partities uitgelijnd op 1MB om rekening te houden met de Erase Block Size. Dit is volkomen fout: de EBS is niet noodzakelijk 1MB, en wordt vaak niet gepubliceerd door de fabrikanten omdat deze niet relevant is voor de werking van de SSD.

De partities worden uitgelijnd op 1MB om rekening te houden met het nieuw formaat (Advanced Format II) die met blokken van 1MB zal werken, niet om rekening te houden met de grootte van de Erase Block.

In de praktijk heeft de afmeting van de EB geen invloed op de werking van het systeem. Zowel de computer (operating system) als de drive werken met clusters of blokken van 4kB. De partitie uitlijnen op een veelvoud van 8 sectoren (van 512 bytes) is ruim voldoende. Zelfs al zou de partitie correct uitgelijnd zijn op de EBS, het operating system maakt daar totaal geen gebruik van en werkt met clusters van 4096 bytes.

msinfo32 (een programmatje beschikbaar onder windows) geeft informatie over je volledig computersysteem, waaronder ook de schijven en partities. Dit computer heeft twee schijven, met één partitie op de eerste schijf en vier partities op de tweede (twee ervan zijn correct uitgelijnd).

Publicités - Reklame

-