sync

Material iz Vikipedii -- svobodnoi entsiklopedii
Dannaia stranitsa ne proverialas' uchastnikami s sootvetstvuiushchimi pravami.
Pereiti k navigatsii Pereiti k poisku

sync -- utilita Unix, prednaznachennaia dlia obnovleniia failovykh sistem i dlia sinkhronizatsii dannykh na diske s dannymi v pamiati[1]. Pri etom vypolniaetsia sistemnyi vyzov sync, kotoryi vyzyvaet zapis' vsekh buferizovannykh izmenenii metadannykh failov i dannykh v bazovye failovye sistemy. On garantiruet, chto vse, chto khranilos' v pamiati, budet zapisano na disk, predotvrashchaia poteriu dannykh, khraniashchikhsia v keshe, pri avariinom zavershenii raboty.

Takzhe sushchestvuet sviaznyi sistemnyi vyzov int fsync(int fildes), zaprashivaiushchii peredachu vsekh dannykh dlia deskriptora otkrytogo faila s imenem fildes k ustroistvu khraneniia, sviazannomu s failom, opisannym fildes .

Opisanie

[pravit' | pravit' kod]
sync [--help] [--version]

Utilita sync initsiiruet sbros menedzherom failovoi sistemy iz operativnoi pamiati vsekh izmenennykh indeksnykh deskriptorov i vsekh nezapisannykh sistemnykh buferov na disk. Pri etom obespechivaetsia sokhranenie vsekh izmenenii v failakh na etot zaplanirovannyi moment. sync sperva zapisyvaet indeksnye deskriptory (inode) v bufery i zatem bufery na disk[2]

V Linux sync vsego-lish' garantiruet, chto budet sostavlen spisok <> blokov, kotorye nuzhno zapisat'. Prezhde chem oni deistvitel'no budut zapisany, proidet eshche nekotoroe vremia. Komandy reboot i halt uchityvaiut eto, delaia pauzu v neskol'ko sekund posle vyzova

Posle vypolneniia komandy sync neobkhodimo obespechit' dostatochnuiu pauzu dlia osvobozhdeniia ocheredei draiverov i polnogo sokhraneniia vsekh dannykh na diske. Dlitel'nost' etoi pauzy zavisit ot skorosti zhestkogo diska (diskov), kolichestva buferov, kotorye neobkhodimo obrabotat', i aktivnosti sistemy v dannyi period.

Operatsiia sync raskhoduet neznachitel'nyi ob'em resursov CPU. Pomimo etogo, u nee est' sleduiushchie preimushchestva[3]:

  • Kompaktnaia zapis' dannykh.
  • Zapis' po krainei mere 28 KB sistemnykh dannykh, dazhe esli s momenta predydushchego vyzova sync ne bylo vypolneno ni odnoi operatsii vvoda-vyvoda.
  • Uskorenie zapisi dannykh na disk za schet otkliucheniia algoritma otlozhennoi zapisi. Eto svoistvo osobenno vazhno dlia tekh programm, v kotorykh posle kazhdoi operatsii zapisi vypolniaetsia operatsiia fsync().
  • Sozdanie pri vyzove sync() ili fsync() zapisei v protokole JFS o tom, chto izmenennye dannye sokhraneny na diske.

Bagi

[pravit' | pravit' kod]

Vozvrat iz sistemnogo vyzova sync, kotoryi vyzyvaet odnoimionnaia utilita, mozhet proizoiti pered tem kak zapis' budet fakticheski zavershena. Odnako, nachinaia s versii 1.3.30, Linux vypolniaet ozhidanie okonchaniia zapisi, chto, odnako, ne garantiruet tselostnost' dannykh: sovremennye diski imeiut svoi sobstvennye bol'shie keshi.[2]

Sm. takzhe

[pravit' | pravit' kod]

Primechaniia

[pravit' | pravit' kod]
  1. | Ubuntu Manpage: sync - sinkhronizatsiia dannykh na diske s dannymi v pamiati . Data obrashcheniia: 1 avgusta 2019. Arkhivirovano 17 iiulia 2019 goda.
  2. | 1 2 Ubuntu Manpage: sync - zapisyvaet bufernyi kesh na disk . Data obrashcheniia: 1 avgusta 2019. Arkhivirovano 18 iiulia 2019 goda.
  3. | IBM Knowledge Center

Ssylki

[pravit' | pravit' kod]
Komandy Unix
Utility POSIX.1-2008
Istochnik -- https://ru.wikipedia.org/w/index.php?title=Sync&oldid=146798278