sync är ett Unix - verktyg för att uppdatera filsystem och för att synkronisera data på disk med data i minnet [1] . Detta exekverar sync -systemanropet , vilket gör att alla buffrade filmetadata och dataändringar skrivs till de underliggande filsystemen. Det säkerställer att allt som lagrats i minnet skrivs till disken, vilket förhindrar att data som lagras i cachen går förlorade om operationen kraschar.
Det finns också ett associerat systemanrop int fsync(int fildes)som begär att all data för en öppen filbeskrivning med namnet fildes överförs till den lagringsenhet som är associerad med filen som beskrivs av fildes.
Synkroniseringsverktyget får filsystemhanteraren att tömma alla modifierade inoder och alla oskrivna systembuffertar från huvudminnet till disken. Detta säkerställer att alla ändringar av filerna fram till den schemalagda tiden sparas. sync skriver först inoder till buffertar och buffertar sedan till disk [2]
På Linux säkerställer sync bara att en lista med "smutsiga" block kompileras för att skrivas. Det kommer att dröja innan de faktiskt spelas in. Kommandona omstart och stopp tar hänsyn till detta genom att pausa i några sekunder efter att de har anropats
Efter att ha utfört sync-kommandot måste du ge tillräckligt med tid för att drivrutinköerna ska släppas och all data sparas helt på disken. Varaktigheten av denna paus beror på hårddiskens/hårddiskarnas hastighet, antalet buffertar som ska behandlas och systemets aktivitet under denna period.
Synkroniseringen förbrukar en liten mängd CPU-resurser. Dessutom har den följande fördelar [3] :
En retur från ett systemanrop som syncanropas av ett verktyg med samma namn kan inträffa innan skrivningen faktiskt är klar. Men sedan version 1.3.30 har Linux väntat på slutet av skrivningen, vilket dock inte garanterar dataintegriteten: moderna diskar har sina egna stora cacher. [2]
Unix-kommandon | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|