Linux ile çalışmama süresi nasıl önlenir?


13

Genellikle Ubuntu yazılım güncellemeleri için yeniden başlatmalar gerekir (arıza süresi gibi yan etkileri olabilir).

Ubuntu'nun yeniden başlatma olmadan çekirdek güncellemelerine izin veren https://www.ubuntu.com/livepatch olduğunu görüyorum , ancak bu ücretli bir hizmettir. Ayrıca ksplice var .

Yükseltmelerin / yamaların hiçbir zaman yeniden başlatılmasını gerektirmeyen Linux dağıtımları / işlemleri var mı?

(Ben yüksek kullanılabilirlik (HA) sunucularını kurma ve tek kullanımlık sunucularını yaşıyorsanız iyi uygulamalar biliyorum - Ben değilim bu yüzden değil bir hizmet uydurarak hakkında soran ancak gerçek sunucularda.)


1
Hava boşluklu bir sunucu hiçbir zaman yeniden başlatmaya ihtiyaç duymayan bir makine olarak çalışır mı? Sonuçta, kimse erişemezse, yeniden başlatmanız gerekmez mi? ;) - Örneğin, nükleer enerji santralindeki bir şey yanlış olduğunda alarm çalan bir izleme sunucusu. (Evet, bunun muhtemelen rastgele bir sunucu yerine özel bir sistem olacağını biliyorum, ancak sadece 'güvenlik güncellemeleri' için yeniden başlatıldığında belki de tamamen titiz bir fikir olduğunu göstermek için örnek kullanıyorum.
djsmiley2k TMW

3
@ djsmiley2k Bu, yeniden başlatmadığınız bir makinenin size yeterli kullanılabilirlik sağlamadığı durumlardan biridir. Bunun yerine yedekliliğe ihtiyacınız var.
kasperd

@kasperd tamam, öyleyse hiç yeniden başlatılmamış makineler kümesi?
djsmiley2k TMW

3
@ djsmiley2k Soruya verdiğim yanıt zaten neden yeniden başlatılmayan bir makine kümesini asla yeniden başlatmamanızdan daha güvenilir olduğunu düşündüğümü tartışıyor.
kasperd

2
Bireysel sistem kapalı kalma sürelerinden kaçınmanın tercih edilebilir olduğunu düşündüren nedir?
warren

Yanıtlar:


12

Sorunuza, "Yükseltmelerin / yamaların hiçbir zaman yeniden başlatma gerektirmediği Linux dağıtımları / süreçleri var mı?" Michael Hampton'un canlı yamalamanın neden hiçbir yerde kullanıma hazır bir deneyim olmadığı hakkındaki yorumuna ek olarak, canlı yama da yeniden başlatma ile aynı sonucu elde edemez.

Bunu açıklamak için bir fıkra: Kısa bir süre önce, belirli bir yardımcı programın çok sayıda makinede segfaj yapmaya başladığı bir sorunu araştırdım. Yakın zamanda yükseltilen bir şeyin kırılıp kırılmadığını görmek için kullanılan paylaşılan kütüphanelere bakmayı denedim; ldd, çalıştırılabilir olmadığını söyledi (aynı ikili dosyayı dizüstü bilgisayarıma indirdiğimde, ldd paylaşılan kütüphane bağımlılıklarını iyi görebilirdi). Ben gdb içinde adım atmaya çalıştı; ilk talimata gelmeden önce segfaulize oldu.

Arızanın zamanlamasına baktığımda yakın zamanda bir Ksplice yaması uygulandığını gördüm. Yamayı yedekledim ve ikili ikili segfault yapmadı, sonra tekrar ekledi ve tekrar segfaj yapmaya başladı. Eşit olarak yamalı çekirdeğe yeniden başlatma iyi sonuç verdi. Ksplice milletlerinin doğru bir şekilde uygulanmadığı 32 bit destek için bir yama olduğu ortaya çıktı. Kredilerine göre, birkaç saat içinde sabit bir yama yayınladılar ve müdahale olmadan filomuzda doğru çalışmaya geri döndüler.

Başka bir örnek: Meltdown / Spectre yamaları o kadar invazivdi ki, Ubuntu çekirdek ekibi canlı yamanın pratik olmadığına karar verdi ve insanların tekrar canlı yamalar almadan önce sistemlerini sabit çekirdeğe yeniden başlatmasını gerektirdi.

Çok sayıda Ksplice ve Canonical Livepatch sistemiyle çok sayıda fiziksel ve sanal sunucu filosunu çalıştırıyoruz. Her ikisi de diğer birçok yazılımdan çok daha güvenilirdi, ancak yine de çekirdek canlı yamaya güvenmekten ziyade yeniden başlatma dostu bir mimari ile tasarlanmış hizmetlerimizi görmeyi tercih ederim.


30

Bir servisi yüksek oranda kullanılabilir hale getirmek ile bireysel bir makineyi yüksek oranda kullanılabilir hale getirmek arasında önemli bir fark vardır.

Çoğu durumda amaç, hizmeti yüksek oranda kullanılabilir hale getirmektir ve tek tek makinelerin kullanılabilirliği, yalnızca bu hedefe ulaşmanın bir yoludur. Ancak, tek tek makinelerin kullanılabilirliğini geliştirerek hedefe ne kadar ulaşabileceğiniz konusunda bir sınır vardır.

Yazılımın güncellenmesi gerektiğinden dolayı tüm kapalı kalma sürelerini ortadan kaldırabilseniz bile, tek tek makineler% 100 kullanılabilir olmayacaktır. Bu nedenle, hizmetin kullanılabilirliğini bireysel makinelerin kullanılabilirliğinin üzerinde artırmak için artıklığı daha yüksek bir seviyede tasarlamanız gerekir. Sorunuzun son cümlesi, en azından prensipte bunu bildiğinizi gösterir.

Bir hizmeti, tek tek makinelerin sunabileceğinden daha fazla kullanılabilir olacak şekilde tasarlarsanız, tek tek makinelerin yüksek kullanılabilirliğine ulaşmak için artık baskı kalmaz. Bu nedenle yüksek oranda kullanılabilir hizmetler için yeniden başlatmalardan kaçınmaya gerek yoktur. Bunun yerine, güvenilirlikten çok daha yüksek kazançlar elde edebileceğiniz diğer alanlara doğru tasarruf edebilmek için bireysel makinelerin güvenilirliğini feda edebilirsiniz.

Bireysel donanım bileşenlerinin arızalanması durumunda yüksek seviye sistem güvenilir olacak şekilde tasarlandıktan sonra, avantajlı olmaktan bir risk haline gelmek değişir.

Bu bir risktir, çünkü canlı yamalı bir makinenin davranışı ile en yeni çekirdek sürümüyle önyüklenen bir makine arasında küçük farklılıklar olabilir. Bu, bir sonraki sefer makine yeniden başlatıldığında kesintiye neden olabilecek gizli bir hata oluşturabilir. Bu risk, bazı kesintileri hafifletmek için bir yöntem olarak temiz bir sayfa oluşturmak için yeniden başlatılarak yükseltilir.

Bir gün, makineyi yeniden başlatmanın yardımcı olabileceğini düşündüğünüz bir kesinti olabilir. Ancak yeniden başlattığınızda, makinenin istenen duruma geri dönmesini engelleyen gizli hata sizi vurur. Canlı yama, böyle gizli bir hatanın oluşmasının tek yolu değildir, bir hizmetin manuel olarak etkinleştirildiği ve önyükleme sırasında asla başlatılmayacağı veya çok erken başlatılacak şekilde yapılandırıldığı kadar sıradan bir şey nedeniyle de olabilir. tatminsiz bağımlılıklar nedeniyle ortaya çıkmaz.

Bu nedenlerden dolayı, sorunları tespit edebileceğiniz ve sorunlar meydana geldiğinde yeniden başlatma sırasını durdurabileceğiniz kadar yavaş bir hızda tek tek makinelerin düzenli olarak yeniden başlatılmasıyla yüksek düzeyde kullanılabilir bir hizmet elde etmek daha kolay olabilir.


Risk tanımını beğendim; "yeni çekirdek ile yamalı vs önyükleme" .. Ancak, sorumu cevap vermedi .. hangi yeniden ifade edebilirim, 'livepatch' ile kutudan çıkan linux dağıtımları var mı?
user75126

@ user75126 İstemci makineler için sunuculardan daha uygun bir özellik olarak görüyorum. Ayrıca hangi dağıtımların desteklendiğini sormak bir ürün tavsiye sorusu gibi geliyor. Bana göre, bu şekilde soruyu yeniden ifade etmenin bu site için konu dışı kalmasının iki nedeni gibi geliyor.
kasperd

3
@ user75126 Oracle'ın Ksplice'sinin ücretsiz deneme sürümü ve Ubuntu ve Fedora masaüstü bilgisayarları için ücretsiz bir sürümü var (yalnızca bunu gerçekten zorlamıyorlar). Sorun, canlı yamaları oluşturmanın otomatikleştirilmesinin zor olması ve otomatikleştirilebilecek parçaların bile zaman alıcı olmasıdır. Bu yamaları oluşturmak nispeten emek yoğun bir işlemdir ve şirketlerin bunun için ücret alması mantıklıdır. Canlı yamaları kendim oluşturmak için neye ihtiyaç duyduğumu araştırdım ve oradan çıktım. Günümde böyle bir zamanım yok.
Michael Hampton

12
@ user75126 Bu sitede soru başlığını ve metnini mevcut bir yanıtı geçersiz kılacak şekilde değiştirmek gerçekten kötü bir uygulamadır. Farklı bir soru sormak istiyorsanız, farklı bir soru sorun.
Greg Schmit

2
@ user75126 Teşekkürler. Sorunuzu okudum ve bunun gerçekten bir cevap olduğunu düşünmedim. Sadece bunun neden ücretli bir hizmet olduğunu yorumluyordum.
Michael Hampton
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.