Synchronizace

sync je unixový  nástroj pro aktualizaci souborových systémů a pro synchronizaci dat na disku s daty v paměti [1] . Tím se spustí systémové volání synchronizace , které způsobí, že všechna metadata souborů ve vyrovnávací paměti a změny dat budou zapsány do základních systémů souborů. Zajišťuje, že vše, co bylo uloženo v paměti, bude zapsáno na disk, čímž se zabrání ztrátě dat uložených v mezipaměti v případě selhání operace.

Existuje také přidružené systémové volání int fsync(int fildes), které požaduje, aby všechna data pro otevřený deskriptor souboru s názvem fildes byla přenesena do úložného zařízení spojeného se souborem popsaným pomocí fildes.

Popis

  synchronizovat [ --help ] [ --version ]

Nástroj synchronizace způsobí, že správce systému souborů vyprázdní všechny upravené inody a všechny nezapsané systémové vyrovnávací paměti z hlavní paměti na disk. Tím se zajistí, že se uloží všechny změny souborů až do tohoto naplánovaného času. synchronizace nejprve zapíše inody do vyrovnávacích pamětí a poté vyrovnávací paměti na disk [2]

V Linuxu synchronizace zajišťuje pouze to, že se zkompiluje seznam „špinavých“ bloků, které budou zapsány. Než budou skutečně zaznamenány, bude to nějakou dobu trvat. Příkazy reboot a halt to berou v úvahu tím, že se po zavolání na několik sekund pozastaví

Po provedení příkazu synchronizace musíte nechat dostatek času na uvolnění front ovladačů a úplné uložení všech dat na disk. Doba trvání této pauzy závisí na rychlosti pevného disku (disků), počtu vyrovnávacích pamětí, které mají být zpracovány, a aktivitě systému během této doby.

Operace synchronizace spotřebovává malé množství prostředků CPU. Kromě toho má následující výhody [3] :

  • Kompaktní záznam dat.
  • Zapište alespoň 28 kB systémových dat, i když od předchozího synchronizačního volání neproběhly žádné I/O.
  • Zrychlení zápisu dat na disk vypnutím algoritmu líného zápisu. Tato vlastnost je zvláště důležitá pro programy, které spouštějí fsync() po každé operaci zápisu.
  • Při volání sync() nebo fsync() se do protokolu JFS zapíše , že upravená data byla uložena na disk.

Chyby

Návrat ze systémového volání synczavolaného obslužným programem stejného jména může nastat dříve, než je zápis skutečně dokončen. Od verze 1.3.30 však Linux čeká na konec zápisu, který však nezaručuje integritu dat: moderní disky mají vlastní velké cache. [2]

Viz také

Poznámky

  1. Ubuntu Manpage: sync – Synchronizace dat na disku s daty v paměti . Získáno 1. srpna 2019. Archivováno z originálu 17. července 2019.
  2. 1 2 Manpage Ubuntu: sync – Zapíše vyrovnávací paměť na disk . Získáno 1. srpna 2019. Archivováno z originálu dne 18. července 2019.
  3. IBM Knowledge Center

Odkazy