Nie bardzo lubię kupować dysk twardy USB, ale zdaję sobie sprawę, że karty SD nie nadają się do wielu powtórzeń czytania i pisania.
Czy są jakieś kroki, które mogę podjąć, aby przedłużyć żywotność mojej karty SD, gdy jest ona używana przez mój Raspberry Pi?
sd-card
durability
Wysoce nieregularne
źródło
źródło
Odpowiedzi:
Te metody powinny wydłużyć żywotność karty SD, minimalizując liczbę odczytów / zapisów na różne sposoby:
Wyłącz zamianę
Zamiana to proces wykorzystywania części karty SD jako pamięci ulotnej. Zwiększy to ilość dostępnej pamięci RAM, ale spowoduje dużą liczbę odczytów / zapisów. Jest mało prawdopodobne, aby znacznie zwiększyć wydajność.
Wyłącz zamianę za pomocą
swapoff
polecenia:Musisz także uniemożliwić jej powrót po ponownym uruchomieniu:
sudo apt-get remove dphys-swapfile
usunąć go na stałe. Najlepiej usunąć, ponieważ ustawienie naCONF_SWAPSIZE
0, jak wyjaśniono w tej odpowiedzi , wydaje się nie działać i nadal tworzy plik wymiany 100 MB po ponownym uruchomieniu./etc/fstab
Wyłączanie kronikowania w systemie plików
Korzystanie z systemu plików kronikowania, takiego jak
ext3
lubext4
BEZ kroniki, umożliwia zmniejszenie odczytu / zapisu. Oczywistą wadą używania systemu plików z wyłączonym kronikowaniem jest utrata danych w wyniku nieskromnego demontażu (tj. Po awarii zasilania, blokowaniu jądra itp.).Można wyłączyć rejestrowanie
ext3
, montując go jakoext2
.Możesz wyłączyć kronikowanie na
ext4
odmontowanym dysku w następujący sposób:Flaga Mount Noatime
Przypisz flagę noatime mount do partycji znajdujących się na karcie SD, dodając ją do sekcji opcji partycji w
/etc/fstab
.Katalogi w pamięci RAM
Często używane katalogi, takie jak
/var/tmp/
i być/var/log
może, można przenieść do pamięci RAM w/etc/fstab
następujący sposób:Umożliwi
/var/tmp
to wykorzystanie 50 MB pamięci RAM jako miejsca na dysku. Jedynym problemem jest to, że dyski zamontowane w pamięci RAM nie utrzymają się po ponownym uruchomieniu. Dlatego jeśli zamontujesz,/var/log
a system napotka błąd, który powoduje jego ponowne uruchomienie, nie będziesz w stanie dowiedzieć się, dlaczego.Katalogi na zewnętrznym dysku twardym
Możesz także zamontować niektóre katalogi na trwałym dysku twardym USB. Więcej informacji na ten temat można znaleźć w tym pytaniu .
Raspberry Pi może również uruchomić swoją partycję root z dysku zewnętrznego. Może to być przez USB lub Ethernet i oznacza, że karta SD będzie używana tylko do delegowania do innego urządzenia podczas rozruchu. Wymaga to trochę hakowania jądra, ponieważ nie sądzę, że domyślne jądro obsługuje pamięć USB. Możesz znaleźć więcej informacji na to pytanie lub w tym zewnętrznym blogu .
źródło
noatime
powinno być domyślne.noatime
nie jest domyślny, przynajmniej w Arch./var/tmp
aby zapamiętać. Może to myliłeś/tmp
.noatime
powodują problemy, możesz również użyć tego,relatime
co znacznie zmniejsza zapisy na dysku podczas odczytu, zamiast całkowicie je usuwać.Jeśli opcje oferowane przez Jivings nie są możliwe dla Twojej aplikacji, to inną opcją znacznie przedłużyć jej żywotność jest użycie karty SD, która jest znacznie większa niż potrzebujesz.
Pozostaw dużo wolnego miejsca
Większość przyzwoitych kart SD korzysta z algorytmów wyrównywania zużycia , aby zminimalizować liczbę zapisów każdego bloku, więc jeśli karta SD jest większa niż potrzebujesz, zużycie można rozłożyć na znacznie większym obszarze wolnej przestrzeni.
Jednym z powodów, dla których wyrównywanie zużycia jest tak ważne, jest to, że niektóre systemy plików, takie jak FAT (domyślny format wielu kart SD), młotkują te same sektory w kółko.
Aby uzyskać więcej informacji na ten temat, zobacz odpowiedzi na pytanie Czy to prawda, że karta SD / MMC zrównuje się z własnym kontrolerem? w sprawie Electronic Stack Exchange , szczególnie tej odpowiedzi .
Jedną z interesujących statystyk z tej odpowiedzi jest to
Ale niepokojące jest to
Może to sprawić, że wybór systemu plików będzie ważny, jeśli chcesz zagwarantować niezawodne przechowywanie.
Ostatnia uwaga: podwojenie rozmiaru karty SD może podwoić jej żywotność.
To znaczy, jeśli masz kartę SD 2 GB z 200 MB wolnej pamięci, to przejście na kartę 4 GB da ci 11 razy więcej wolnego miejsca, zdolność wyrównywania zużycia, a tym samym żywotność, a przejście na kartę 16 GB da 71 razy więcej przestrzeń.
źródło
MMC_ERASE
polecenie zdefiniowane gdzieś w standardzie MMC / SD tylko do tego celu. Chociaż ze wszystkich kart SD wypróbowałem tylko jedną (tę, która była dołączona do mojego Pi-), faktycznie ją obsługuje.Jedyne, co widzę, to NIE zamieniać karty SD.
Zamiana karty SD prawdopodobnie zabije kartę SD.
Jeśli potrzebujesz więcej pamięci RAM, możesz spróbować użyć ZRAM, tam jest post na http://raspberry.pi.gw.gd/t50-Using-ZRAM.html podający kilka szczegółów na temat używania ZRAM na Raspberry Pi
Więcej informacji o zram na http://en.wikipedia.org/wiki/ZRam
Również najnowsze karty SD są o wiele bardziej solidne niż starsze, zakup nowej karty SD klasy 10 jest prawdopodobnie dobrą opcją, jeśli chcesz, aby trwała długo.
źródło
Możesz spróbować uruchomić Puppy Linux, który jest całkowicie rezydentem pamięci RAM. Jest bardzo mały i niesamowicie szybki, ponieważ działa całkowicie w pamięci, kopiując obraz pamięci (na karcie SD w twoim przypadku) do pamięci RAM podczas rozruchu, a następnie okresowo spłukując zmiany z powrotem do pamięci. Częstotliwość tego zapisu jest kontrolowana przez użytkownika, w tym ręcznie.
Puppy używa warstwowego systemu plików aufs lub starszego systemu plików unionfs z dowolnym standardowym systemem plików Linux, takim jak ext3 lub ext4. Może także znajdować się na partycjach FAT lub NTFS.
Istnieje co najmniej kilka wersji Puppy specjalnie zaprojektowanych dla RPi, jedna z nich została stworzona przez „Puppy Master”, Barry'ego Kaulera.
Więcej informacji można znaleźć na stronie http://puppylinux.org/wikka/Puppi
źródło
Większość ludzi mówi tutaj o swoich założeniach, a nie o osobistych doświadczeniach.
Używam mojego RaspberryPi z RasPBX jako firmowej centrali z 8 rozszerzeniami i faksem. Posiadamy 3 magistrale IP i jeden telefon stacjonarny za pośrednictwem LinkSYS SPA3000. Ugryzienie mojej pierwszej karty SD Kingston 4 GB zajęło tylko 1 miesiąc.
Nadal eksperymentowałem i nie miałem kopii zapasowej. BTW Pi jest podłączony do UPS APC. Następnie ponownie konfiguruję cały RasPBX od zera, ale tym razem przeniosłem / var / log i / var / lib / mysql na nasz korporacyjny NAS. Ta SD nadal była OK po 3 miesiącach.
Potem mieliśmy bardzo gorące lato. W trzecim miesiącu pi zaczęło nie wykrywać sieci Ethernet z niebieskiego. Pewnego dnia odkryłem, że wszystkie diody LED są przyciemnione i nie można uruchomić.
Wymieniłem Pi na nowy, gotowy do pracy. Zepsuty jeden zaczął działać po ochłodzeniu, ale działa raczej nieregularnie, a kiedy uruchamia się do RasPBX, tryb wideo nie przełącza się na grafikę, pozostaje w 80 * 25 Tekst. To było naprawdę pomieszane. Od tego czasu zamówiłem zestaw radiatora. Nowe Pi działa z nim już ponad 2 miesiące 7/24.
Więc jeśli będziesz używać pi w środowisku 7/24, nie bądź tani - kup radiator i unikaj używania / var / log i innych zajętych katalogów na karcie SD.
źródło
Porównałem wszystkie rozwiązania wykorzystujące TMPFS i najlepszą odpowiedzią jest synteza skryptów przygotowujących katalogi (patrz http://grenzdebiel.dyndns.org/wordpress/?p=98 ) z poprawnym / etc / defaults / tmpfs ( (patrz http://www.a-netz.de/2013/02/ramdisks-for-the-raspberry/ ).
Niezbędne kroki do wykonania na raspbian to:
1. edytuj
/etc/default/tmpfs
i ustaw :Polecam następujące rozmiary:
2. włącz dodatkowe katalogi za pomocą / etc / fstab
3. Użyj skryptu,
/etc/init.d/prepare-dirs
aby utworzyć brakujące katalogi w/var/log
celu uruchomienia wszystkich demonówZobacz na końcu, co zawiera w moim przypadku.
4. Ustaw skrypt jako wykonywalny
chmod 755 /etc/initd/prepare-dirs
.5. Upewnij się, że skrypt zostanie uruchomiony najpierw podczas rozruchu, zanim uruchomią się demony:
update-rc.d prepare-dirs defaults 01 99
zawartość
/etc/init.d/prepare-dir
:Otóż to.
źródło
Wyłącz plik wymiany:
Nie ma potrzeby odinstalowywania, jednak jeśli go nie używasz i potrzebujesz miejsca, możesz je bezpiecznie usunąć. Alternatywne polecenie usunięcia:
Sposób użycia: / sbin / dphys-swapfile {setup | swapon | swapoff | uninstall}
źródło
Flash Cell Endurance:
Jest czysto matematyczny na dużych kartach i normalnym zużyciu. Gdybyś pisał na kartę flash typu MLC o pojemności 8 GB dzień i noc w kółko, zabicie jej zajęłoby około 30 dni.
Odcinek 99 w Techsnap mówi o zużyciu dysków SSD, a Allen wyjaśnia, jak niemożliwe jest zużycie dysku SSD w codziennym użytkowaniu i nie musimy się martwić o wyłączenie swapów, cronów i tym podobnych. To po prostu działa teraz! Inteligentne wyrównanie zużycia dba o wszystko.
Normalne zużycie, jak podaje Kingston, powinno zapewnić 27 lat życia w profesjonalnym aparacie cyfrowym.
Cena lampy błyskowej spadła, a technologia jest znacznie lepsza.
Większość kart SD przeżyje dwie lub trzy generacje urządzeń i do tego czasu będzie uważana za małą i zbyt wolną w użyciu z dostępną znacznie lepszą i tańszą aktualizacją!
źródło
Jak wspomniano wcześniej, głównym problemem są pliki i katalogi, które nie są warte zapisywania między restartami, ale są dość często zapisywane, tj. Pliki pamięci podręcznej, foldery pobierania itp.
Raspbian oraz Debian i Ubuntu mają pakiet o nazwie unburden-home-dir, którego głównym celem jest symlinkowanie takich plików do mniej problematycznych miejsc, takich jak np.
tmpfs
Mount lub zewnętrzny dysk twardy, który jest mniej podatny na zużycie.Zwykle jest uruchamiany podczas logowania pod X i jest kierowany do plików pamięci podręcznej aplikacji GUI, ale może być również wywoływany ze skryptów lub podobnych i skonfigurowany dla dowolnych plików w katalogu osobistym użytkownika.
źródło
Oto moje rekomendacje dotyczące Debiana 8.0 (Jessie)
Opierają się na
iotop -bktoqqq
iiostat -dzp 5
. Powinieneś najpierw uruchomić te polecenia, aby zorientować się w problemie i jego rozwiązaniu.1. Wyłącz zamianę
2. Użyj opcji montowania i pamięci RAM
Zamontuj wszystkie partycje na karcie SD z
noatime,commit=1800
opcjami i zamontuj następujące katalogi w pamięci RAM za pomocą tych wpisów/etc/fstab/
:Commit opóźni zapisy i najpierw je zbierze.
3. Zaloguj się do najczęściej używanych plików dziennika
/var/tmp/log/
Zobacz mój opis Jak zmniejszyć zapis do plików dziennika .
4. Powstrzymaj Chromium przed wbijaniem karty SD
Jak się okazuje, Chrom mocno pisze i nie można go zatrzymać (patrz 176727 , 52663 ). Wpływa to na pamięć podręczną i katalog danych użytkownika. The Chromium / Porady wyjaśnić, jak to może zostać przeniesione do pamięci RAM. Ponieważ Raspberry nie ma dużo pamięci RAM, sugerowany Tab Suspender jest przydatny do oszczędzania pamięci RAM.
a) Pamięć podręczna
Ogranicz rozmiar pamięci podręcznej i przenieś ją do pamięci RAM, edytując
/etc/chromium-browser/customizations/00-rpi-vars
wTeraz pamięć podręczna jest na tyle mała, że można ją przenieść na dysk RAM, zmieniając
XDG_CACHE_HOME
wpis/etc/security/pam_env.conf
naTeraz moi dwaj użytkownicy mają małą pamięć podręczną przeglądarki w pamięci RAM. Jeśli to nie wystarczy, zmień odpowiednio pamięć podręczną lub / tmp / size.
b) Dane użytkownika reż
Również dane użytkownika dir (
.config/chromium/
) doświadczają ciężkich zapisów. Profil-sync-demon jest zalecany przez Chromium / Porady i wskazówki . Został opracowany w celu zarządzania profilem przeglądarki w tmpfs i okresowej synchronizacji z powrotem na dysk fizyczny. Niestety pakiet nie jest jeszcze częścią dystrybucji Raspbian 8.0 (Jessie). Więc jeszcze tego nie testowałem.5. Wolne miejsce na karcie SD
Zwolnij miejsce, odinstalowując niepotrzebne pakiety i pliki. To powinno rozłożyć zużycie bardziej równomiernie na partycje.
Gotowy!
Teraz uruchom
iotop -bktoqqq
iiostat -dzp 5
ponownie i zobaczyć znaczne ograniczenie dostępu do zapisu, gdy system jest bezczynny. Przez wiele minut nic nie jest zapisywane na mój dysk. I nie martw się, że zielona dioda ACT miga . Najwyraźniej nie jest to dobry wskaźnik dostępu do zapisu.źródło
Wystarczy niewielką redukcję cykli zapisu, przesyłając strumieniowo dane wyjściowe syslog na inny serwer. Oczywiście posiadanie takiego serwera z
syslogd
uruchomionym programem jest warunkiem wstępnym. Jednak, ponieważ Pi jest zabawką dla entuzjastów Linuksa, prawdopodobnie tak często jest. :-)Aby aktywować to przesyłanie strumieniowe, wystarczy wstawić instrukcję typu
w górnej części pliku
/etc/rsyslog.conf
, skomentuj wszystkie pozostałe wiersze i ponownie uruchom rejestrowanie, wydając polecenieservice rsyslog restart
. Następnie wiadomości powinny przychodzić na wybrany serwer.Jednym wyraźnym korzystnym efektem ubocznym jest to, że możesz łatwo monitorować swoje Pi w połączeniu z innymi komputerami na tym samym serwerze. Jednym minusem jest to, że podczas uruchamiania i zamykania systemu możesz utracić niektóre wiadomości, gdy połączenie sieciowe nie zostało jeszcze ustanowione lub zostało już zamknięte.
źródło
journald
którym są przechowywane w dzienniku systemd. Konfigurują takżejournald
przekazywanie dzienników do gniazda syslog, na którymrsyslogd
nasłuchuje; który umieszcza dodatkowe kopie wiadomości w plikach dziennika pod/var/log
. Jeśli nie masz nic przeciwkojournalctl
przeglądaniu dzienników (i działa o wiele lepiej niż/var/log
po zaznajomieniu się z nimi), możesz całkowicie wyłączyćrsyslog
i zapisać niektóre zapisy.Uwaga: Limit 100 000 cykli to hipoteza, która dotyczy każdego urządzenia komputerowego, nawet klawiszy na klawiaturze. Wierzę, że uruchomienie Pi w odpowiednich warunkach chłodzenia i odpowiednie cykle wyłączania / uruchamiania zapewnią lepsze wyniki niż wchodzenie w analogie.
To również może wzmocnić moją powyższą opinię.
Dodaj nowego użytkownika oprócz użytkownika Pi [domyślnie]. Wskaż katalog domowy nowego użytkownika na dysku zewnętrznym [kciuk / dysk twardy]. Nadaj nowemu użytkownikowi uprawnienia superużytkownika i zacznij używać go jako konta głównego.
Mam nadzieję, że to pomoże..
źródło
/var/log
i/var/tmp
. Ponadto posiadanie dowodów z doświadczenia, że właściwe chłodzenie robi różnicę, jest znacznie lepsze niż mówienie „wierzę”.Użyj demona syslog busybox (w pakiecie busybox-syslogd na Raspbian / Debian / Ubuntu) zamiast domyślnego demona syslog (zwykle rsyslog). Domyślnie w Raspbian / Debian / Ubuntu syslogd z busybox loguje się tylko w buforze pierścieniowym w pamięci, a nie na dysku. Bufor pierścieniowy ma domyślnie rozmiar 128 kB, tzn. Stare wpisy dziennika szybko się wycofują i wtedy znikają. Ale możesz go skonfigurować tak, aby używał do tego więcej pamięci RAM.
Jest to jednak znacznie lepsze rozwiązanie niż brak demona syslog, tzn. Nadal możesz się zalogować i odczytać wpisy dziennika ok. ostatnie kilka godzin lub dni (w zależności od skonfigurowanego rozmiaru bufora dzwonka) za pomocą polecenia
logread
. Możesz także użyćlogread -f
do uzyskaniatail -f
podobnego zachowania, aby np. Przechowywać tylko interesujące wpisy dziennika za pomocą skryptu filtrującego lub przekazywać wpisy dziennika przez sieć gdzie indziej, np. Za pomocąstunnel
lub podobnego .źródło
Kilka rzeczy, które zrobiłem:
chmod pliku dphys-swap (gdzieś w / etc - w tej chwili nie w pobliżu PI), aby:
Dostaję drobne błędy podczas uruchamiania (nie mogę uruchomić usługi dphys-swapfile) - Załóżmy, że jest lepszy sposób ... rc-update ??
Ponadto przechwytuję obrazy z modułu kamery, aby ostatecznie umieścić je na moim serwerze internetowym (Pi). Sformatowałem / dev / ram0 do ext2, zamontowałem go jako / media / ramdrive (chyba za pomocą /etc/init.rc). Ma 4 megabajty, wystarczająco duże na jedno kliknięcie. Nie zapisuje do SD.
Serwer (oululife.dnsdynamic.com) jest eksperymentalny, ale w Internecie. Aby naprawdę to podkreślić, pozwoliłem mu również przesyłać strumieniowo odcinek MP4 „Heartbeat *”. Działa z lighttpd, Mysql, PHP, WordPress, a nawet gdy zdalnie przesyłam strumieniowo przez sieć, prawie nie poci się, średnio ładuje około 0,2. Żadnego przetaktowywania. Model B rev. 2, w górę 24/7. Tak więc, jeśli uda mi się przenieść moje logi do innych 15 / dev / ramX, liczę, że moja karta Micro-SD 16G będzie działać przez lata ...
źródło