Katılımsız çalışan sistemler için “güvenli” ext4 yapılandırması


18

Uzun süre gözetimsiz çalışması gereken linux çalıştıran bir sistemim var. Sistem, depolama için endüstriyel CF kart kullanır. Çoğu zaman yanıp sönen yazma işlemleri yoktur, ancak her zaman bazı yapılandırma verileri / ayarları değiştirilebilir. Sistem elektrik kesintilerine karşı dayanıklı olmalıdır.

Bunun için ext4 kullanmak istiyorum. Bu tür kurulumlar için ext4'ü yapılandırmanın en iyi yolu nedir? Akılda tutarak:

  • Performans hiç sorun değil (özellikle yazma performansı)
  • Güç kaybında, son birkaç saniyede yazılan verilerin kaybedildiği anlamına gelse bile, sistem her zaman temiz durumda açılmalıdır.
  • Eğer fsck önlemek mümkün, o zaman daha iyi.

(Bu ilgili sorunun farkındayım: Güç kaybında ext4 / Linux sürücüsündeki veri bozulmasını önleyin )

Yanıtlar:


11

Teknelerde otomasyon için bir sistem inşa etmek için çalıştım ve bir ön koşul vardı: her an güç düşebilir ve her şey tekrar doğru şekilde güçlendirilmelidir.

Benim çözümüm, uygulama ve yapılandırmalar için sadece bir rw klasörü olan Gentoo tabanlı bir initramfs sistemi kurmaktı (bu her yönlendirici / güvenlik duvarı satıcısı tarafından kullanılan yaklaşımdır). Bu çözüm, sistem yükseltmeleriyle uğraşırken ilave bir karmaşıklık katmanı ekler, ancak sistemin HER ZAMAN önyükleme yapmasını sağlar.

Özel sorunuzla ilgili olarak, EXT4 günlüğünü daha hızlı fsck'e (birkaç secodstan) sahip olması için etkin tutmalı, data = günlük bağlama seçeneğini kullanmalı , kesinleştirme seçeneğini azaltmalı veya arabellekleri her zaman boş tutmak için senkronizasyon seçeneğini kullanmalısınız .

Referanslar: http://www.kernel.org/doc/Documentation/filesystems/ext4.txt


İyi! Uygulama çok fazla veri yazmazsa, senkronizasyon seçeneğinden memnun olmalısınız.
Giovanni Toraldo

1
Bakılması daha iyi bir yer Linux çekirdek dokümanlarıdır: kernel.org/doc/Documentation/filesystems/ext4.txt Herhangi bir potansiyel veri kaybını en aza indirmek için verileri etkinleştirin = günlük ve commit = nrsec (* == varsayılan)
Giovanni Toraldo

Zamanlanmış taahhütler kesinlikle faydalıdır - sadece 1 saniyelik aralıklara inebileceğinize inanıyorum (yazma yoğun operasyonlar için MAJOR performans cezası olsa da), ancak 1 saniyelik veri kaybını karşılayamıyorsanız daha büyük sorunlarınız var;)
voretaq7

2
günlüğe kaydetmenin en önemli olumlu etkilerinden biri, bir çökmeden kurtulmanın, en son taahhüt edilmemiş değişiklikleri tekrar oynatma meselesidir, bu da tüm hacmi tutarsızlıklar açısından kontrol etmekten çok daha hızlıdır. Bu sizin en büyük probleminizse, varsayılan EXT4 ile devam etmeli ve mutlu olmalısınız.
Giovanni Toraldo

1
@Grodriguez "veri kaybetmek" "Dosya artık yok" dan "Veritabanımın içinde neden çekirdek parçası var?" - Her şey ne "kayıp" bağlıdır :)
voretaq7

12

Ben endişeliyim kadarıyla, EXT (tüm enkarnasyonlarında) oldukça korkunç bir dosya sistemi olduğunu söyleyerek önsöz - nispeten az sayıda Linux / EXT dosya sistemi bozulması " ilginç " daha gördüm {2,3,4} Sistemler, kullanma fırsatım olan nispeten çok sayıda Not-EXT dosya sisteminde sahip olduğumdan daha fazla.
Mümkünse daha sağlam bir dosya sistemi seçmeyi deneyin. Kaçınılmaz olduğu zaman kendinize teşekkür edeceksiniz.


Söylendi ve tüm kişisel önyargılar açıkta ve bir kenara itildi, EXT4 size yardımcı olabilecek üç özelliğe sahip:

  • Günlük
    kaydı EXT4, isterseniz Günlüklü dosya sistemi olabilir. Günlük kaydı özelliğini etkinleştirin (ve özellikle veri günlük kaydı modunu journalyoluyla tune2fsveya bağlama seçeneği olarak ayarlayın).
    Bu, tüm verilerin dosya sistemine "bağlanmadan" EXT günlüğüne yazılması gerektiğinden (her yazma temelde iki kez gerçekleşir) bir performans isabetine neden olur, ancak bir günlük tekrarının sizi olmadan alabileceği her zaman kurtarmanızı sağlar sorunları.

  • SYNChronous Mounts
    Güvenlik çok önemli bir syncseçenek olduğunda bir dosya sistemi kurmak her zaman iyi bir fikirdir. Bu, tüm yazmaları derhal diske zorlar - yine bu bir performans vuruşu, ancak CF kartını soran elektrik kesintileri veya rasgele yabancılar bekliyorsanız iyi bir fikir.

  • Yazılabilir dosya sistemlerini olabildiğince sınırlayın Bu, EXT'ye özgü değildir, ancak "sadece büyük bir kök bölüm oluşturun ve her şeyi içine dökün" genel Linux felsefesi oldukça aptalca . Uygun bir dosya sistemi yapısı (oluşturun /, /var, /usr, /home, vb ...) ve dosya sistemlerinin birçok salt okunur mümkün olduğunca montaj.
    Bu, güvenlik amacıyla unix sistemleri için ortak bir öneriydi, ancak sizin durumunuzda ek bir yararı var: Bir dosya sistemini yazamazsanız bozamazsınız.


Tamamen eşzamanlı bağların işlevselliği, her yazma işleminden sonra çağrılmaya eşdeğer değildirsync - Eşzamanlı bağlamalar, veri diskte olana kadar bir dosya sistemi yazma çağrısından geri dönmez (veya en azından olmamalıdır). Arama syncbeklemedeki tüm yazma işlemlerini temizler, ancak yazma işlemi ile geri dönüş çağrınız arasında syncverinin henüz diske yazılmayabileceği bir pencere (kısa olsa da) vardır .
voretaq7

Hangi dosya sistemini öneriyorsunuz? Deneyimlerinizi ölçebilir misiniz?
Mark Wagner

@embobo deneyimlerim tamamen anekdot: EXT dosya sistemleri ailesini hiç stres test etmedim, ama aklımda ortaya çıkan bir olay, "Tüm inodelarım nereye gitti?!?" - dosya sistemi çöktü ve sonradan bir şekilde temiz olarak işaretlendi, ancak her inode bir şekilde iddia edilen ancak asla başvurulmayan bir durumda kaldı. Bu karışıklığı düzeltmek için fsck olumlu EPIC (sadece yeni bir FS yapmak için yaraladık). O gün EXT dosya sistemleri ailesine olan tüm güvenimi kaybettim.
voretaq7

@Grodriguez Re: Günlük kaydı, üç seçenek data=journal(yukarıda tanımladığım), data=ordered(meta veriler günlüğe kaydedilir. Veriler, meta veriler dosya sistemine bağlanmadan önce diske bağlıdır) ve data=writeback(bu, verilerin günlüğe kaydedilmesi / korunması değildir - Kötü Şeyler çökme sonrasında olabilir (dosyaların ortasındaki önemsiz gibi). orderedBugünlerde çoğu Linux dağıtımında varsayılan olduğuna inanıyorum ...
voretaq7

2
"Yazılabilir dosya sistemlerini olabildiğince sınırlandır" ın yanı sıra: debian wiki'de bunu özel tedavi gerektiren arka plan örnekleri ile tam olarak yapmak için bir rehberdir. Diğer birçok distris için de geçerli olmalıdır: wiki.debian.org/ReadonlyRoot
krissi

7

EXT4 sisteminiz için en iyi seçenek gibi görünmüyor; Log yapılı bir dosya sistemine bakmanızı öneririm. Bunlar, verileri en son 'başı' gösteren bir işaretçi ile sanal bir akışa karşı sürekli bir yazma güncellemeleri akışı olarak ele alarak çalışır. Güncellemeler veri ve meta verileri depoya yazıp işaretçiyi güncelleyerek gerçekleşir. Yazma işleminden sonra ancak işaretçi güncellemesinden önce çökme durumunda en son veriler kaybolur ancak dosya sistemi tutarlıdır.

İki aday dosya sistemi LogFS ve NILFS'dir . Her ikisi de ana Linux çekirdeğinde mevcuttur.


1

Binanızın cihazı hakkında meraklandım. Gerçekten uygun olmayan bir dosya sistemi kullanırken gömülü bir cihazın güvenilirliğinin peşindesiniz.

Ext4 (ve ailesi), çeşitli donanım ve kullanım durumlarında milyarlarca saatlik kullanımla (sanırım) iyi bir genel amaçlı dosya sistemidir. Ancak, istediğiniz şey ext4 ile gerçekten uymuyor. Voretaq7 ve Giovanni'den gelen işaretçiler, gerekirse ext4'ü kullanmanın en iyisini elde etmenize yardımcı olacak, ancak gerçek cevap gereksinimlerinize daha uygun bir şey kullanmaktır. Steve sana birkaç seçenek sundu. Bir ext4 FS'den güç almaya devam ederseniz, sonunda bir karışıklık yaşayacaksınız.

Bu, sizin oluşturduğunuz tek seferlik bir sistemse, daha uygun bir şey kullanmayı seçmeli veya bir noktada sorun olacağını kabul etmelisiniz. Bu 100'de 1 veya 1000'de 1 elektrik kesintisi olabilir. Bu, riski almanıza yetecek kadar iyi olabilir ve cihaz herhangi bir manuel müdahale olmadan muhtemelen uzun bir süre (yıl) çalışabilir.

Bu, yaygın olarak dağıtmak / pazara sunmak istediğiniz bir ürünse, daha uygun bir şey kullanma seçeneğiniz vardır. Veya iş kararını, her yıl teçhiz edecek olan cihazların bir yüzdesini desteklemek ve bunları değiştirmek için değiştirilmesi veya manuel müdahaleye ihtiyaç duyacak şekilde alırsınız.

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.