Synkronisere

sync er et Unix  -værktøj til opdatering af filsystemer og til synkronisering af data på disk med data i hukommelse [1] . Dette udfører synkroniseringssystemkaldet , som får alle bufferlagrede filmetadata og dataændringer til at blive skrevet til de underliggende filsystemer. Det sikrer, at det, der er gemt i hukommelsen, bliver skrevet til disken, hvilket forhindrer, at de data, der er gemt i cachen , går tabt, hvis operationen går ned.

Der er også et tilknyttet systemkald, int fsync(int fildes)der anmoder om, at alle data for en åben fildeskriptor ved navn fildes overføres til den lagerenhed, der er knyttet til filen beskrevet af fildes.

Beskrivelse

  sync [ --hjælp ] [ --version ]

Synkroniseringsværktøjet får filsystemadministratoren til at tømme alle ændrede inoder og alle uskrevne systembuffere fra hovedhukommelsen til disken. Dette sikrer, at alle ændringer af filerne op til det planlagte tidspunkt gemmes. sync skriver først inoder til buffere og derefter buffere til disk [2]

Linux sikrer synkronisering kun, at en liste over "beskidte" blokke er kompileret til at blive skrevet. Der vil gå noget tid, før de rent faktisk bliver optaget. Genstart- og stop- kommandoerne tager højde for dette ved at holde pause i et par sekunder efter at være blevet kaldt

Når du har udført synkroniseringskommandoen, skal du give tilstrækkelig tid til, at driverkøerne kan frigives, og alle data kan gemmes fuldstændigt på disken. Varigheden af ​​denne pause afhænger af hastigheden på harddisken(e), antallet af buffere, der skal behandles, og systemets aktivitet i denne periode.

Synkroniseringsoperationen bruger en lille mængde CPU-ressourcer. Derudover har det følgende fordele [3] :

  • Kompakt dataoptagelse.
  • Skriv mindst 28 KB systemdata, selvom der ikke har fundet nogen I/O sted siden det forrige synkroniseringsopkald.
  • Acceleration af skrivning af data til disk ved at deaktivere lazy-skrivealgoritmen. Denne egenskab er især vigtig for programmer, der kører fsync() efter hver skriveoperation.
  • Når sync() eller fsync() kaldes, foretages en indtastning i JFS -loggen om, at de ændrede data er blevet gemt på disken.

Bugs

En tilbagevenden fra et systemkald synckaldet af et hjælpeprogram af samme navn kan forekomme, før skrivningen faktisk er fuldført. Siden version 1.3.30 har Linux dog ventet på slutningen af ​​skrivningen, hvilket dog ikke garanterer integriteten af ​​dataene: moderne diske har deres egne store caches. [2]

Se også

Noter

  1. Ubuntu Manpage: sync - Synkroniser data på disk med data i hukommelsen . Hentet 1. august 2019. Arkiveret fra originalen 17. juli 2019.
  2. 1 2 Ubuntu Manpage: sync - Skriver buffercachen til disken . Hentet 1. august 2019. Arkiveret fra originalen 18. juli 2019.
  3. IBM Knowledge Center

Links