> Dessutom skickar diskenheten tillbaks en bekräftelse att datat skrivits till
> disk när den i realiteten bara finns i hårddiskens cache minne.
En *absolut* förutsättning för att köra med en write-behind cache på det sättet
är att det finns *någon* slags uppbackning (UPS, stora kondingar, whatever)
som garanterar att det finns spänning tillräckligt länge för att skriva ner
de cachade write I/O'na till fysisk disk.
Det är första gången jag hör om *diskar* som själva har en write-behind
cache. De SCSI diskar jag jobbar med normalt har så vitt jag vet inte det.
Och de SCSI kontrollers som jag brukar jobba med vägrar att starta
write-behind om den inte får en "OK" signal från batterimodulen eller
UPS'en. Så snart som huvudmatningen försvinner så stängs write-behind
cachen av och allt kör vidare tills UPS'en till slut ger upp.
Jag googlade lite och jag hittade en del artiklar om att ATA diskar har (kan ha)
en write-behind cache, mest för att ligga i frontlinjen när det gäller
prestanda. I vissa fall gick den visst inte ens att stänga av! En sådan
disk måste vara totalt bannlyst i databasservers !! Se t.ex :
http://weblogs.java.net/blog/davidvc/ar ... of_th.html
Vissa OS har write-behind *på* som default, medan andra har det av.
Men oavsett det så är write-behind i de flesta fall no-no om det inte
finns backup power som t.ex en UPS och naturligtsvis logik för att stänga
av write-behind cachen när UPS'en går över på batteri!! Annars är det lite
meningslöst, och man kan fortfarande tappa write I/O när UPS'ens batteri
tar slut.
> Varför tror att bl.a DOS, Windows, MacOS m.fl OS vill kontrollera
> hårddisken efter att datorn stängts av felaktigt?
Därför att OS'et "vet om" att det kör med write-behind cache utan att kräva
att det finns power backup för att säkert skriva allt till disk vid ett power fel.
För *mig* så är det ett allvarligt designfel på dessa OS!
Det är en trade-off man har gjort i dessa OS för att det hela ska upplevas
snabbare, därmot är det betydligt osäkrare. OS som "bryr sig" ser till att
datat finns fysiskt på disk (eller i en batteriuppbackad disk-controller)
innan I/O anropet returnerar till applikationen.
Alla OS som används för kritiska applikationer fungerar naturligtsivs inte
så där. Den kunniga administratören kan naturligtsivs (om det går i det
aktuella OS'et) själv stänga av write-behind. I *vissa* fall (streaming
av media till disk t.ex) så kan de ge prestandavinster eftersom man
slipper overhead från administration av cachen vid varje I/O. Datat går
så att säga "rakare" till disk.