Beklenmeyen güç kaybı bir Linux kurulumuna zarar verebilir mi?


22

Raspberry Pi, Beagle Board / Bone veya Olimex gibi bir Linux gömülü panosunda (Debian kullanıyor) bir uygulama geliştiriyorum. Kurullar, elektriğin beklenmedik bir şekilde kesildiği (PSU'yu yerleştirmek için çok karmaşık olan bir ortam) çalışır ve birkaç gün her gün gerçekleşir. Beklenmeyen elektrik kesintilerinin Linux İşletim Sisteminde çökmeye / soruna neden olup olmayacağını merak ediyorum? Endişelenmem gereken bir şey varsa, beklenmedik elektrik kesintilerine karşı işletim sistemi üzerindeki zararları önlemek için ne önerirsiniz?

PS. Uygulamanın bazı verileri depolama ortamına (SD kart) yazması gerekiyor, bunu salt okunur olarak monte etmenin uygun olmadığını düşünüyorum.


1
Çok değiştirdiğiniz dosya sistemlerinde ext2'den (ext3 veya daha üstü kullanın) uzak durun ve çoğunlukla uygun olmalısınız.
LawrenceC

SD kartlarınızı belirtmekte çok dikkatli olmadığınız sürece , beklenmedik bir şekilde gücü keserseniz, kartlar hiçbir şeyi garanti etmez. Kart, aşınma seviyesindeki bir hareketin ortasında olabilir ve garip, beklenmedik yolsuzluklara yol açabilir - ki bu farklı bir bölmede de olabilir!
derobert

Tam olarak nasıl yapılacağını bilmiyorum, ancak temel uygulamalarınızı işlem tabanlı yapmayı düşünebilirsiniz. Bu şekilde, geçerli dosyanızı ve yedeğini alabilirsiniz. İşlemleri geçerli dosyanıza uygularsanız, başarısız olursa, geçerli dosyayı yedekten geri yükleyebilir ve işlemleri yeniden uygulayabilirsiniz. Geçerli ve yedekleme arasında sembolik bağlantılar kullanarak veya dosya adlarını değiştirerek geçiş yaparsanız, bu kopyalamadan çok daha az hata şansıyla çok hızlı bir şekilde gerçekleşebilir. Başarılı bir güncellemeden sonra geçerli dosyanız yedeklenir ve yedekleme geçerli olur.
Joe,

Devam etti. Bu neredeyse işe yarıyor. Yeni mevcut dosya ayrıca işlemlerin iki kez yapılmasını gerektiren işlemlere de ihtiyaç duyuyor, bu yüzden daha iyi bir yol olduğuna eminim. Her durumda, büyükse, tüm dosyayı kopyalamaktan çok daha hızlı ve daha güvenli olabilir.
Joe,

Yanıtlar:


14

Beklenmeyen elektrik kesintileri dosya sistemi verilerinin bozulmasına neden olabilir - örneğin, bir dosya bir dosyaya yazmaya başladığında, ancak yazma işlemini tamamlamadıysa, dosya yalnızca yarıya kadar yazılabilir. Şimdi bir elektrik kesintisinin bir çekirdek yükseltme işleminden geçtiğinizde gerçekleştiğini hayal edin ...

L0b0'ın yazdığı gibi, günlük kaydı dosya sisteminin kullanılması yardımcı olacaktır, çünkü gerçekte neler yapıldığını takip edebilecektir. L0b0 ile bağlantılı olan wikipedia bilgisine ek olarak, /unix/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure'ın yanı sıra ilginizi çekebilir .

Bir programcı olarak, dosyalara yazma işleminin atomik bir süreç haline gelmesi için dikkatlice düşünülmesi gerektiği açıktır (yani, ya tamamen ya da hiç yapılmamıştır, ya da asla yarısı yapılmamıştır). Bu oldukça karmaşık bir konudur.


10
Bir dosyayı bozan yazma kesintilerine karşı koruma kodundaki genel işlem, file.name dosyasını doğrudan değiştirmek yerine, tamamen yeni bir dosya file.name.newversion yazmak yerine eski sürümün yerini almak için delete / rename komutlarını kullanmaktır. yenisi. Her adımda bir kesintiden kurtulmak için temizleme kodu eklemeniz gerekir; ancak bu yaklaşım her zaman dosyanın iyi bir kopyasını diskte bırakır. Bu, tasarımınızı etkileyebilir, çünkü tek tek büyük dosyaları kötü bir şekilde güncellerken veya tek bir dosyada sık sık değişiklik yapar.
Dan Neely, 15

11

İşletim sistemi bozulma olasılığını en aza indirmeye yardımcı olmak için, SD kartta ayrı "sistem" ve "veri" bölümlerinin olması en iyisidir. Bu şekilde, "sistem" bölümünü salt okunur olarak bağlayabilir ve "veri" bölümünde çok esnek bir FS kullanabilirsiniz.

Ek olarak, bu kartların çoğunun çok düşük güç gereksinimi vardır, bu nedenle pil yedeklemesi mümkündür. Raspberry Pi'nin "LiPo binicisi" kartı, güç kaybında temiz bir kapatma sağlamak için temel bir UPS olarak kullanılabilir.


5

Bu bağlı olacaktır

  1. günlük kaydı dosya sistemi kullanıp kullanmadığınızı ve
  2. Uygulamaların durdurulmuş işlemeyi ne kadar iyi yapabildiğini

Örneğin, bir dosyayı işleyen ve sonuçları hesaplanırken (giriş satırı başına bir çıkış satırı) başka bir dosyaya yazan bir uygulama düşünün. İşlem sırasında güç kesilirse ve aynı uygulama yeniden başlattıktan sonra çalıştırılırsa, giriş dosyasının başlangıcından itibaren yalnızca işlemi yeniden başlatamaz - bu, çıktı dosyasının yinelenen bilgiler içereceği anlamına gelir.

Varsayımsal karmaşık bir sistem hakkında kesin bir şey söylemek çok zor olabilir, ancak çoğu kararlı Linux yazılımı çökmeleri oldukça iyi bir şekilde ele alıyor gibi görünüyor.


1

Kimse herhangi bir özel dosya sistemleri sözü beri: daha modern dosya sistemleri (ext3 ext4, ntfs) sapın edebiliyoruz çok daha iyi çöküyor nedeniyle eski dosya sistemleri (ext2, dahili, fat32) daha günlük kaydı .

Sabit sürücünün çökmediğini ve yalan söylemediğini varsayarsak, tam bir elektrik kesintisi dosya sistemini bozmaz . Bununla birlikte, yazılan tek tek dosyalar hala bozuk olabilir, bu nedenle, elektrik kesintisi sırasında işletim sistemini güncellemenin ortasındaysanız, işletim sistemini düşürmek hala mümkündür.

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.