Jaki jest najlepszy sposób na wyjaśnienie problemów z pamięcią dla programistów i innych użytkowników

40

Gdy zaczyna brakować miejsca na serwerze, wszyscy programiści zaczynają jęczeć: „Mogę dostać dysk Walmart o pojemności 1 TB za 100 dolców, w czym problem”.

Jak deweloperom wyjaśnić złożoność pamięci, aby zrozumieli, dlaczego dysk 1 TB firmy Walmart po prostu nie działa.

ps Jestem programistą i też chcę wiedzieć:)

John Dyer
źródło
5
Lub „Mogę uzyskać miejsce za 0,15 USD za gigabajt od Amazon S3, w czym problem?”
Chris Upchurch
@Chris Upchurch: Problem polega na tym, że być może będziesz musiał napisać raport o tym, czy wybrać Amazon S3, Google App Engine, czy ... Boże, to może być malownicze. ;)
dance2die
6
Mogę odwrócić się od ciebie. Moja praca generuje przychody i potrzebuję trochę więcej miejsca, aby skutecznie wykonywać swoją pracę. To solidna inwestycja, więc dlaczego nie możesz po prostu kupić więcej miejsca?
1
@Chris: Oczywiście zawsze zależy to od aktualnej sytuacji, ale odkryłem (kosztowne) doświadczenie, że używanie Amazon S3 do podstawowej pamięci masowej nie jest dokładnie opłacalne. S3 jest znacznie lepiej wykorzystywany do obsługi szczytów ruchu, dzięki czemu nie musisz inwestować w system, który może obsłużyć rzadkie najgorsze scenariusze - ale jeśli zaczniesz go używać do codziennych operacji, może się okazać, że znacznie lepiej płacenie kosztów kapitału ...
Mihai Limbăşan

Odpowiedzi:

53

Niektóre domowe prawdy na temat przechowywania danych lub dlaczego przechowywanie danych w przedsiębiorstwie jest tak drogie?

Dyski twarde dla konsumentów oferują duże ilości miejsca, dzięki czemu nawet najbardziej wymagający użytkownik * kaszlu * mediów strumieniowych * kaszlu * może kupić tyle, aby przechowywać kolekcję kilku terabajtów. W rzeczywistości pojemność dysku rośnie szybciej niż tranzystor liczy na krzem od kilku dziesięcioleci.

Pamięć „Enterprise” jest nieco bardziej złożonym zagadnieniem, ponieważ dane mają wymagania dotyczące wydajności i integralności, które narzucają nieco cięższe podejście. Dane muszą mieć pewną gwarancję dostępności w przypadku awarii sprzętu i mogą być udostępniane dużej liczbie użytkowników, co wygeneruje o wiele więcej żądań odczytu / zapisu niż pojedynczy użytkownik.

Rozwiązania techniczne tego problemu mogą być wiele, wiele razy droższe na gigabajt niż rozwiązania pamięci masowej dla konsumentów. Wymagają również fizycznej konserwacji; kopie zapasowe muszą być wykonywane i często przechowywane poza witryną, aby pożar nie zniszczył danych. Ten proces powoduje dodatkowe koszty.

Wydajność

Na swoim 1 TB dysku, a nawet firmowym napędzie stacjonarnym masz tylko jedną głowicę. Dysk obraca się z prędkością 7200 obr / min lub 120 obrotów na sekundę. Oznacza to, że teoretycznie * możesz uzyskać maksymalnie 120 operacji we / wy o losowym dostępie na sekundę, a nieco mniej w praktyce. Dlatego kopiowanie dużego pliku na jednym woluminie 1 TB jest stosunkowo powolne.

Na macierzy dyskowej z 14x 72 GB dyskami masz 14 głowic ponad dyskami, które osiągają (powiedzmy) 15 000 obr./min lub około 250 obrotów na sekundę. Daje to teoretycznie maksymalnie 3500 losowych operacji we / wy na sekundę * (ponownie, nieco mniej w praktyce). Wszystkie inne rzeczy równe kopii pliku będą wiele, wiele razy szybsze.

*Możesz uzyskać więcej niż jeden losowy dostęp na obrót dysku, jeśli geometria odczytów pozwoliła napędowi przesunąć głowice i odczytać sektor, który okazał się dostępny w obrębie jednego obrotu dysku. Jeśli dostęp do dysku był bardzo rozproszony, prawdopodobnie średnio mniej niż jeden. Jeśli macierz dyskowa sformatowana w układ pasiasty (patrz poniżej), w większości przypadków zostanie odczytany maksymalnie jeden pasek na obrót dysku i (w zależności od kontrolera RAID) średnio mniej niż jeden.

Napęd 7200 RPM 1 TB prawdopodobnie będzie dość szybki w sekwencyjnym We / Wy. Macierze dyskowe sformatowane w schemacie rozłożonym (RAID-0, RAID-5, RAID-10 itp.) Zazwyczaj mogą odczytać maksymalnie jeden pasek na obrót dysku. Z paskiem 64K możemy odczytać 64Kx250 = około 16 MB danych na sekundę z dysku 15000 RPM. Daje to sekwencyjną przepustowość około 220 MB na sekundę na macierzy 14 dysków, co nie jest tak dużo szybsze na papierze niż 150 MB / s lub mniej więcej w przypadku nowoczesnego dysku SATA 1 TB.

W przypadku przesyłania strumieniowego wideo (na przykład) tablica 4 dysków SATA w macierzy RAID-0 o dużym rozmiarze paska (niektóre kontrolery RAID obsługują paski o wielkości do 1 MB) mają dość dużą przepustowość sekwencyjną. Ten przykład teoretycznie może teoretycznie przesyłać strumieniowo około 480 MB / s, co jest wystarczająco wygodne, aby przeprowadzić nieskompresowaną edycję wideo HD w czasie rzeczywistym. Właściciele komputerów Mac Pro i podobnego sprzętu mogą wykonywać zadania związane z komponowaniem wideo HD, które kilka lat temu wymagałyby komputera z macierzą światłowodową z bezpośrednim podłączeniem.

Prawdziwą zaletą macierzy dyskowej jest praca z bazą danych, która charakteryzuje się dużą liczbą małych, rozproszonych żądań We / Wy. Przy tego rodzaju obciążeniu wydajność jest ograniczona fizycznym opóźnieniem bitów metalu na dysku, które poruszają się w kółko i w przód iw tył. Ta metryka jest znana jako IOPS (operacje we / wy na sekundę). Im więcej masz fizycznych dysków - niezależnie od pojemności - tym więcej IOPS możesz teoretycznie zrobić. Więcej IOPS oznacza więcej transakcji na sekundę.

Integralność danych

Ponadto większość konfiguracji RAID zapewnia nadmiarowość danych - która z definicji wymaga więcej niż jednego dysku fizycznego. Połączenie schematu przechowywania z taką redundancją i większą liczbą napędów daje systemowi możliwość niezawodnego obsługi dużego obciążenia transakcyjnego.

Infrastruktura dla macierzy dyskowych (i SAN w bardziej ekstremalnych przypadkach) nie jest dokładnie elementem rynku masowego. Ponadto jest to jeden z bitów, który naprawdę naprawdę nie może zawieść. To połączenie standardu kompilacji i mniejszych wolumenów rynkowych nie jest tanie.

Całkowity koszt przestrzeni dyskowej wraz z kopią zapasową

W praktyce największym kosztem utrzymania 1 TB danych jest prawdopodobnie tworzenie kopii zapasowych i odzyskiwanie. Napęd taśmowy i 34 zestawy taśm SDLT lub ultrium do pełnego cyklu tworzenia kopii zapasowych i odzyskiwania dziadka prawdopodobnie będzie kosztować więcej niż macierz dyskowa 1 TB. Dodając koszty przechowywania poza witryną i wynagrodzenie nawet jednej małpy taśmowej, nagle Twój 1 TB danych nie jest już tak tani.

Koszt dysków często obniża hierarchię dominujących kosztów przechowywania. W jednym banku miałem okazję pracować dla magazynu SAN, który kosztował 900 GBP / GB za system programistyczny i 5000 GBP / GB za dysk na serwerze produkcyjnym. Nawet przy cenach dostawców korporacyjnych koszt fizyczny dysków stanowił tylko niewielki ułamek tego. Kolejny przykład, o którym wiem, ma (stosunkowo) skromnie skonfigurowaną SAN IBM Shark, która kosztowała go gdzieś ponad 1 milion funtów. Tylko fizyczne miejsce na tym dysku kosztuje około 9 £ / gigabajt, czyli około 9000 £ za miejsce odpowiadające dyskowi twardemu o pojemności 1 TB.

ConcernedOfTunbridgeWells
źródło
40

Po prostu powiedz: „Tak, a ja mogę uzyskać programistę Java za 5 USD za godzinę”.

Portman
źródło
8
To dobrze!
John Dyer
3
To dość dowcipna uwaga, ale nie mogę jej głosować, ponieważ tak naprawdę nie odpowiada na pytanie, na które chętnie znajduję odpowiedź
dance2die
1
@ dance2die Myślę, że dość wyraźnie odpowiada na pytanie.
Joe Phillips
11
Myślę, że to ważna odpowiedź. Chodzi o to, że każdy z nas ma własne obszary specjalizacji, a członkowie zespołu muszą sobie ufać. Przerzucenie pytania z powrotem do programisty w ten sposób pomoże im uświadomić sobie, jak bezcelowe jest próbowanie drugiego odgadnięcia.
Portman
2
Inną ważną odpowiedzią byłoby to, że facet w Geek Squad prawdopodobnie mógłby wymyślić, jak to zrobić, zrobić to taniej i mieć o wiele lepsze podejście do tego. Poważnie, dlaczego jest to najwyższa głosowana odpowiedź na to pytanie? Czytałem go z chichotem, ale jeśli tak właśnie zareagują członkowie witryny na naiwne pytania, pozostanę przy Google i Experts Exchange.
dfjacobs
14

Może zadaj im kilka pytań dotyczących ich napędu Walmart:

  • jaki jest średni czas do awarii?
  • co się stanie, jeśli katastrofalnie się nie powiedzie?
  • jak często jest tworzona kopia zapasowa?
  • ile miejsca będzie wymagało 12 miesięcy tworzenia kopii zapasowych?
  • jak można wykonać kopię zapasową poza witryną?
  • jak można go przywrócić? (w całości? jeden plik? kilka katalogów?)
  • ile kosztuje przechowywanie kopii zapasowych?
  • w jaki sposób zagwarantuje, że kopie zapasowe będą bezpieczne? bezpieczne?
  • jakie ubezpieczenie ma na wypadek utraty ważnych danych?

... Porównaj te odpowiedzi z dyskiem działającym jako część macierzy RAID 5 w dobrze zarządzanym centrum danych.

(Ujawnienie: Ja też jestem programistą - po prostu zgaduję!)

AJ
źródło
1
+1 za dobre, kompleksowe podejście do „dlaczego” pytania.
Avery Payne
4

Może powinieneś rozważyć zróżnicowane przechowywanie.

Twój deweloper może potrzebować więcej miejsca, ale być może nie jest to przestrzeń napędowa „klasy korporacyjnej”. Może po prostu musi mieć miejsce do przechowywania plików .vhd i ISO, co w przypadku awarii dysku można pobrać ponownie z MSDN. Być może przebiegi testowe wymagają dużych wymagań dotyczących przestrzeni przejściowych, które muszą istnieć tylko przez czas trwania testu. Dla nich wszystkich ważnym rozwiązaniem może być dysk Wallmart o wartości 50 USD.

Peter Stuer
źródło
3

Najważniejszą rzeczą, którą ludzie muszą wiedzieć o pamięci, jest duża różnica między pojemnością a IOPS. Rzeczy takie jak wytrzymałość itp. Są zwykle sporne, prawie zawsze sprowadza się do IOPS vs.

Mark S. Rasmussen
źródło
4
IOPS: Operacje wejścia / wyjścia na sekundę
Sam Hasler
2

Zależy to od tego, o jakie serwery pytają. Dla podstawowego serwera deweloperskiego lub testującego jeden napęd TB z Wallmart jest prawdopodobnie wystarczająco dobry. Jeśli masz do czynienia z wysokiej klasy serwerem, który nie używa gotowych komponentów, zapytaj ich, czy zbudują samochód wyścigowy i kupią opony w sklepie z częściami samochodowymi, aby zaoszczędzić kilka dolarów.

Jared
źródło
1
Polecam jednak nie używać tej techniki u menedżerów. Odpowiedź może równie dobrze brzmieć „tak”.
Jason Baker
1

Tak to wyjaśniam. Jeśli twój szef podpisze się przy zakupie. Umieszczę znak na dysku Wal-Mart, który mówi:

„Sys Ad został poinstruowany, aby umieścić to tutaj wbrew jego woli i jelitom”. A kiedy dysk umrze, podam go i zanotuję deweloperowi i zapytam, jak wykonać moją pracę tym razem.

Zgadzam się z Portmanem ... zaufaj drużynie lub odejdź.

Thomas Denton
źródło
0

Prosta odpowiedź w jednym wierszu: napędy 1 TB są zwykle SATA, ale twój serwer to SCSI. (Nawet jeśli serwer nie jest SCSI, może to zatrzymać linię zapytania ... na razie.)

Dysk SCSI o pojemności 300 GB jest zwykle czterokrotnie wyższy niż cena, następnie należy wykonać kopię zapasową istniejących danych, zorganizować przestoje, przeprowadzić instalację, coś może pójść nie tak, nadgodziny itp. Podsumowując, proste rozszerzenie pamięci masowej może prowadzić do wszystkich rodzaje bólu - za który twórca nie jest bezpośrednio odpowiedzialny. Mówienie, że można kupić gotowy napęd spełniający obecne potrzeby, jest beznadziejnie uproszczone.

Ale wiesz, że powinieneś umieścić większe dyski na cholernych serwerach, kiedy je kupiłeś, a teraz kopiesz się! Ale chciałeś, aby serwery zostały zainstalowane, a one zwiększyłyby koszty początkowe i być może musiałoby przejść dodatkową rundę zatwierdzenia ... witamy w świecie bólu sysadmina ...

Cawflands
źródło