BBWC: teoride iyi bir fikir ama hiç biri verilerinizi kurtardı mı?


26

Bir BBWC'nin (Batarya destekli yazma önbelleği) ne yapması amaçlandığını biliyorum - ve daha önce bunları iyi UPS'lerde bile sunucularımda kullandım. Bunun için koruma sağlamadığı kesin olarak başarısızlıklar var. Gerçekten pratikte herhangi bir gerçek yarar sağlayıp sağlamadığını anlamak merak ediyorum.

(NB Ben özellikle BBWC sahibi olan ve kaza / arıza olan ve BBWC'nin iyileşmeye yardım edip etmediği konusunda gelen cevapları arıyorum)

Güncelleştirme

Buradaki geri bildirimden sonra, bir BBWC'nin değer katıp katmadığı konusunda giderek kuşkuluyum.

Veri bütünlüğü hakkında herhangi bir güvende olmak için, dosya sistemi verilerin ne zaman geçici olmayan depolamaya bağlı olduğunu bilmelidir (zorunlu olarak disk değil - geri döneceğim bir nokta). Verilerin diske ne zaman yüklendiğiyle ilgili olarak birçok diskin yalan söylediğine dikkat etmek gerekir ( http://brad.livejournal.com/2116715.html ). Diskte önbelleğin devre dışı bırakılmasının diskleri daha dürüst yapabileceğini varsaymak makul görünse de, bunun da böyle olacağının garantisi yoktur.

Bir BBWC'deki tipik olarak büyük tamponlar nedeniyle, bir bariyer, diske gönderilmesi için önemli miktarda daha fazla veri gerektirebilir; bu nedenle yazma işlemlerinde gecikmelere neden olabilir: genel tavsiye, geçici olmayan bir yazma önbelleği kullanırken bariyerleri devre dışı bırakmak ve disk önbelleğe alma). Ancak bunun, yazma işleminin bütünlüğünü baltaladığı görülüyor - uçucu olmayan depolamada daha fazla veri tutulması, bunun daha tutarlı olacağı anlamına gelmez. Aslında, tartışmalı bir şekilde, mantıksal işlemler arasında bir ayrım yapılmadan, tutarlılık sağlama konusunda diğerlerinden daha az fırsat olduğu görülüyor.

BBWC, verilerin geçici olmayan depolamaya girdiği noktada (diske bağlı kalmak yerine) engelleri kabul ederse, o zaman performans cezası olmadan veri bütünlüğü gereksinimini karşıladığı anlaşılmaktadır - bu da engellerin hala etkinleştirilmesi gerektiğini göstermektedir. Bununla birlikte, bu cihazlar genellikle verilerin fiziksel cihaza yıkanmasıyla tutarlı davranışlar (bariyerler ile önemli ölçüde yavaş) ve bariyerleri devre dışı bırakmak için yaygın tavsiye sunduğundan, bu şekilde davranamazlar. NEDEN OLMASIN?

İşletim sistemindeki G / Ç bir dizi akış olarak modellenirse, yazma önbelleği işletim sistemi işletim sistemi tarafından yönetilirken yazma engellemesinin engelleme etkisini en aza indirmek için bir kapsam vardır; çünkü bu düzeyde yalnızca mantıksal işlem (tek bir akış ) taahhüt edilmesi gerekiyor. Öte yandan, işlemin hangi veri bitlerini oluşturduğunu bilmeyen bir BBWC tüm önbelleğini diske adamak zorunda kalacaktı. Çekirdeğin / dosya sistemlerinin bunu pratikte uygulayıp uygulamaması şu anda yatırım yapmaktan çok daha fazla çaba gerektiriyor.

Neyin yapıldığını ve şüphesiz ani güç kaybının yolsuzluğa yol açtığını söyleyen disklerin bir araya gelmesi yolsuzluğa yol açıyor - ve bir kesinti sonrasında tam bir fsck yapmayan bir Journalling ya da log yapılı dosya sistemi ile, yolsuzluğun tek başına tespit edilmesinin muhtemel olmadığı tamir için bir girişimde bulunuldu.

Arıza modları açısından, deneyimlerime göre çoğu ani elektrik kesintisi, şebeke elektriğinin kaybı nedeniyle meydana gelir (bir UPS ile kolayca azaltılabilir ve kapatma). Yanlış kabloyu raftan çeken kişiler kötü veri merkezi hijyenine (etiketleme ve kablo yönetimi) işaret eder. UPS tarafından engellenmeyen bazı ani güç kaybı olayları vardır - PSU’daki veya VRM’deki arızalar, bariyerli bir BBWC burada bir arıza durumunda veri bütünlüğü sağlar, ancak bu tür olaylar ne kadar yaygındır? Buradaki cevapların eksikliğine göre çok nadir değerlendiriliyor.

Hata toleransının yığında daha yüksek bir değere taşınması, BBWC'de çok daha pahalıdır, ancak bir sunucuyu küme olarak uygulamak, performans ve kullanılabilirlik için birçok başka yararı vardır.

Ani güç kaybının etkisini azaltmanın alternatif bir yolu da bir SAN - AoE uygulamak olacaktır. Bunu pratik bir teklif haline getirir (iSCSI'daki noktayı gerçekten göremiyorum) ancak yine de daha yüksek bir maliyet var.


3
NetApp dosya sunucuları uzun yıllardır NVRAM yazma önbelleklerine sahipti ve çok fazla sayıda güç kaybettim ve dosya sistemlerini bozmadım. Bir şeyin bir şeyi kurtardığını kanıtlamak zor, çünkü biri kurtarıldığından beri felaket olmadı; Ne kanıtı arıyorsun?
MadHatter,

Muhtemelen, batarya destekli yazma önbelleğinin arıza kiplerini, pili olmayan bir yazma önbelleğine karşı da düşünmelisiniz.
Stefan Lasiewski

1
Bir anket değil - bunu araştırmak için çok zaman harcadım - ve BBWC'nin ne yapması gerektiği hakkında çok fazla bilgi bulabilirim - fakat pratikte hangi faydaların gerçekleştiği hakkında çok az bilgi bulabilirsiniz. Bir BBWC'nin verilerini kaydettiğini söylediği yerde aldığım tek cevabın, elektrik kesintisi durumunda yönetilen kapatma olmadığına dikkat edin. Şimdiye kadar hiçbir şey, benim kuşkularımı reddetmedi: BBWC bazı durumlarda verilerinizi koruyabilirken, bu koşullardan başka yollardan da kaçınılabilir.
symcbean

1
Hayır, bu BBWC'ye sahip olmamanın verilerinizi kaybedebileceğinin bir kanıtı . Kanıtlanması - ve bu sistemde uzun mesafe sysadmins çoğu şüpheli sahip uçucu veri hikayeleri edildi elektrik kesintileri kaybetti; Kesinlikle yaparım - BBWC'ye sahip olmanızın verilerinizi kaydedebileceğini ispat edemezsiniz ki bu da OP'nin istediği şeydi.
MadHatter

1
Bazı ileri analizler ve modellemeler, BBWC + 'nın hiçbir engelinin NOOP dışındaki herhangi bir IO zamanlayıcısında tespit edilemeyen yolsuzluğa yol açamayacağını öne sürüyor (bu konuda yanlış olabilirim, aksi halde önermek için kanıt bulmakta çok çalıştım). Ayrıca bakınız symcbean.blogspot.co.uk/2014/03/…
symcbean

Yanıtlar:


34

Emin. Pil destekli önbellek (BBWC) ve daha sonra flash destekli yazma önbelleği (FBWC) çökmelerden ve ani güç kaybından sonra uçuş verilerinizi korudum.

HP ProLiant sunucularında, tipik ileti şudur:

POST Error: 1792-Drive Array Reports Valid Data Found in Array Accelerator

Bunun anlamı, " Hey, yazma önbelleğinde yeniden başlatmadan / güç kaybından kurtulan veriler var! Bunu şimdi diske geri yazacağım !! "

İlginç bir durum bir kasırga sırasında güç kaybeden bir sistemin ölümünden sonraki adımdı : dizi dizisi:

POST Error: 1793-Drive Array - Array Accelerator Battery Depleted - Data Loss
POST Error: 1779-Drive Array Controller Detects Replacement Drives
POST Error: 1792-Drive Array Reports Valid Data Found in Array Accelerator

1793 POST hatası benzersizdir. - Sistem kullanımdayken, veriler Array Accelerator belleğindeyken güç kesildi. Bununla birlikte, bunun bir kasırga olması nedeniyle, güç dört gün içinde geri yüklenmedi, bu yüzden dizi pilleri boşaldı ve içindeki veriler kaybedildi. Sunucunun iki RAID denetleyicisi vardı. Diğer kontrolörde, bataryadan çok daha uzun süren bir FBWC ünitesi vardı. Bu sürücü düzgün bir şekilde iyileşti. Bazı veri bozulması, boş pil tarafından desteklenen diziyle sonuçlandı.


Tesiste çok fazla pil kullanım süresine rağmen, güç ve tehlikeli şartlar olmadan dört gün herkesin sunucuları güvenli bir şekilde kapatmasını imkansız hale getirdi. görüntü tanımını buraya girin


5
Bu bilgileri uzun süre tutmak için çok bilgilendirici ve iyi bir iş.
senet02392

İlginç! Acaba HP, Smart Arrays denetleyicilere P2000
Gabriel Talavera

4
@GabrielTalavera Evet, HP 2010'dan beri flash destekli (kapasitörler) önbellek kullanıyor. Daha fazla pil yok.
ewwhite,

Adaptec kullanarak burada aynı;) Artık endişe ve düzenli değiştirme.
TomTom

Sağol, teşekkürler - tam olarak aradığım şeyi. Bir soru: UPS'nin gücüne ne oldu? UPS'iniz düşük olduğunda sistemi indirmiyor mu?
symcbean

10

Evet, bu dava vardı.

Veri merkezinde "UPS'siz" sunucu (veri merkezinde bir UPS varsa). PDU hatası - sistem sert bir şekilde düştü. Veri kaybı yok.

Ve bu temelde öyle. Bir BBWC ile ilgili en iyi şey makinede olmasıdır. UPS'e sahip olun - inanın bana, bazen birisi aptalca bir şey yapar (yanlış kabloyu çekmek gibi). Bir UPS haricidir. Oh, BU kablo;)


Teşekkürler TomTom. Bu nedenle, verilerinizi öncekine döndürmek yerine bir sonraki bariyere yönlendirmenizi sağlar (taramayı kullanma veya yapılandırılmış dosya sistemlerini günlüğe kaydetmediğiniz sürece). Bu, burada değerlendirmeye çalıştığım önemli noktalardan biri. Bir dosya sunucusu rolü için marjinal olarak daha iyi bir koruma sağlar gibi görünüyor, ancak dosya sistemi veya OLTP DB bütünlüğüne yardımcı olmuyor.
symcbean

Gerçek anlamda olur - OLTP, günlük yazımları kesin olarak yazıldığı sürece sunucu güç kesintilerini incelikle ele almak için zarif bir şekilde işlenir;) Ve günlük IO hızı sınırladığı için "sahte yazma" (baskın denetleyicisi tarafından bildirilir) hız verir - ancak risk altında Geçici olmayan bir önbellek kullanmazsanız veri kaybı.
TomTom

RedHat’ın BBWC’nin önündeki engelleri devre dışı bırakmanız gerektiğine inanıyorum - bu performansı geliştirirken, elektrik kesintisi gibi ani bir kesinti durumunda hiçbir koruma sağlamaz - erk! access.redhat.com/site/documentation/en-US/…
symcbean

@symcbean Ortamınızda ani güç kaybınız olmamalı. Bu, önlenmesi en kolay durumlardan biri. Neden sunucu gibi koşmak yapmak bok nispeten seyrek geçtiği zaman% 100?
ewwhite,

1
Gerçekten de bir BBWC'nin varlığının tek nedeni ani bir güç kaybı sorununu azaltmaktır. Bu nedenle hiçbir engeliniz yoktur.
TomTom

4

HW RAID denetleyicilerinde pil destekli önbelleğin tamamen başarısız olduğu 2 vakam oldu (2 ayrı şirkette).

BBC, bataryanın çalıştığı şaşırtıcı olmayan fikrine dayanır. Buradaki nokta, kontrolördeki bir noktada pilin arızalanması ve yıkıcı olan, birçok HW baskın kontrolöründe sessizce bitmesidir . Güç kaybına karşı korumalı bir önbelleğimizin olduğunu düşündük ama yapmadık.

Güç kaybında RAID dizi veri kaybı o kadar genişti ki, tüm disk içerikleri kurtarılamaz hale getirildi. Her şey kayboldu. Vakalardan biri, tamamen test için ayrılmış bir makineyi içeriyordu ama yine de.

Ondan sonra "bir daha asla" demiştim, Linux + dergi tabanlı fs'de güç kaybına (d 4) karşı oldukça dayanıklı olan yazılım tabanlı disk aynalamaya (mdadm) geçtim ve bir daha arkama bakmadım. Verilmiş, son derece yüksek GÇ kullanımı olmayan sunucularda kullandım.


Teşekkürler JD: Özel olarak ne sorduğum olmasa da, bunun insanların BBWC hakkında yaptıkları varsayımlarla büyük ölçüde alakası olduğunu görebiliyorum. Donanım ve yazılım RAID hakkındaki tartışmaların çoğuna yankılanıyor, sanırım RAID yazılımının önbellek denetleyicisinin kullanılmasını engellemediğini (geçici veya başka bir şekilde) engellemediğini belirtmeliyim .
symcbean

IME, Dell ve HP baskın kartları, BBWC'deki hatalı piller hakkında (uygun bir izleme sistemine sahip olduğunuz varsayılarak) şikayet edecektir.
mfinni

BBWC için uygun prosedürler batarya testini içermelidir - örneğin, batarya bir süredir test edilmemişse 3 yazılım denetleyicileri sizi uyaracaktır ve bataryanın hala sağlıklı olduğunu test etmek kolaydır (tek dezavantajı yazma önbelleğinin olmasıdır. Test sırasında devre dışı bırakılır).
iustin

4

Bu soruya ikinci bir cevap gerektiriyor gibi görünüyor ...

Sadece bağımsız bir VMware ESXi sunucusunun RAID 5 dizisindeki bir sürücüyü kaybetmesine neden oldum. Bozulan dizi, VM ve uygulama düzeyinde performansı etkiledi.

Smart Array P410i in Slot 0 (Embedded)    (sn: 5001438011138950)

   array A (SAS, Unused Space: 0  MB)

      logicaldrive 1 (1.6 TB, RAID 5, Recovering, 42% complete)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, Rebuilding)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 300 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 300 GB, OK, spare)

Bu şirketteki BT çalışanı, bir sürücünün arızalı olduğunun farkında değildi ve sunucuyu sıfırladı ( hepsini daha iyi hale getirmek için? ).

Bunu, üstünde çalışan meşgul sanal makinelerle ödün vermeyen bir diziye yapmanın ilginç etkisi şuydu:

Önbellek Durumu Ayrıntıları: Geçerli dizi denetleyicisinin, en son sıfırlandığında veya çalıştırıldığında, pil / kapasitör destekli yazma önbelleğinde saklanan geçerli verileri vardı. Bu, sistemin dikkatlice kapatılmadığını gösterir. Dizi denetleyicisi bu verileri sürücülere otomatik olarak yazdı veya yazmaya çalıştı. Bu mesaj, dizi denetleyicinin bir sonraki sıfırlanmasına veya güç döngüsüne kadar görüntülenmeye devam eder.

Böylece sistem aniden durdurulmuş olsa bile, uçuş verileri BBWC tarafından korunuyordu. Sanal makinelerin hepsi düzgün bir şekilde kurtarıldı ve sistem şimdi iyi durumda.


3

"Verilerinizi kaydetmeye" ek olarak, diğer şeyler için iyidirler. Ayrıca, disk yazma sırasını düşük tutarak IO alt sisteminin performansını geliştirmek için yazma önbelleklerinde (önbellekte) de iyidirler. Bu, özellikle etkileşimli performansın en önemli olduğu sunucular için önemlidir - örneğin Citrix XenApp veya Windows Terminal Hizmetleri.

Bu bir web sunucusu veya dosya sunucusu için daha az önemlidir. Küçük bir gecikme olduğunu farketmeyebilir, hatta alışmaya bilebilirsiniz. Ancak, bir Office uygulamasındaki bir simgeye tıkladığınızda, yanıt vermeyi beklersiniz. Ve CEO'nuz da öyle.


"BBWC'nin (Batarya destekli yazma önbelleği) ne yapması gerektiğini
biliyordum

2
Ayrıca şunları da söyledin: "Uygulamada gerçekten herhangi bir fayda sağlayıp sağlamadığını merak ediyorum." Size (ve gelecekteki okuyuculara) somut bir tane verdim. Sorunuzdan, bu fayda hakkında bildiğiniz hiç belli değildi. Ve cevabım yanlış değil.
mfinni

Peki, yaptığınız puanların geçici bir yazma önbelleğinden farkı nedir?
symcbean

Açıkçası o oldu sen farkında olduklarını özelliği. Fakat yine de, bunu netleştirmediniz. @mfinni sadece yardımcı oluyor.
senet02392

Bazı sistemler uçucu bir yazma önbelleğini etkinleştirmenize izin vermez, bu yüzden var. Ancak hayır, verileri önemsemiyorsanız ve geçici bir yazma önbelleği kullanabilirseniz, bunun için gidin.
mfinni
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.