Pamięć podręczna SSD, aby zminimalizować czas uruchamiania dysku twardego?

8

najpierw krótka wersja : szukam oprogramowania zgodnego z Linuksem, które jest w stanie transparentnie buforować zapisy z dysku twardego za pomocą dysku SSD. Chcę jednak rozkręcać dysk twardy tylko raz lub dwa razy dziennie (aby zapisać buforowane dane na dysku twardym). Przez resztę czasu dysk twardy nie powinien się obracać z powodu problemów z hałasem.

Teraz dłuższa wersja : zbudowałem całkowicie cichy komputer z systemem Xubuntu. Ma A10-6700T APU, ogromną bez wentylatora chłodnicę, bez wentylatora zasilacz, SSD. Problem polega na tym, że ma (i potrzebuje) głośny dysk twardy i chcę zabronić jego podkręcania w nocy. Wszystkie zapisy powinny być buforowane na dysku SSD, odczyty nie są potrzebne w nocy.

Przez cały dzień ten komputer automatycznie pobierze około 5 GB danych, które będą przechowywane przez około rok, dając całkowitą potrzebną pojemność dysku nieco mniejszą niż 2 TB. Te dane są obecnie przechowywane na głośnym dysku twardym o pojemności 3 TB, który kręci się w dzień iw nocy. Czasami muszę uzyskać dostęp do niektórych danych sprzed kilku miesięcy. Jednak większość razy będę potrzebować tylko danych z ostatnich 14 dni, które zmieściłyby się na dysku SSD. Idealnie, chciałbym przezroczystego rozwiązania (wszystkie dane w jednym systemie plików), które buforuje wszystkie zapisy na SSD, zapisując na HDD tylko raz dziennie. Odczyty byłyby obsługiwane przez pamięć podręczną, gdyby nadal znajdowały się na dysku SSD, w przeciwnym razie dysk twardy musiałby się rozkręcić.

Próbowałem bcache bez większego powodzenia (używając cache_mode = writeback, writeback_running = 0, writeback_relay = 86400, sequential_cutoff = 0, congested_write_threshold_us = 0 - coś brakuje?) I czytam o ZFS ZIL / L2ARC, ale nie jestem pewien, czy uda mi się to osiągnąć mój cel w ZFS. Jakieś wskazówki?

Jeśli wszystko inne zawiedzie, po prostu użyję niektórych skryptów, aby automatycznie skopiować pliki na duży dysk, usuwając jednocześnie najstarsze pliki z dysku SSD.

Edycja : Pamięć podręczna to naprawdę zły termin na to, czego chciałam. Wygląda na to, że oryginalne zamierzone rozwiązanie nie jest dla mnie w tej chwili możliwe. Dziękujemy wszystkim, którzy przyczynili się!

sirprize
źródło
1
Dlaczego nie przechowujesz danych na dysku SSD o wartości 14 dni (lub jak dużo pasowań) i nie piszesz skryptu, który uruchamia się raz dziennie i przenosi cokolwiek starszego na HDD? W ten sposób, jeśli używasz mniej niż 14 dni, będziesz używać dysku SSD, a dysk twardy będzie zapisywać tylko raz dziennie. Jeśli potrzebujesz czegoś starszego, musisz uzyskać dostęp do dysku twardego.
Richard Powell
Właśnie to zrobię, tak jak zasugerowałem w ostatnim zdaniu pytania :) Jednym z powodów, dla których zadałem to pytanie, było uniknięcie (co prawda niewielkiego) kłopotu z koniecznością obracania i montowania napędu ręcznie, a nie tylko posiadający przejrzysty system plików.
sirprize

Odpowiedzi:

3

To nie tak naprawdę, jak i dlaczego działa buforowanie - buforowanie ma na celu wykorzystanie szybszej prędkości i lepszego losowego dostępu do dysku SSD lub innej pamięci, zamiast minimalizowania zapisów na dysku twardym. Buforowanie ma na celu maksymalizację prędkości, a nie zmniejszenie zapisu, dzięki mniejszemu, szybszemu buforowi, który wspiera duże, wolne urządzenie pamięci masowej.

W rzeczywistości, bcache, który jest częścią głównego jądra Linuksa, po prostu przekaże sekwencyjne zapisy na dysk twardy, zamiast przekazywać je przez dysk SSD, ponieważ nie ma przewagi wydajności.

ZIL / L2Arc używa dysku SSD do przechowywania dzienników (w przypadku ZIL) i często używanych klastrów plików (z L2Arc). ZIL przyspiesza zapisy synchroniczne, przechowując je do momentu, aż wszystkie będą gotowe do napisania. L2Arc przechowuje najczęściej używane pliki na szybszej pamięci. Żadne z nich nie pozwoli ci zrobić tego, czego potrzebujesz.

Napęd Fusion również używa SSD i HDD przejrzysty wprowadzenie powszechnie używane pliki na dysk SSD dla szybciej odczytuje i dyski do przechowywania luzem rzadziej używanych plików. To także nie pozwala na użycie dysku SSD jako miejsca na zarysowania i co jakiś czas tworzy kopię zapasową plików na dysku głównym

To, na co patrzysz, to nie buforowanie, ale raczej okresowe kopie zapasowe systemu na HDD. Zgaduję, że możesz być w stanie sfałszować coś razem z Aufs - pierwszą gałąź na dysku twardym z większymi plikami (więc ma to pierwszeństwo) i gałąź na dysku SSD, a następnie uruchomić skrypt, który przenosi pliki z dysku SSD do Dysk twardy jest okresowo, przy jednoczesnym dostępie z tej samej lokalizacji. Nie przetestowałem tego jeszcze, ale w przeciwieństwie do buforowania, okresowe przenoszenie plików i używanie aufs prawdopodobnie będzie dokładnie tym, czego chcesz.

Najprostszym sposobem sortowania plików według wieku jest ls -tr - t sortuje według czasu (od najnowszego do najstarszego), a r odwraca kolejność. (Jeśli masz na myśli konkretny zakres, find . -mtime ndziała świetnie n, ponieważ określona liczba daje pliki zmodyfikowane n dni temu, -n daje pliki zmodyfikowane w ciągu ostatnich n dni, a + n daje pliki zmodyfikowane n dni temu). Można znaleźć kilka pomysłów na to, jak go używać tutaj

Ponieważ twoim prawdziwym celem jest cisza, możesz sprawdzić, czy twój dysk obsługuje tryb cichy za pomocą hdparm -M /dev/sda- powinno to generować coś takiego acoustic = 254 (128=quiet ... 254=fast), w którym to przypadku możesz spowolnić dysk twardy za pomocą polecenia hdparm -M 128 /dev/sda. Uruchom przeciwne polecenie, hdparm -M 1254 /dev/sdagdy potrzebujesz większej prędkości.

Journeyman Geek
źródło
Dzięki za wkład, to jest moja ulubiona odpowiedź. Nie wiedziałem o aufs i przyjrzę się temu.
sirprize
Przejrzystość nie jest tak naprawdę możliwa w przypadku tak rozbudowanego procesu jak twój - mogę wymyślić wiele sposobów na uruchomienie zadania tworzenia kopii zapasowej, ale tak naprawdę patrzysz na skrypty, trochę sed / awk do wybierania potrzebnych plików i przenoszenia pliki, może z cronem. Podejrzewam, że sam hdparm może znacznie rozwiązać problem z głośnością twojego dysku twardego i pozwoli ci wyłączyć dysk, gdy nie jest używany, co może być również przydatne.
Journeyman Geek
Jeszcze raz dziękuję, użyję bash-fu, cron, hdparm, mount i rsync, zgodnie z sugestią zawartą w ostatnim zdaniu pytania. hdparm -M sprawił, że dysk stał się nieco cichszy, ale wolę, aby dysk nie wirował w nocy.
sirprize
3

Ponieważ w innych odpowiedziach rozwiązano problem z punktu widzenia oprogramowania, pomyślałem o dołączeniu pewnych informacji o rozwiązaniach sprzętowych.

W artykule Dźwiękoszczelność dysku twardego wymieniono następujące opcje:

  • Defragmentuj dysk twardy
  • Owiń dysk twardy gumowymi opaskami, aby tłumić wibracje
  • Idź po nowy dysk twardy: większość dysków twardych współczesnych jest wyposażona w łożyska dynamiczne, które pozwalają talerzom na niemal cichą pracę nawet przy bardzo szybkim wirowaniu.

Z własnego doświadczenia mogę zaświadczyć, że nigdy nie słyszę nowego dysku twardego o pojemności 4 TB, nawet podczas kopiowania bardzo dużych plików.

W ramach niektórych badań można również znaleźć materiały tłumiące dźwięk dysku twardego, takie jak obudowa i materiały akustyczne SilentDrive HD lub cichy system mocowania dysku twardego NoiseMagic NoVibes III . Nie wiem, gdzie są sprzedawane, a gumki powyżej wydają mi się prawie tak samo wydajne.

Można również wygłuszyć cały komputer. Niektóre przykładowe strony internetowe sprzedające materiały dźwiękoszczelne to Quiet PC USA , AcousticPC lub Dynamat , ale jest ich wiele.

Niektóre obudowy komputerowe są już zaprojektowane do cichej pracy. Zobacz na przykład
sześć przetestowanych obudów o niskim poziomie hałasu i wydajności .

Ostatnia uwaga: hałaśliwy dysk twardy, który brzęka, klika lub piszcze, może być oznaką awarii dysku twardego, więc uważaj.

harrymc
źródło
Dziękujemy za opinię, wyrażamy opinię. Używam już specjalistycznego sprzętu - w tym przypadku całkowicie cichy sprzęt oprócz napędu. Przez „hałas” mam na myśli normalny dźwięk zdrowego dysku twardego. Będę musiał po prostu użyć crona, aby podkręcić dysk, zamontować go, wykonać kopię zapasową, odmontować go, a następnie ponownie zakręcić.
sirprize
2

Kilka odmian Puppy Linux opartych jest na Ubuntu, ale używa Aufs .

Puppy działa całkowicie z pamięci RAM, podczas normalnej pracy nie ma dostępu do dysku twardego.

Jeśli powiesz Puppy, że twój dysk twardy jest dyskiem flash, będzie okresowo zrzucał system plików RAM na dysk zamiast w sposób ciągły. Zostało to zaprojektowane w celu zmniejszenia zużycia częstych zapisów na dyskach flash, ale działa również dobrze na dyskach twardych.

Podobnie jak prawie wszystko w Puppy, możesz użyć GUI, aby ustawić częstotliwość zapisywania systemu plików RAM. Zwykle będzie to co 10 minut, ale nic nie stoi na przeszkodzie, aby na przykład ustawiać zrzut co 720 minut (12 godzin).

Menedżer zdarzeń Puppy Linux

Ten fragment mojego menu.lstpliku bootloadera Grub4DOS pokazuje ustawienie pmediaopcji jądra, która mówi, że używa dysku flash zamiast dysku twardego ...

# menu.lst produced by grub4dosconfig-v1.7.1
#
# 'kernel ... pmedia=ideflash'
#     Treat the HDD as a flashdrive: infrequent writes of filesystem to savefile

title Puppy Lupu 5.2.8 (sda3/puppy528lu) Cached\nUse SWAP; changes to RAM; flush to disk every 10min (fastest)
  find --set-root --ignore-floppies --ignore-cd /puppy528lu/initrd.gz
  kernel /puppy528lu/vmlinuz   psubdir=puppy528lu pmedia=ideflash pfix=copy,fsck
  initrd /puppy528lu/initrd.gz

Uwaga na temat „odmian” Puppy Linux ...
Używam Puppy Linux 5.2.8 „Lupu”, który jest oparty na (zbudowanym przez sparowanie) Ubuntu 10.04 Lucid Lynx. Ta wersja jest często nazywana „Lucid” zamiast „Lupu” ze względu na swoje pochodzenie. Istnieją również wersje oparte na Slackware i niektórych innych dystrybucjach. Ponieważ już używasz Xubuntu, Puppy Linux Lupu byłby najbardziej znany. Byłoby to również znacznie szybsze. Używałem Xubuntu przez około rok, zanim znalazłem Puppy.

Istnieje również znacznie nowsza wersja oparta na „Ubuntu Precise Pangolin” o nazwie „Puppy Linux Precise”. Wprowadzono poważne zmiany w jądrze używanym w nowszej wersji, które mogą nie działać dobrze ze starszym sprzętem. Jeśli Twoja maszyna ma mniej niż 5 lat, możesz być bardziej zadowolony z Precise. Wierzę, że technika opisana powyżej nadal będzie działać w Precyzji, chociaż dokładne opcje itp. Mogą być inne, ale nie jestem w stanie jej przetestować.

DocSalvager
źródło
0

krótkie rozwiązanie i szybkie do wdrożenia (ale nie odpowiedzi dokładnie na to, czego chcesz) to: przenieś dysk do pamięci w innym miejscu. może to być chassi serwera plików typu Netowrk (jak WD World Edition) lub dysk USB3 i możesz go mieć w tym samym pokoju co cichy komputer lub w innym pokoju, aby całkowicie go nie słuchać.

Moim zdaniem jest to lepsze, ponieważ z pewnością będziesz korzystać z napędu tylko wtedy, gdy chcesz przesyłać dane przez sieć - system operacyjny może wykonywać inne czynności porządkowe lub przywracania równowagi systemu plików, których nie możesz uniknąć i by Ci przeszkadzały . Tak więc inny pokój to duży plus.

Buforowanie powinno być łatwe - wystarczy wykonać kopię zapasową danych z dnia na zewnętrzny dysk, co można osiągnąć za pomocą rozwiązań takich jak rsynclub unison.

Dłuższe rozwiązanie znowu nie jest idealne (tj. Nie ma pojedynczej aplikacji), ale dostaniesz dysk w tym samym pudełku z ssd i uzyskasz wyższe prędkości (ale czy naprawdę potrzebujesz wyższej prędkości niż sieć tylko 5 GB / dzień?):

możesz użyć, smartctlaby ustawić czas zatrzymania dysku i zachować go w stanie odmontowanym - aby uniknąć sytuacji, w której system operacyjny będzie wykonywał różne czynności na dysku. Następnie po prostu napisz skrypt mounti wykonaj kopię zapasową (jak wyżej) potrzebnych danych.

nass
źródło
Niestety, tych wszystkich rzeczy chciałem uniknąć. Dziękuję za poświęcony czas!
sirprize
0

Nie podoba ci się moja odpowiedź, ale tak naprawdę nadużywasz pamięci podręcznej, tak naprawdę opisujesz rozwiązanie kopii zapasowej. Zajrzyj do rsync lub poszukaj innych rozwiązań do tworzenia kopii zapasowych, jeśli chcesz coś bardziej kompletnego.

Ciemny
źródło
Jest to absolutnie prawdziwa i właśnie to szczegółowo opisałem w mojej odpowiedzi :)
Journeyman Geek