Depolama sorunlarını geliştiricilere ve diğer kullanıcılara anlatmanın en iyi yolu nedir


40

Sunucu depolaması azaldığında, geliştiricilerin tümü sızmaya başlar, "Walmart'da 100 dolara 1 TB sürücü alabilirim, sorun ne?"

Depolamanın karmaşıklığı geliştiricilere nasıl açıklanabilir, böylece Walmart'tan bir 1 TB'lik sürücünün neden işe yaramayacağını anlayabilecekler.

ps Ben bir geliştiriciyim ve ben de bilmek istiyorum:)


5
Veya "Amazon S3'ten gigabayt başına 0,15 ABD doları depo alabilirim, sorun nedir?"
Chris Upchurch

@Chris Upchurch: Fakat sorun şu ki, Amazon S3, Google App Engine veya ... Gosh'in seçilip seçilmeyeceği konusunda bir rapor yazmak zorunda kalabilirsiniz. ;)
dance2die

6
Bunu senin etrafında döndürebilirim. İşim gelir üretiyor ve işimi etkili bir şekilde yapabilmek için biraz daha depolamaya ihtiyacım var. Bu sağlam bir yatırım, neden daha fazla depolama alanı satın alamıyorsunuz?

1
@Chris: Elbette her zaman eldeki duruma göre değişir, ancak Amazon S3'ü temel depolama için kullanmanın tam olarak maliyet etkin olmadığını deneyimledim. S3, trafik doruklarına ulaşmak için çok daha iyi kullanılır, böylece nadir görülen en kötü durum senaryolarını kaldırabilecek bir sisteme yatırım yapmak zorunda kalmazsınız - ancak günlük işlemler için kullanmaya başlarsanız çok daha iyi durumdasınız sermaye maliyeti ödüyor ...
Mihai Limbăşan

Yanıtlar:


53

Depolama ile ilgili bazı ev gerçekleri veya işletme depolaması neden bu kadar pahalı?

Tüketici sabit diskleri, çok fazla alan sunar; böylece en zeki * öksürük * akış ortamı * öksürük kullanıcısı bile birkaç terabaytlık bir koleksiyonu depolamak için yeterli satın alabilir. Aslında, disk kapasitesi, transistörün birkaç on yıldır silisyuma güvendiğinden daha hızlı bir şekilde artmaktadır.

Verilerin biraz daha ağır bir yaklaşım gerektiren dikte performans ve bütünlük gereksinimlerine sahip olması nedeniyle 'Kurumsal' depolama biraz daha karmaşık bir konudur. Verilerin, donanım arızası durumunda kullanılabilirlik garantisi olması gerekir ve tek bir kullanıcıdan çok daha fazla okuma / yazma isteği oluşturacak çok sayıda kullanıcıyla paylaşılması gerekebilir.

Bu sorunun teknik çözümleri, gigabayt başına tüketici depolama çözümlerinden çok, birçok kat daha pahalı olabilir. Ayrıca fiziksel bakım gerektirirler; Bir yangının verileri yok etmemesi için yedeklemeler yapılmalı ve sık sık saha dışında saklanmalıdır. Bu süreç devam eden maliyetler ekler.

Verim

1 TB tüketici veya hatta kurumsal yakın sürücünüzde tek bir kafanız var. Disk, 7200 RPM'de veya saniyede 120 devirde döner. Bu, teoride * saniyede en fazla 120 rasgele erişimli G / Ç işlemi alabileceğiniz anlamına gelir * pratikte biraz daha az. Bu nedenle, büyük bir dosyayı tek bir 1TB birimine kopyalamak nispeten yavaştır.

14x72GB diskli bir disk dizisinde, 15.000 RPM veya saniyede yaklaşık 250 devir (14) hızında 14 kafa diskiniz vardır. Bu, saniyede teorik olarak maksimum 3.500 rasgele I / O işlemi * verir (yine pratikte biraz daha az). Diğer tüm şeylerin bir dosya kopyası olması eşit, çok daha hızlı olacaktır.

*Okumların geometrisi sürücünün kafaları hareket ettirmesine ve diskin bir devrinde bulunabilecek bir kesimi okumasına izin verirse, diskin devri başına birden fazla rasgele erişim elde edebilirsiniz. Disk erişimi yaygın bir şekilde dağılmışsa, muhtemelen birden az ortalama olacaktır. Çizgili (aşağıya bakınız) düzende biçimlendirilmiş bir disk dizisi, çoğu durumda diskin devri başına en fazla bir şerit okumayı ve (RAID denetleyicisine bağlı olarak) muhtemelen ortalama olarak birden daha azını alır.

7200 RPM 1 TB sürücü, sıralı I / O'da muhtemelen oldukça hızlı olacaktır. Çizgili bir şemada biçimlendirilmiş disk dizileri (RAID-0, RAID-5, RAID-10 vb.), Genellikle diskin devri başına en fazla bir şerit okuyabilir. 64K'lik bir şeritle, 15.000 devir / dakika diskte saniyede 64Kx250 = 16 MB veri veya veri okuyabiliriz. Bu, 14 disklik bir dizide saniyede yaklaşık 220 MB'lık bir sıralı verim verir; bu, kağıt üzerinde 150 MB / sn'den daha hızlı olmayan ya da modern bir 1TB SATA disk için alıntılanan bir dizi değildir.

Video akışı için (örneğin), büyük şerit boyutuna sahip RAID-0'daki bir 4 SATA disk dizisi (bazı RAID denetleyicileri, 1 MB'a kadar şerit boyutlarını destekleyecektir) oldukça fazla sıralı işleme sahiptir. Bu örnek, gerçek zamanlı olarak sıkıştırılmamış HD video düzenlemesi yapmak için rahatça yeterli olan 480 MB / sn değerinde teorik olarak akış yapabilir. Bu nedenle, Mac Pros ve benzer donanımın sahipleri, birkaç yıl önce doğrudan bağlı bir fiber dizisine sahip bir makineye ihtiyaç duyan HD video birleştirme görevlerini yapabilir.

Bir disk dizisinin asıl yararı, çok sayıda küçük, dağınık G / Ç talebi ile karakterize edilen veritabanı çalışmasıdır. Bu tür iş yükü performansı, diskteki metal parçalarının fiziksel olarak gecikme ve ileri geri hareketleriyle sınırlanır. Bu metrik IOPS (saniye başına G / Ç işlemleri) olarak bilinir. Ne kadar çok fiziksel disk varsa - kapasiteden bağımsız olarak - teorik olarak daha fazla IOPS yapabilirsiniz. Daha fazla IOPS, saniyede daha fazla işlem anlamına gelir.

Veri bütünlüğü

Ek olarak, çoğu RAID yapılandırması size bazı veri fazlalığı verir - bu tanım gereği birden fazla fiziksel disk gerektirir. Bir depolama planının bu kadar fazlalık ve daha fazla sayıda sürücü ile birleşimi, bir sisteme büyük bir işlemsel iş yüküne güvenilir bir şekilde hizmet etme yeteneği verir.

Disk dizileri için altyapı (ve en uç durumda olan SAN'lar) tam olarak bir kitlesel pazar kalemi değildir. Ek olarak, gerçekten, gerçekten başarısız olamayan parçalardan biridir. Bu standart yapı ve daha küçük piyasa hacimlerinin birleşimi ucuz gelmiyor.

Yedekleme dahil toplam depolama maliyeti

Uygulamada, 1 TB veriyi korumanın en büyük maliyetinin yedekleme ve kurtarma olması muhtemeldir. Tam bir dede yedekleme ve kurtarma döngüsü için bir teyp sürücüsü ve 34 set SDLT veya ultrium teyp muhtemelen 1 TB disk dizisinden daha pahalıya mal olacak. Site dışı depolama maliyetlerini ve tek bir bant maymunun maaşını ve birdenbire 1 TB'lık verilerinizin maliyetini o kadar da ucuz hale getirmeyin.

Disklerin maliyeti genellikle baskın depolama maliyetlerinin hiyerarşisinden aşağıya adil bir yoldur. Bir bankada SAN depolama için çalışma fırsatım oldu, bir geliştirme sistemi için 900 £ / GB ve bir üretim sunucusundaki bir disk için £ 5.000 / GB. Kurumsal satıcı fiyatlarında bile, disklerin fiziksel maliyeti bunun sadece küçük bir kısmıydı. Farkında olduğum bir başka örnek (göreceli olarak) mütevazı bir şekilde yapılandırılmış bir IBM Shark SAN'a sahip olup 1 milyon sterlinin üzerinde bir yere mal olmuştur. Bu konuda yalnızca fiziksel depolama yaklaşık 9 £ / gigabayt veya 1 TB tüketici sabit diskinize eşdeğer alan için yaklaşık 9.000 £ olarak hesaplanır.


40

Sadece söyleyin: "Evet, denizaşırı bir Java programcısını 5 $ / saatliğine alabilirim."


8
Şimdi bu iyi!
John Dyer

3
Bu oldukça esprili bir yorumdur, ancak bir cevap bulmak için istekli olduğum soruyu aslında cevaplamadığı için onu daha fazla beğenemiyorum
dance2die

1
@ dance2die Soruyu oldukça net bir şekilde cevapladığını düşünüyorum.
Joe Phillips

11
Bence geçerli bir cevap. Mesele şu ki, her birimizin kendi uzmanlık alanlarımız var ve bir ekibin üyelerinin birbirine güvenmesi gerekiyor. Soruyu bu şekilde geliştiriciye çevirmek, birbirlerini ikinci olarak tahmin etmenin ne kadar anlamsız olduğunu anlamalarına yardımcı olacaktır.
Portman

2
Bir başka geçerli cevap, Geek Squad'daki adamın muhtemelen nasıl yapılacağını, daha ucuza yapabileceğini ve bunu yapma konusunda daha iyi bir tavır alabilmesi olabilirdi. Cidden, bu neden bu soruya en yüksek oyu veren cevap? Okurken güzel bir kıkırdama yaptım, ancak bu site üyelerinin naif sorulara nasıl cevap vereceği olacaksa, Google ve Experts Exchange'e bağlı kalacağım.
dfjacobs

14

Belki onlara Walmart sürüşleri hakkında birkaç soru sorabilirsiniz:

  • başarısızlığa uğramanın ortalama süresi nedir?
  • felaketle başarısız olursa ne olur?
  • ne sıklıkla yedeklenir?
  • 12 aylık yedekleme için ne kadar depolama alanı gerekir?
  • Site dışında nasıl yedeklenebilir?
  • nasıl restore edilebilir (bütünüyle? tek bir dosya? bir kaç klasör?)
  • yedeklemeleri saklamanın maliyeti nedir?
  • yedeklerin güvende tutulmasını nasıl sağlayacak? güvenli?
  • hayati veri kaybını karşılamak için hangi sigortaya ihtiyacı var?

... Bu yanıtları, iyi yönetilen bir veri merkezinde RAID 5 dizisinin bir parçası olarak çalışan bir sürücüyle karşılaştırın.

(Açıklama: Ben de geliştiriciyim - Sadece tahmin ediyorum!)


1
Sorunun "neden" ine iyi ve kapsamlı bir yaklaşım için +1.
Avery Payne,

4

Belki de farklı depolamayı göz önünde bulundurmalısın.

Dev'iniz daha fazla alana ihtiyaç duyabilir, ancak belki de peşinde olduğu "kurumsal sınıf" sürücü alanı değildir. Belki de sadece .vhd'leri sakladığı bir yere sahip olması gerekiyor ve ISO'yu diskten çökmesi durumunda MSDN'den tekrar indirebilirsiniz. Belki de test çalışmaları, yalnızca test çalışması boyunca olması gereken büyük geçici alan gereksinimleri gerektirir. Tüm bunlar için 50 dolarlık bir Wallmart sürücüsü geçerli bir çözüm olabilir.


3

İnsanların depolama konusunda farkına varması gereken bir şey, kapasite ve IOPS arasında büyük farklılıklar olduğu. Dayanıklılık vs. gibi şeyler genellikle tartışılır, neredeyse her zaman IOPS ve kapasiteye iner.


4
IOPS: Saniyedeki Giriş / Çıkış İşlemleri
Sam Hasler

2

Ne tür sunucular sorduğuna bağlı. Temel bir geliştirme veya test sunucusu için Wallmart'ın bir tb sürücüsü muhtemelen yeterince iyi. Raf bileşenlerini kullanmayan üst seviye bir sunucuyla uğraşıyorsanız, onlara bir yarış arabası yapıp yapmadıklarını ve bir kaç para kazanmak için bir otomobil parçaları mağazasından lastik satın alıp almadıklarını sorun.


1
Yine de bu tekniği yöneticilerde kullanmamanı tavsiye ederim. Cevap çok iyi olabilir "evet".
Jason Baker

1

Açıklamamın yolu bu. Patronunuz satın alma işleminde imza atarsa. Wal-mart sürücüsüne bir işaret koyacağım ...

"Sys Reklamına, bu iradesine ve iradesine karşı bunu koyması talimatı verildi." Ve sürücü öldüğü zaman sürücüyü teslim edeceğim ve geliştiriciye not vereceğim ve bu sefer işimi nasıl yapacaklarını soracağım.

Portman'la aynı fikirdeyim ... takıma güven ya da ayrıl.


0

Basit bir satırlık cevap: 1TB sürücüler genellikle SATA, ancak sunucunuz SCSI. (Sunucu SCSI olmasa bile, bu şu an için sorgu hattını durdurabilir ...)

300GB'lık bir SCSI sürücüsü genellikle fiyatın 4 katıdır, daha sonra mevcut verileri yedekler, aksama sürelerini düzenler, yükleme yapar, bir şeyler ters gidebilir, fazla mesai, vb. Olabilir. Sonuç olarak, basit bir depolama yükseltmesi hepsine yol açabilir Acı çeşitleri - bunların hiçbiri doğrudan sorumlu değildir. Mevcut ihtiyacı karşılayan kullanıma hazır bir sürücü satın alabileceğinizi söylemek umutsuzca basittir.

Ama kahrolasıca sunuculara daha büyük sürücüler koymanız gerektiğini biliyorsunuz, bunları satın aldığınızda ve şimdi de tekme atıyorsunuz! Ama siz sunucuların kurulmasını istediniz ve onlar da önceden belirlenmiş bir maliyete katkıda bulunacaklardı ve fazladan bir onay aşamasına geçmek zorunda kalabilirdi ... sysadmin'in acı dünyasına hoş geldiniz ...

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.