sync
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]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 <
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]- | Ubuntu Manpage: sync - sinkhronizatsiia dannykh na diske s dannymi v pamiati . Data obrashcheniia: 1 avgusta 2019. Arkhivirovano 17 iiulia 2019 goda.
- | 1 2 Ubuntu Manpage: sync - zapisyvaet bufernyi kesh na disk . Data obrashcheniia: 1 avgusta 2019. Arkhivirovano 18 iiulia 2019 goda.
- | IBM Knowledge Center