Używanie karty SD w RPI ma sporo plusów, ale oczywiście karty te mają ograniczoną żywotność (np. ilość zapisów) . Dlatego ważne są backupy ważnych plików no i trzeba być przygotowanym, że za jakiś czas trzeba będzie kupić kolejną kartę.
Jak nieco opóźnić ten proces?
Ważnym czynnikiem jest posiadanie, w miarę możliwości, sporej ilości wolnego miejsca, żeby zapisy nie były ciągle na tych samych sektorach.
Innym sposobem jest ograniczenie ilości zapisów na kartę.
Co generuje największą ilość takich operacji?
Najczęściej są to logi.
Co możemy zatem zrobić?
Możemy /var/log umieścić na zewnętrznym dysku (lokalnym/sieciowym) albo utworzyć do tego celu mały ramdisk.
Każde z rozwiązań ma swoje plusy i minusy - teraz opiszę ostatnią opcję.
Możemy utworzyć oczywiście ręcznie ramdisk i zamontować /var/log na nim, ale ja wykorzystam gotowe rozwiązanie LINK
Wg dokumentacji pliki będą zapisywane na wygenerowanym ramdisku do momentu restartu systemu lub serwisu (wtedy pliki zostaną przeniesione na dysk (przez rsync)). Jeśli skończy się miejsce to serwer niestety zacznie swapować więc musimy albo wcześniej zrestartować serwis ramdisk albo usunąć pliki.
Instalacja jest prosta, najpierw należy pobrać pakiet lsof (zależność)
Teraz cały katalog /var/log powinien znajdować się na ramdisku.
UPDATE.
W związku z tym, że uruchomiłem MRTG i wrzuciłem jeszcze parę dodatków do monitorowania (opis TUTAJ), postanowiłem rozszerzyć nieco ideę ramdisku i ograniczyć kolejne zapisy na kartę. Popracowałem bowiem z katalogiem /var/www/mrtg (w końcu to kilkanaście zapisów co 5 minut).
Można oczywiście stworzyć oddzielny ramdisk (np wykorzystując TEN opis), ale należy pamiętać, że po reboocie stracimy wszystkie pliki, więc trzeba by było stworzyć skrypt synchronizujący pliki (np przez rsync). Jako, że mamy tu gotowe rozwiązanie - poszedłem drogą na skróty i utworzyłem link dla katalogu mrtg na /var/log. W ten sposób ramlog również zajmie się plikami mrtg.
Na szybko:
UPDATE.2.
Po pewnym czasie dodałem wpis do cron-a
Tak tylko dodam, że ta idea przydatna jest również wtedy, gdy chcemy przyspieszyć odczyt często używanych plików - np przy udostępnianiu plików przez apache.
Instalacja jest prosta, najpierw należy pobrać pakiet lsof (zależność)
apt-get install lsofnastępnie:
wget http://www.tremende.com/ramlog/download/ramlog_2.0.0_all.deb sudo dpkg -i ramlog_2.0.0_all.debJeszcze definiujemy ile pamięci ma być przeznaczone:
sudo vi /etc/default/ramlog TMPFS_RAMFS_SIZE=25mI restartujemy :
sudo reboot
Teraz cały katalog /var/log powinien znajdować się na ramdisku.
# df -h | grep ramlog ramlog-tmpfs 25M 5.2M 20M 18% /var/log
UPDATE.
W związku z tym, że uruchomiłem MRTG i wrzuciłem jeszcze parę dodatków do monitorowania (opis TUTAJ), postanowiłem rozszerzyć nieco ideę ramdisku i ograniczyć kolejne zapisy na kartę. Popracowałem bowiem z katalogiem /var/www/mrtg (w końcu to kilkanaście zapisów co 5 minut).
Można oczywiście stworzyć oddzielny ramdisk (np wykorzystując TEN opis), ale należy pamiętać, że po reboocie stracimy wszystkie pliki, więc trzeba by było stworzyć skrypt synchronizujący pliki (np przez rsync). Jako, że mamy tu gotowe rozwiązanie - poszedłem drogą na skróty i utworzyłem link dla katalogu mrtg na /var/log. W ten sposób ramlog również zajmie się plikami mrtg.
Na szybko:
mkdir /var/log/mrtg_pliki cp -rapv /var/www/mrtg /var/log/mrtg_pliki cd /var/www mv mrtg mrtg.BACKUP ln -s /var/log/mrtg_pliki/mrtg/ /var/www/mrtg
UPDATE.2.
Po pewnym czasie dodałem wpis do cron-a
15 * * * * root /etc/init.d/ramlog reloadspowoduje to, że jeśli malinka straci dostęp do sieci lub się np zawiesi, nie stracimy zbyt dużej ilości danych. W ten sposób bowiem co godzinę logi z ramdisku będą zapisywane na karcie SD.
Tak tylko dodam, że ta idea przydatna jest również wtedy, gdy chcemy przyspieszyć odczyt często używanych plików - np przy udostępnianiu plików przez apache.
Informacje jak te są niezwykle cenne. Świetny wpis.
OdpowiedzUsuńŚwietny wpis
OdpowiedzUsuń