Komputery / Artykuł

SD-CARD Wear Leveling

Zmniejszenie zużycia karty SD na Raspberry Pi lub urządzeniu z Armbianem



Niestety wiele kart SD nie obsługuje sprzętowo opcji Wear Leveling, w zasadzie nawet zbytnio nie ma jak tego sprawdzić, 
teoretycznie użycie komendy sudo fstrim -v / - powinno pomóc i jeśli otrzymamy coś takiego "the discard operation is not supported", 
to znaczy, że wasza karta SD nie posiada sprzętowej obsługi Wear Leveling. 

*************************************************************************************************************************************
Co można zrobić jeśli macie kartę bez Wear Leveling? 

Skoro bezpośrednia pomoc w postaci TRIM nie jest możliwa, musisz skupić się na ograniczeniu częstotliwości zapisu.

1. Ogranicz zapisy do logów za pomocą log2ram 🪵

To najskuteczniejszy sposób na zmniejszenie zużycia karty, ponieważ przenosi ciągłe małe zapisy logów do pamięci RAM, skąd są zapisywane na dysk tylko co pewien czas lub przy zamykaniu systemu.

# Instalacja log2ram (jeśli pakiet jest dostępny w Twojej dystrybucji)
sudo apt update
sudo apt install log2ram

# Jeśli pakiet nie jest dostępny, możesz użyć skryptu instalacyjnego.
# Po instalacji i restarcie logi będą zapisywane do RAM.
# Sprawdź status po restarcie:
systemctl status log2ram

Pamiętaj: Użycie log2ram zwiększa ryzyko utraty najnowszych logów w przypadku nagłej awarii zasilania.

2. Wyłącz znaczniki czasu dostępu (Noatime) ⏱️

Upewnij się, że Twoja partycja jest zamontowana z opcją noatime, co zapobiega zapisywaniu nowego znacznika czasu na karcie za każdym razem, gdy plik jest odczytywany.

  1. Otwórz plik konfiguracji montowania:

sudo nano /etc/fstab

Znajdź wiersz montowania partycji głównej (zwykle oznaczony /). Powinien wyglądać mniej więcej tak:

/dev/mmcblk0p2  /  ext4  defaults,noatime  0  1

Jeśli nie ma tam noatime, dodaj je, oddzielając przecinkiem od innych opcji (jak defaults).

3. Zwiększ interwał zapisu (Commit) ⏳

Możesz zwiększyć czas, po jakim jądro systemu wymusza zrzut buforowanych danych na dysk. Domyślny interwał to 5 sekund, co generuje dużo zapisów.

  1. W pliku /etc/fstab (patrz wyżej) dodaj opcję commit=XXX do partycji głównej. Na przykład commit=600 oznacza zapis co 10 minut:

    /dev/mmcblk0p2  /  ext4  defaults,noatime,commit=600  0  1
    
  2. Zapisz i zrestartuj Raspberry Pi, aby zmiany w fstab weszły w życie.


4. Sprawdź, czy karta ma odpowiedni zapas miejsca 📏

Nawet bez TRIM, wewnętrzne algorytmy wear leveling karty działają lepiej, gdy mają do dyspozycji dużą pulę wolnych bloków. Upewnij się, że karta SD nie jest zapchana do pełna (idealnie: pozostaw co najmniej 15-20% wolnego miejsca).




Komentarze

Zaloguj się, aby komentować.