Journeyed dosya sistemleri ile önyükleme yaparken fsck'in önemi?


10

XFS'nin sistem önyüklemesinde bir fsck uygulamadığını ve günlük kaydı dosya sistemlerinde kirli bir kapatma sonrasında dosya sisteminin tutarlı bir durumda olmasını sağlamaya yardımcı olan nedenlerden birinin fark ettiğini fark ettim; bir sonraki montaj yerinde (örn. yeniden başlattıktan sonra) dergi tekrar oynatılır.

Temiz olmayan bir kapatma işleminden sonra hala bir fsck gerekli mi ve neden?

fsck 

Yanıtlar:


4

Bunu "günlük dosya sistemleri" nin genel bağlamında cevaplıyorum.

Sanırım er ya da geç bir dizi "kirli kapanma" ( güç kablosu ya da bir şey çekerek ) yaparsanız, bir dosya sistemi durumuna ihtiyaç duyacağınızı fsckya da fsck'in ahlaki eşdeğerini elde edeceğinizi düşünüyorum xfs_repair. ext4Çoğunlukla benim laptop fileystsm sadece her yeniden başlatmada dergi replays, temiz kapatmalar dahil, ama her arada bir, bir tam üzerinde yapar fsck.

Ancak kendinize "günlüğü tekrar oynatmanın" ne başardığını sorun. Bir günlüğün yeniden oynatılması, yalnızca dosya dizisinin geri kalanının disk bloklarının günlük girişlerinin talep ettiği sıraya uygun olmasını sağlar. Bir dergiyi yeniden oynatmak fsck, küçük veya dolu bir bölüme eşittir fsck.

Sanırım sözlü bir el çabukluğu var: Bir dergiyi tekrar oynatmak geleneksel olanın bir parçasını fsckyapıyor ve xfs_repairtam olarak aynı programın e2fs.fsck(veya başka bir dosya sisteminin fsck) olduğu gibi. XFS insanları sadece inandılar veya deneyimleri onları xfs_repairher önyüklemede çalıştırmamaya , sadece dergiyi tekrar oynatmaya yönlendirdi.


3
Günlük kaydı kodunda veya disk sürücüsünde bir hata olduğunda, hiçbir temiz olmayan kapanma diski fsck gerektiren bir durumda bırakamaz. ext [34], pek çok montajdan sonra, ext2'den bir taşıma olarak kısmen de olsa, "her ihtimale karşı" bilgiçlikçi bir tavırla, bilgiçlik otomatik fsck'i hala korumaktadır. En azından Ubuntu'nun son sürümlerinde, bu varsayılan olarak devre dışıdır.
psusi

Deneyimlerime göre, bir otomatik fsck'bilgiçlik' değildir. Bir ext3 LVMbölümü dönüştürdüm ext4ve 'ext4_mb_generate_buddy' hatalarını anladığım gibi, ext4dönüştürülmüş 'LVM' bölümlerinde diskteki ve bellek içi kopyalarında eşleşmemeye neden olan koddaki bir hata nedeniyle 'ext4_mb_generate_buddy' hatalarını almaya başladım . Anlayabildiğim kadarıyla fsck, herhangi bir yolsuzluk olmadı. Çözüm, ya seçeneği kapatmak UNINIT_BGya da veriyi taşımak ve bölümü şu şekilde yeniden başlatmaktı ext4; İkinci dersi aldım. Ama hala bir dakika beklemek fsckveri kaybetmeye değer olduğunu düşünüyorum !
StarNamer

1
Bu cevaptan çok fazla eksik bilgi var, bu yüzden aşağı inip başka cevap var.
symcbean

4

temiz olmayan bir kapatma işleminden sonra dosya sisteminin tutarlı bir durumda olmasını sağlama

Dikkat edilmesi gereken ilk şey, XFS, reiser ve ext'in çoğu yapılandırmasının sadece fsck'ten kaçınmakla ilgili olan meta veri günlüklendirmesini gerçekleştirmesidir. Günlük başlangıçta her zaman yeniden oynatılmaz - eksikse atılabilir.

Tam veri günlüğe kaydetmeyi destekleyen sistemler vardır - ancak pratikte bunların sadece meta veri günlüğe kaydetme üzerinde verdiği güvence düzeyi gerçek dünya senaryolarında çok küçüktür.

Dolayısıyla 'tutarsız bir durum' ve fsck tarafından düzeltilen sorunlar meta veriler ve dosyaların kendileri arasındaki uyumsuzluklardır. Bunu önlemek için, işletim sistemi önerilen meta veri değişikliklerini günlüğe yazar, ardından gerçek verileri diske yazar, sonra günlükte çoğaltılan meta veri değişikliklerini diske uygular. Bununla tek yakalama, disk denetleyicisinin istekleri arabelleğe alması ve yeniden sıralamasıdır. Bundan kaçınmak için, günlükleme yapan dosya sistemlerinin çoğu engelleri uygular: her işlemi ayırırlar ve diskin işlemi tamamladığını onaylamasını beklerler. Ancak birçok modern disk, veri işlenmeden önce yazma işlemlerinin tamamlandığını kabul eder. Dolayısıyla, işler dağınık olabilir.

Temiz olmayan bir kapanıştan sonra hala bir fsck gerekli mi ve neden

Çoğu dosya sistemi bağlama sayısını korur - bu sayıma ulaşıldığında, diski bir sonraki takma girişiminde tam bir fsck tetiklenir. Bunun nedeni, disk verilerinin, açık bir şekilde yazılmadığı zamanlarda bile, yazılımdaki hatalar olmadan bile bozulabilmesidir. psusi'nin yukarıdaki yorumu yanlış.


Siparişi engellerle karıştırıyorsunuz. Tüketici seviyesi disklerde varsayılan olarak devre dışı bırakılan yazma önbelleğini etkinleştirmediğiniz sürece, diskler yazma işlemlerini diske vurmadan önce tamamlanmış olarak rapor etmez, bu nedenle onlarla birlikte fs yalnızca bir yazının tamamlanmasını beklemelidir. . Yazma önbelleğe sahip donanım için, yeniden sıralamayı önlemek ve diski yazma önbelleğini boşaltmaya zorlamak için engeller kullanılır, böylece fs'nin bozulmasını önler.
psusi

1
psusi - ne içiyorsun? "Diskler yazma işlemlerini daha önce tamamlandığını bildirmiyor ..." - evet yapıyorlar. "varsayılan olarak devre dışı bırakılmış olan yazma önbelleğini etkinleştir" - yapılandırdığım herhangi bir diskte değil. "yeniden sıralamayı önlemek için engeller kullanılıyor" - ancak "siparişleri engellerle
sınırlandırdığımı

Hayır. Disk yazma önbelleğini ( hdparm -W) etkinleştirmezseniz, disk ortam üzerinde olana kadar yazma isteklerini tamamlamaz. Sizce bu seçenek neden var? Engeller, birden fazla istek yayınlandığında yeniden sıralamayı önler. Engeller olmadan, fs öncekiler tamamlanana kadar daha fazla istek göndermez, böylece disk yazma önbelleğinin etkinleştirilmemesi koşuluyla ... Engellerin amacı, bir çökme sırasında fs'yi bozmadan yazma önbelleğini etkinleştirmenize izin vermektir.
psusi

Hata! Orada biraz karıştım ve unuttum sync. Tekrar denememe izin ver. Engelsiz diske yazma prosedürü günlüğe yazmak sync, böylece herhangi bir yazma önbelleğini yıkamak, ardından gerçek verileri yazmaktır. Bu, günlüğün bir çökmeden sonra fs'yi kurtarmak için her zaman kullanılabilmesini sağlar, ancak senkronizasyon işleri yavaşlatır ve yazma önbelleğinin amacını yarıya indirir. Böylece engeller daha iyi bir yedek olarak eklenmiş syncve uygun disk desteği ile senkronizasyonun aldığı performansın çoğunu güvenle geri alabilirler.
psusi

2

Sadece kirli bir kapatma nedeniyle bir günlük dosya sistemini fsck etmeye gerek yoktur.

Bütün meta günlük kaydı çalışma zamanı performans kaybına kalıcı nedeni dosya sistemi dosya sistemi temiz kaldırılan değilse otomatik olarak monte yanındaki meta günlüğünü olarak yeniden oynatırken tutarlı% 100 yapılabilir sağlamaktır.

fsck'in tek rolü meta veri tutarlılığını sağlamaktır, bu nedenle sadece dosya sistemi düzgün bir şekilde sökülmediği için fsck'i çalıştırmak gereksizdir.

Günlük kaydı dosya sistemi diğer nedenlerle bozulabilir - donanım hatası, sürücü hataları, yönetici hataları vb. - Bu nedenle fsck araçları kesinlikle gereklidir. Sadece kirli bir kapatma nedeniyle onları çağırmak için hiçbir neden yoktur.


onları her 'n' yeniden başlatmaya çağırmaya ne dersiniz? kullanışlı? ya da sadece bir sorunun bildirilmesini bekleyin ve sonra fsck'i çalıştırın?
simpleuser
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.