Linux'ta 'bariyer' mount bayrağı ne anlama geliyor?


20

'Bariyer' montaj seçeneği için kılavuz:

bariyer = 0 / bariyer = 1

Bu, jbd kodunda yazma bariyerlerinin kullanılmasını devre dışı bırakır / etkinleştirir. Barrier = 0 devre dışı bırakır, bariyer = 1 etkinleştirir (varsayılan). Bu ayrıca engelleri destekleyebilen bir G / Ç yığını gerektirir ve jbd bir engel yazma konusunda hata alırsa, uyarılarla engelleri yeniden devre dışı bırakır. Yazma engelleri, günlük taahhütlerinin disk üzerinde uygun şekilde sıralanmasını zorunlu kılar ve bazı performans cezalarında geçici disk yazma önbelleklerini kullanmayı güvenli hale getirir. Diskleriniz şu veya bu şekilde pil destekli ise, engelleri devre dışı bırakmak performansı güvenli bir şekilde artırabilir.

Ancak " dergi için uygun disk üzerinde sipariş verme " cümlesinin ne anlama geldiğini bilmiyorum .

Diyelim ki normal düzen - dergi 1, veri 1; günlük 2, veri 2.
Belirlersem aşağıdaki sipariş sonuçlarından hangisi olur barrier=0?

  1. dergi 2, veri 2; dergi 1, veri 1;
  2. veri 1, günlük 1; veri 2, dergi 2.


1
Günlük kaydı dosya sistemlerini okursanız, önce günlüğü yazmanın, ardından günlüğü yürütmenin ve böylece gerçek verileri diske yazmanın önemli olduğunu fark edeceksiniz. Bariyer, derginin yürütülmeden önce yazılmasını sağlar. Aksi takdirde dergi bize işe yaramaz.
ctrl-alt-delor

@richard BBWC sert baskınında "nobarrier" bayrağı kullanılırken disk, verileri yürütülmeden önce derginin yazıldığından emin olamadı, bu durum önemli değil mi?
leafonsword

Önemli olup olmadığını bilmek için yeterli bilgim yok. Daha da kötüsü, dergi kadar kötü olduğunu düşünürdüm, ama okuduğum şey o kadar da kötü görünmüyor, ancak incelikleri ayırt edemiyorum. Bende var barrier=1ve benim için yeterince hızlı çalışıyor. Eğer gerçekten ağır işler yapmadıkça onu bırakardım. RAM arabellekleriniz vardır, böylece uygulamalara herhangi bir yavaşlama olmadan , işler mümkün olduğunda yazılır . Ve diske yazmada çok az gecikme. Koç arabelleklerinin işleri ne kadar hızlandırdığını görmek için giriş dizininize sync = 1 ekleyin ve sisteminizi bir veya iki gün boyunca kullanmayı deneyin.
ctrl-alt-delor

Yanıtlar:


15

Çoğu modern dosya sistemi günlük kaydı dosya sistemidir, yani günlük olarak adlandırılan bir iç veri yapısında henüz diske yazılmamış değişiklikleri takip ederler. Bir çökme durumunda, tüm yazma işlemlerinin başarıyla gerçekleştirildiğinden emin olmak ve dosya bozulmasını önlemek için bu günlük yeniden oynatılır.

Verileri diske gerçekten yazarken yazma önbelleği, verimi en üst düzeye çıkarmak için yazma işlemlerini yeniden sıralar, ancak bir kilitlenme durumunda emin olmak için gerçek dosya verilerinin meta verilerden önce diske yazıldığından emin olmalıdır. meta veriler verilerle güncel olmaz.

Sorun şu ki, birçok diskte yazıların yeniden düzenlenmesi için kendi önbellekleri var. Bazı dosya sistemleri bunun olacağını varsayar ve bunu önlemek için diski önbelleği belirli noktalarda temizlemeye zorlar ve write barriersörneğin ext4 ve genel olarak Linux olarak adlandırılır .

Modern disklerde bunu yapmak için performans fedakarlığı ihmal edilebilir ve kesinlikle gerekli olmadıkça yazma engellerini devre dışı bırakmamalısınız.


1

Gönderen bu LWN makalesinde :

Dosya sistemi kodu, [günlük kaydı] taahhüt kaydını yazmadan önce, işlemin tüm bilgilerinin günlüğe kaydettiğinden kesinlikle emin olmalıdır. Yazmaları sadece doğru sırayla yapmak yetersizdir; çağdaş sürücüler büyük iç önbellekleri korur ve daha iyi performans için işlemleri yeniden sıralar. Bu yüzden dosya sistemi, kaydedilen kaydı yazmadan önce diske tüm günlük verilerini medyaya alma talimatını açıkça vermelidir; önce taahhüt kaydı yazılırsa, günlük bozulabilir. Çekirdeğin blok I / O alt sistemi, bu özelliği engelleri kullanarak kullanılabilir kılar; özünde, bir engel, engelden önce yazılan tüm bloklar medyaya bağlanana kadar engelden sonra herhangi bir bloğun yazılmasını yasaklar. Engelleri kullanarak,

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.