Linux'u kapatmadan önce senkronizasyon (8) uygulaması hala gerekli mi?


19

Yine de insanların sync; sync; sync; sleep 30; haltLinux'u kapatma veya yeniden başlatma hakkında konuşurken büyülerin kullanılmasını önerdiğini görüyorum .

Kuruluşundan bu yana Linux kullanıyorum ve bu BSD 4.2 / 4.3 ve SunOS 4 günlerinde önerilen prosedür olmasına rağmen, bunu en azından son on yıl boyunca yapmak zorunda olduğumu hatırlayamıyorum. Linux'un kapatılması / yeniden başlatılması belki binlerce kez oldu.

Çekirdeğin tek kullanıcı modu (örn. / Tmp) sırasında bile gerekli kök dosya sistemini ve diğer kritik dosya sistemlerini sökemediği ve senkronize edemediği günlerden bu yana bir anakronizm olduğundan şüpheleniyorum ve bu nedenle açıkça yıkamasını söylemek gerekiyordu mümkün olduğunca çok veri.

Bu günlerde, henüz çekirdek kaynağında ilgili kodu bulmadan ( http://lxr.linux.no ve google üzerinden kazma ), çekirdeğin kök dosya sistemini bile temiz bir şekilde ayırmak için yeterince akıllı olduğundan ve dosya sisteminin yeterince akıllı olduğundan şüpheleniyorum. normal shutdown/ reboot/ sırasında kendini ayırmadan önce etkili bir senkronizasyon (2) yapmak poweorff.

Bu "sync; sync; sync", yalnızca dosya sisteminin temiz bir şekilde bağlantısını kesemeyeceği (örn. Fiziksel disk arızası) veya sistemin yalnızca doğrudan yeniden başlatmayı (8) zorlamanın donmadan çıkaracağı (örn. kapatma komutunu zamanlamasına izin vermek için).

Ayrıca syncçıkarılabilir aygıtların bağlantısını kesmeden önce prosedürü asla yapmam ve hiçbir zaman bir soruna çarpmam.

Başka bir örnek - Xen, DomU'nun Dom0'dan bir shutdownkomut gönderilmesine izin verir, bu öncelikle büyüyü girmek ve yazmak zorunda kalmadan "temiz bir kapatma" olarak kabul edilir sync; sync; sync.

Haklı mıyım yoksa birkaç sistem kapatması nedeniyle şanslı mıydım?


Salt okunur bir dosya sistemini okuma / yazma olarak yeniden monte etmeye ne dersiniz? Ben rootfs salt okunur olarak monte var ve ben bu komut ile okuma / yazma olarak yeniden monte: mount -o remount, rw / ve sonra rootfs değiştirdiğimde mount -o remount, ro / çalıştırın ama fs kontrol ederken bazı sorunlar görüyorum fsck ile. İkinci komut, salt okunur şekilde monte edilmeden önce SYNC'i çağırıyor mu?

Yanıtlar:


18

İnsanların daha sync; syncönce koşmalarının haltnedenihalt a'dan komutun eski linux'larda sistemi temiz bir şekilde kapatmamasıdır. SYSVr4 sistemlerinde bunu yapmanın doğru yolu her zaman init'e farklı bir çalışma seviyesine geçmesini söylemektir.

BSD ve SunOS 4, SYSVr4 işletim sistemleri değildir, bu yüzden farklılık gösterirler. Solaris (SunOS 5) SYSVr4'tür ve Linux kullanmak istediği SYSVr4 standardının parçalarını seçer.

Durdurmayı kullanmak aslında çoğu UNIX'de (Linux istisnalardan biridir) bunu yapmak için oldukça kötü bir yoldur, çünkü işlemleri durdurmak ve diskleri çıkarmak gibi şeyleri gerçekleştirmek için init komut dosyalarından geçmez - sadece işlemciyi durdurur.

Asla hiç Linux'tan başka bir UNIX sistemi kullanamayacağınızı garanti ediyorsanız , kullanmaya devam edebilirsiniz halt- diğer UNIX'leri kullanma şansınız varsa, o zaman kullanma alışkanlığını edinmenizi init _runlevel_veyashutdown .

shutdownKomut aslında söyler initonun çalışma seviyesi değiştirme işlemi çalıştırmak seviyesini daha sonra bu çalışma düzeyi ile ilişkili K * Başlangıç komut dosyaları ve S * betikleri çalıştırmak ilerler böylece init yaparken -. Çalışma düzeyi 0'daki komut dosyalarından biri, dosya sistemlerinin bağlantısını keser.

Linux'ta haltkomut sadece çağıran shutdownçalışma seviyesi zaten 0 (kapatma aşağı) veya 6 (yeniden) olmadıkça komutu zaten ; böylece kayıp olmaz.

Kullanarak bir dosya sisteminin bağlantısını kesme eylemi umount, verileri bağlantısını kesmeden önce diske eşitler.

Çalıştırdığınız olduysan sync; sync; haltLinux üzerinde geliştiriciler sağladık çünkü dosya sistemi durumuyla tamam olmuştur edeceğiz haltyapar sağ şeyi; ancak kullanımı daha doğru olur:shutdown now


Açıklama için teşekkürler. Sadece söylediklerinizi açıklığa kavuşturmak için - "geliştiriciler durdurmanın doğru şeyi yapmasını sağlamışlardır", "dur" ifadesinin de "senkronizasyonu" çağırdığı veya sonunda "senkronizasyon" olarak adlandırılan uygun başlangıç ​​komut dosyalarını çalıştırdığı anlamına mı geliyor? Zaten tek kullanıcılı modda olmak ve sadece "durmak" demek ne olacak? Linux çekirdeğinin aniden kapanmayacak kadar akıllı olduğunu ancak kapatmadan önce tüm dosya sistemlerinin bağlantısını keseceğini varsayıyorum.
Amos Shapira

1
haltçağrı shutdownarama umountbir senkronizasyon gerçekleştirir.
DaveG

Teşekkürler DaveG. Yani her şeyin kullanıcı seviyesinde gerçekleştiğini ve çekirdeğin dosya sistemlerini tek başına taklit edip senkronize etmeyeceğini mi söylüyorsunuz? Her durumda, "senkronizasyon; kapatma" töreni bugün gereksiz gibi görünüyor.
Amos Shapira

7

Birden çok syncçağrının kullanılması işletim sistemi ve disklerin yazma kuyruklarını temizleme zamanına izin vermekti. "sync; sync; sync"bu kadar yararlı görülmedi; biri yaptı "sync<cr> sync<cr> sync<cr"ve ASR-33 taşıma dönüş / newline yeterli gecikme sağlarken gecikme yaptı. Durdur her zaman çağrı senkronizasyonu yaptı; soru, güç kesilmeden önce kuyrukları temizlemek için yeterli zamanın olup olmayacağıydı.

Orijinal posterler sync; sleep 30amaçlananla daha uyumludur.


7

Ben yapabilirsiniz sadece sen sorunu neden konuşmak syncbirden çok kez. Komut, yıkama işlemini diske zamanlar, ancak gerçek yıkama tamamlanmadan önce geri döner. Sonraki synckomutlar, başka bir yıkama programlanmadan ve çıkmadan önce, bekleyen herhangi bir yıkama devam edene kadar engellenir. Bu nedenle, sync; syncsenkron bir yıkama sağlar. Bunu 2 kereden fazla yapmanıza veya sleepkarışıma getirmenize gerek yoktur .


5

Bize "senkronizasyon; senkronizasyon; senkronizasyon" un hiçbir amacı olmadığını söyleyenler, yaşınızı açığa vuruyor.

İyi günlerde, Unix gençler için bir şey olmadan önce, akış / yedekleme ihtiyaçlarımız için TAPE kullanmak zorunda kaldık. Çoğu zaman, yedeklemeleri aktarabilmek için teyp tabanlı bir dosya sistemi kullanırdık. Manyetik plastik banttan oluşan bu uzun ince bant, dosyalarımızı saklamak için bazılarımıza sahipti.

'Sync; sync; sync' komutu, bu eski teyp makinelerine kendilerini sonuna kadar geri sarmanın söylenmesinin bir yoluydu (kapanmadan önce) - senkronizasyon cmd'sini alacak tüm yerleşik yazılımları vardı (tüm iyi dosya sistemleri gibi) ) ve hemen ardından iki senkronizasyon tamponu komutu daha takip ettiyse, teyp sürücüsünün kendisi bunu "bandı geri sar ve bağlantısını kes" anlamına gelecek şekilde yorumlardı. Teyp sürücüsüne, bu yöntemin ötesinde geri sarmasını söylemenin bir yolu yoktu ve bu bir şekilde sıkıştı .. Bu alışkanlık, sabit sürücüler daha kullanılabilir hale geldiğinde kelimeye geçti - huysuz eski operatörler sadece yeniden ayrılmıyor ( ) Kas hafızamızı biliyorsunuz! Bantların daha az yaygın hale gelmesinden ve sabit disklerin daha kullanılabilir hale gelmesinden kısa bir süre sonra folklor statüsüne ulaştığına inanıyorum, ancak hala teyp sürücülerine sahip olanlar için kullanımları var.


3
Bantlar karakter aygıtlarıdır. "mount" blok cihazlarda çalışır. Ben orada (80 ortalarında BSD 4.2 ile Vax 11/750 üzerinde "dökümü" çalışan) ve böyle bir şey yoktu ve teyp cihazında "sync" çalışıyor. Bir cihaz adı olarak açar ve başka bir cihazla açarsanız nerede kalırsanız, bant otomatik olarak geri sarılabilir ve eğer isterseniz "mt" kullanarak açık komutlar gönderebilirsiniz.
Amos Shapira
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.