Senkronize etmeniz gereken felsefede gerçek var mı; senkronizasyon; senkronizasyon; senkron?


27

Linux’a ilk girdiğimde, 2000’de Cisco Systems’de çalıştığımda, syncdosya sisteminin bozulmasını / veri kaybını önlemek için arabellekleri diske çevirmek için kullanılan komutun yararları öğretildi . Bana sadece meslektaşlarım tarafından değil, üniversitedeki arkadaşlarım tarafından her zaman sync"birkaç" veya "birkaç kez" koşmaları söylendi , bu sadece bir kez yerine 5-10 kezdir.

Bu alışkanlığı o zamandan beri sürdürdüm, ama buna değecek bir şey var mı? Bunu başka birileri duydu mu? Ve en önemlisi, herhangi biri syncetkili olması için bir kereden fazla çalıştırmanız gerektiği fikrine / lehine iyi bir mantıksal / ampirik kanıt sunabilir mi?

Yanıtlar:


34

syncKomutu üç kez yazarken (üzgünüm, nerede olduğunu unuttum) duydum (olduğu gibi:, S Y N C Returnistemi bekle, tekrarla, tekrarla). Ayrıca, işletim sisteminin her şeyin yolunda olduğunu söylemesinden sonra bile, diskin tamponlarını temizlemesinin birkaç saniye alacağı belirli bir sistem olduğunu okudum. Komutu iki kez daha yazmak, diske yerleşmek için yeterli zaman verdi. Yıllar geçtikçe, amaç unutulmuş gibi görünüyordu ve tavsiye sync; sync; syncistenen etkiye sahip olmayacak şekilde kısaltıldı (disk “hepsi açık” olarak bildirildiğinden, ikinci ve üçüncü senkronizasyon anında tamamlandı ve anında çok erken geri gelecekti).

Birden fazla syncişlemin herhangi bir kullanımının olduğu bir sistemi hiç duymadım , ve herhangi birinden şüpheliyim. Bunu bir şehir efsanesi olarak görüyorum. Öte yandan, senkronizasyon işleminden sonra ve kapatmadan önce birkaç saniye beklemeniz gereken sistemler olacağına oldukça inandırıcı buluyorum.

Googling birkaç bağımsız sonuç analizine yol açar, örneğin senkronizasyon efsanesi . Ayrıca bakınız Linux'u kapatmadan önce senkronizasyonun (8) yürütülmesi hala gerekli mi? .


1
Müthiş, teşekkürler! sync; sync; sync; syncBaşlığı koyarken açıklığa kavuşturmam gerekirdi ve bazen böyle yazıyordum, aynı şekilde bana da aynı şekilde açıklandığını duydum, yani, eşitle, bekle, tekrar eşitle, bekle, vb.
Josh

9

Burada eski zamanlayıcı. TAPE’nin görkemli günlerinde, arka arkaya 3 hızlı senkronizasyon, TAPE kontrolörlerine sadece bant akışının bağlantısını kaldırmak / açmaktan değil, aynı zamanda geri sarmaktan, FD / rw-başını ayarlamaktan bahsetmenin bir yoluydu. 0'a.

"sync; sync; sync" gerçekten, üretken bir şekilde TAPE tabanlı Unix'lerle dişlerimizi kesen bizler tarafından kullanıldı, yani o sırada mümkün olan en ucuz depolama / var / spool'da dosyaları bulunan uygulamalar. ;)

MIPS Risc / OS kullanım kılavuzlarının bu sayfada bir sayfası var


6

Bir kereden fazla senkronize etmenin daha güvenli olduğu, ancak hepsinin bir komut satırında "sync; sync; sync" olarak olmadığı kesinlikle eski UNIX sistemleri vardı. 80'lerin ortalarında, bu damıtılmış oldu:

Sistemi kapattığınızda, üç kez senkronize olursunuz. Ne fazla ne az. Üç eşitleme sayısı olacak ve eşitleme sayısı üç olacaktır. Dört kez senkronize edilmezsin, iki kere de senkronize olmazsın, üçüncü seferde senkronize etmen dışında ...

Üç zamanın nereden geldiğini gerçekten bilmiyorum, belki de eğlenceliydi. Ama sokaktaki kelimeyi iki kere yapmak. "Sync; sync" olarak değil, kabuk üzerinde iki ayrı satır olarak.

Örneğin, V7 UNIX’in günlerinde, dosya sistemi tamiri çok eğlenceli değildi. Dosya sisteminin nasıl çalıştığını ve dcheck, ncheck ve icheck gibi programların özdeşleştirmeleri hakkında çok şey bilerek, elle yapmak zorundaydınız. fsck, olsaydı, her zaman güveneceğiniz bir şey değildi.

Bu, "her iki yönde de yokuş yukarı karda yürüdük" hikayesi gibi konuşmaya başladı. Yeniden başlatma veya kapatma gibi süslü komutlarımız yoktu. Sistemi yeniden başlatmak istediğinizde, dosya sistemini senkronizasyonla senkronize ettiniz ve ardından durdurmak için konsoldaki Ctrl-P tuşlarına basın.

Sync komutu çıktığında, çekirdek senkronizasyonu planlamıştı, ancak tüm tamponlar (tüm önemli dosya sistemi süper bloğu dahil) diske yapılmadı. Bu yüzden senkronizasyon yapmak ve işleri güvenli olmadan önce durdurmak oldukça kolaydı.

Senkronizasyonu tekrar yapmak kolay bir şeydi, zaman aldı ve her şeyi anlamadan ya da "10'a kadar say" gibi belirsiz talimatlarla uğraşmadan belli bir sezgisel çekiciliği vardı.

İçin V7 adam sayfasında hatta bir BUG bölüm vardı updateda söyledi:

Güncelleme çalışırken, eşitleme işlemi yürütülürken CPU durdurulursa, bir dosya sistemi zarar görebilir. Bu, kısmen NPR istekleri başarısız olduğunda sıfır yazan DEC donanımından kaynaklanıyor. Düzeltme, güncellemenin yürütülmesini tetiklemek için sistem saatini geçici olarak en az 30 saniye arttırmak olacaktır. Bu işlemciyi durdurmak için 30 saniye ödemesiz olur.

(bu arada, V7 kılavuzlarının Cilt 1'indeki en son şeydi)

Zamanla, dosya sistemi araçları ve sistemleri kapatma ve yeniden başlatma programları, bununla başa çıkmamak için daha iyi hale geldi. Sistem gizemli bir şekilde davrandığında folklor, vudu ve sistem büyüsü buna girer. İki kez senkronize etmek, dosya sisteminizi bir araya getirmek için biraz cımbızdan kurtulmanız gerekme olasılığını çok daha düşük hale getirdi, bu nedenle ritüelin bir parçası oldu. Bunu birkaç kez yaptıktan sonra düşünmeden yaparsın. Sonra birisi farkeder ve nedenini sorar. Cevap ise, "Her zaman bu şekilde yaptın. Daha güvenli" gibi bir şey.

Bunun yetkili olduğunu iddia etmeyeceğim ve bazı detaylarda yanılmış olabileceğimi iddia etmiyorum. Ama bence kökene oldukça yakın.


Bu öğrendiklerime benziyor ... ama sadece vudu mu yoksa gerçekten bir nedeni var mıydı? Diğer cevaplardan bazıları, bu alışkanlığın bizim tarafımızdan oluşma şekilleri hakkında iyi önerilerde bulunuyor
Josh

@Josh nedeni verildi. "Sync komutu çıktığında, çekirdek senkronizasyonu planlamıştı, ancak tüm tamponlar (çok önemli dosya sistemi süper bloğu dahil) diske yapılmadı." Ayrıca bakınız: "Standart şartnameye göre (örneğin, POSIX.1-2001), sync () yazmaları zamanlar ancak gerçek yazma yapılmadan geri dönebilir." man7.org/linux/man-pages/man2/sync.2.html
sourcejedi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.