Başsız bir pi ağını kaybettiğim hariç , pi'yi düzgün bir şekilde kapatmaktan kaçınmak için pi'yi çıkarmayı alışkanlık yapmıyorum , bu durumda genellikle bir klavye takmak için çok tembelim.
Genellikle her zaman yeşil ACT ışığının o noktada yanmadığından emin olurum; son modellerde (veya bellenimde?) SD karta erişilemediğinde bu durum kapalı olacaktır. Emin olmak istediğiniz şey budur. Sürekli yazmıyorsanız, bu yeterince basit olmalıdır; serbest RAM'de yeterli miktarda boş yer olduğu sürece (bağlama göre 50-100 + MB diyelim), o zaman sık sık yeniden kullanılmaya eğilimli olan ancak herhangi bir anda bir işlem tarafından yüklenmeyen şeyler içinde olacak serbest bellekte önbelleğe ve OS değil, gerçek fiziksel ortam ile oradan yeniden. Tüm çağdaş genel amaçlı işletim sistemleri bu şekilde çalışır.
Pi SD karttan yararlanıyorsa, risk asgari düzeydedir : karttaki dosya sistemi bellek durumuyla senkronize değil. Normalde, bu büyük bir sorun değildir; yeni başlayanlar için, çoğu pis dosyada varsayılan olarak kullanılan dosya sistemi günlüğü , dosya sistemi temiz bir şekilde sökülmezse, önyüklemede otomatik olarak uygulanması gereken fsck'e karşı bir savunma olabilir . Neden kısaca "olabilir" ve "değil" dediğimi açıklayacağım, çünkü bu bağlamda sık sık olmayabilir .
Bildiğim kadarıyla, fişi çekerken dosya sistemi bozulması veya veri kaybı ile sonuçlanmadım, bu da yıllar boyunca yüz veya daha fazla kez yapmış olabilirim. Ancak yine de alışkanlık olarak yapmıyorum. Günde birkaç kez yaparsanız, sonuçta istatistiksel risk seviyesi ne olursa olsun karşılaşabilirsiniz ve potansiyel olarak kötü bir yakalama söz konusudur.
İşte SORUN:
Son zamanlarda bana, işletim sistemi / dosya sistemi mekanizmalarının güçsüz olabileceği ve bazılarının neden fs bozulması ile, özellikle sistemden bağımsız olarak kabloyu çekenlerde sürekli sorun yaşadığını açıklayabilecek bir SD kartla ilgili bir sorun olduğu ortaya çıktı. devlet - örneğin, son zamanlarda burada birisi, yolsuzluğun bu tür elektrik kesintilerinde sistemi ~ 1/40 oranında önyüklenemez bıraktığı hesaplama modülleri çalıştırdığını iddia etti.
Özetle , SD kartların doğasını dikkate almadan , sistem meşgul olsa bile bu olmamalıdır, çünkü bozuk olma olasılığı en yüksek olan şey, etkili olan herhangi bir sistem yazılımı değil, yazılan kritik olmayan şeylerdir. salt okunurdur ve yalnızca güncellemeler sırasında değiştirilir.
Bitler etrafında hokkabazlanıyorsa ve çeşitli bitlerin saklandığı dosya sistemi meta bilgileri bozulursa olabilir. Yine de, dergi ve fsck bununla başa çıkabilmelidir, bu da çekirdeğin önyüklenmesini gerektirir, ancak pi'deki çekirdek kullanım sırasında da sökülebilecek ayrı bir önyükleme bölümündedir (güncelleme sırasında hariç). sistem önyüklendikten sonra bunların hiçbiri kullanılmaz. Yani bölümle ilgili bilgiler, monte edilmiş olarak bırakılsa bile etkili bir şekilde bozulmamalıdır.
Fakat...
SD kartlar, işletim sistemi için kara bir kutudur. Bundan kurtulmanın bir yolu yok. Bilgisayar donanımının bir parçası olan SD kart denetleyicileri için belirli sürücüler olsa da (pi'de, bu SoC'nin bir parçasıdır) Farklı, belirli marka ve modeller için sürücü diye bir şey yoktur.
Yine de, hepsinin içinde çok farklı şekillerde çalışabilen mikro denetleyiciler var. 1. Kartı kara kutu yapan budur; işletim sistemi ile standart bir SD protokolü üzerinden etkileşime girer ve işletim sisteminin sahip olduğu son kontrol noktası budur.
Geleneksel eğirme disklerinden farklı olan SD kartların ve diğer katı hal ortamlarının yaptığı şeylerden biri opak sanal adresleme kullanmaktır; işletim sisteminin algıladığı sekanslarda fiziksel olarak bilgi depolamazlar. Bu çoğunlukla iyi bir şeydir, aksi takdirde farklı kart markaları vb. İçin farklı sürücülere gerçekten ihtiyaç duyabiliriz ve kartların ömrünü önemli ölçüde uzatan aşınma seviyelendirmesini (opak bir şekilde) gerçekleştirmesine izin verir .
Güventikleri başka bir şey de nispeten büyük "silme blokları" dır; bir bloktaki verilerin değiştirilmesi gerektiğinde, tüm blok silinir ve yeniden yazılır. Dosya sistemleri de elbette bu tür bir şey yaparlar, ancak bunun bir sistem yazılımı düzeyinde olduğunu ve bundan kaynaklanan sorunların tam olarak günlükleme ve fsck
ilgilenme sorunları olduğunu unutmayın.
Daha aşılmaz bir problemin temelinde, SD dosyalarının yaptığı ölçek dosya sistemleri genellikle SD kartların yaptığı ölçeklerden çok daha küçüktür. Değilse, bir dosya sistemi bloğu yalnızca bir dosyadan veri içerebileceğinden, büyük miktarda depolama alanı harcarsınız. Blok 2 MB ise ve sadece birkaç kB veri varsa, geri kalanı boşa gider. Yani dosya sistemi blokları 1/2 KiB ila 4 KiB arasında değişme eğilimindedir.
SD kartların bunu yapamadıkları ve aslında yapamadıkları oldukça açıktır, çünkü SD karttaki denetleyicinin "dosya", "dosya sistemi" ve hatta "cihaz bölümü" gibi sınırlar hakkında hiçbir bilgisi yoktur. Sadece OS'nin istediği veri parçalarıyla, fiziksel bir seviyede herhangi bir şeyin olabileceği kara bir kutunun içinden opak bir katman aracılığıyla ilgilenir .
Açıkçası nedenlerinden biri (öncül kartların yanı sıra "ilk etapta bunu yapamadı"), bu bloklar genellikle oldukça büyüktür, ancak kartlar tüm alanı kullanmak için iyi bir iş yapıyor gibi görünüyor. Silme bloğu birkaç megabayt boyutunda olabilir. Dahası, detaylar özeldir. İşletim sisteminin karttan silme bloğu boyutunu isteyebileceği mekanizmalar olsa da, kartın bunu sağlaması gerekmez, bu konuda yalan söyleyebilir ve işletim sistemi kaldıraç kullanmaya çalışırsa saçma olur.
Bundan şu sonuca varır:
SD kart denetleyicisinin, tutarlı dosya sistemleri ve parititions anlamında "doğru" hangi verilerin ait olduğu konusunda hiçbir fikri yoktur ve
SD kart, işletim sisteminin gerçekten göremediği bir kara kutudur,
Daha sonra, bir kartın 4 KiB veya daha küçük dosya sistemi bloklarını kullanan birkaç bölüm içerdiği belirli bir 1 MB silme bloğunda ne var, kart yeterince kullanıldıktan sonra (ve muhtemelen çok fazla kullanılmamış olsa bile) herşey). İşletim sistemini daha büyük / karşılık gelen blok boyutlarını kullanmaya zorlasanız bile bu muhtemelen doğrudur; sonunda yanlış hizalanmış olacaklar.
Yani:
SD kart bir bloğu değiştirmenin ortasındayken güç kesilirse, bu , karttan herhangi bir şey olabilen oldukça büyük miktarda rasgele veri kaybına neden olabilir . "Salt okunur" olarak işaretlenmiş bilgi olabilir. Hatta monte edilmemiş bir bölümden ve açıkça kullanılmayan önyükleme bölümünden bilgi olabilir.
Bu olursa ve kartın kendine özgü bir koruma sistemi yoksa (ki bazıları olabilir, ancak eminim çoğu yok), o zaman FUBAR durumuna bakabilirsiniz. Yolculuk, bölüm sınırlarını bile tanımayan rastgele MB boyutunda bozulmaya karşı koruma sağlamaz. Veya fsck.
Ya da, kartın donanımı genellikle tescilli olduğundan, kart üreticisi tarafından üretilen yazılım haricinde herhangi bir şey olabilir - ki bu makul. Hiç böyle bir şey duymadım. Bu, kartları daha karmaşık, daha pahalı ve kullanımı daha zor hale getirecektir. Amaç bu değil.
Başka bir deyişle, SD kartların bu şekilde güvenilir bir şekilde kullanılması amaçlanmamıştır . Ucuz ve çok kullanışlıdırlar, ancak bu protokolde bir değiş tokuşun sonucudur: Genel olarak, kartın gücünü keyfi olarak öldürürseniz, karttaki herhangi bir şey için veri bütünlüğü garantisi yoktur.
Pi'yi fişten çekerken neyi yanlış yapabiliriz? Sadece fişini çekmeye başlamam gerekir mi? Not: Bu durumda veri kaybı konusunda fazla endişelenmiyorum.
Pi'ye fiziksel olarak zarar vermez, hayır, sadece "veri kaybının" tamamen yeniden biçimlendirilmesi gereken "yararsız kart" a kadar genişleyebileceğine dikkat edin. Ancak, yeşil ACT ışığı kapalıyken bunu yapmanın çok düşük olduğunu söyleyebilirim.
- Bazı belirli kartların / modellerin neden bazı insanlar için diğerlerinden daha kötü olduğunu açıklarken bu önemli olabilir. Ne yazık ki, aynı şekilde etiketlenen iki kart belirtilen özellikler (boyut, hız, vb.) İle aynı olsa da, üreticiler bunları kurucu parçalar açısından gerçekten% 100 aynı yapmak zorunda değildir.