Blog (57)
Komentarze (10k)
Recenzje (1)
@BerionSSD na miętowo

SSD na miętowo

29.07.2022 23:57, aktualizacja: 31.07.2022 16:36

Domyślnie tak jak Windows, Linux sporo maluje po pamięci masowej. I choć w przypadku HDD czyli dysku twardego, problem jest marginalny, tak w przypadku SSD a tym bardziej kart pamięci, dobrą praktyką jest ograniczenie zapisu, który skraca jego żywotność. Im mniej cykli nadpisywania danej komórki tym lepiej – tym bardziej że już od dawna nie można wierzyć podawanym przez producenta wartościom MTBF i przybliżonej oczekiwanej ilości petabajtów jakie hipotetycznie może obrócić SSD przed zgonem.

Wszystkie poniższe zmiany pozwolą zaoszczędzić łącznie od kilkuset GB do nawet 1TB rocznie.

RAMdyski

Jednym ze sposobów jaki warto rozważyć jest przerzucenie tymczasowych danych do pamięci operacyjnej, z której można wydzielić dany kawałek imitując pamięć masową. Można to zrobić na dwa sposoby: montując taką przestrzeń jako ramfs lub jako tmpfs. Pierwszy zakłada że wielkość jest równa dostępnej RAM, drugi używa limitu. Bezpieczniejszy jest tmpfs ponieważ nie doprowadzisz do sytuacji, kiedy RAM się skończy dla innych istotnych operacji systemu, a co najwyżej kiedy skończy się ilość z wydzielonego obszaru co doprowadzi w najgorszym przypadku do zawieszenia się aplikacji lub środowiska graficznego, a nie całego Linuksa.

Aby tzw. ramdisk miał jakikolwiek sens to musisz mieć wystarczająco dużo pamięci operacyjnej i dla środowiska i dla danych, które chcesz tam umieszczać, a więc musisz wiedzieć i rozumieć dlaczego taki a śmaki program wrzuca tam i tam, taki a taki plik, o takiej i takiej wielkości i że do takiej, a takiej wielkości może wzrosnąć jego waga. Brzmi lakonicznie, ale nie da się szczegółowo opisać wszystkich przypadków (rzecz jasna sam wszystkich nawet nie znam). Na moim przykładzie: mam sumarycznie 8GB RAM, mój Mint ciągnie ~1GB, a obłożony Lisem i kilkoma programami w porywach 3GB (możesz to sprawdzić poleceniem free -g), a więc wciąż około 4 do 5 gigabajtów leży odłogiem. Na moje potrzeby, ramdyskom przyznałem łącznie 3GB bo więcej też nie użyję, a wolę mieć trochę RAM w zapasie tak aby w razie czego nie zaczął żonglować ze swapem. Z drugiej strony, gdybym np. malował ilustracje do książek (Krita) lub gdybym obrabiał zdjęcia w RAW (DarkTable), to te wielkości mogłyby mi już nie wystarczyć. Tak że wszystko zależy od tego do czego się używa komputera.

Aby montować ramdysk przy starcie systemu, edytuj plik "/etc/fstab" (oczywiście wymagane prawa roota).

938054

Polecam dwa, choć teoretycznie wystarczyłby jeden na "/tmp". Jednakże w poniższej konstelacji przed aktualizacją dystrybucji lub jej upgrade’m (które mogą przekroczyć rozmiar ramdysku – a w moim przypadku na pewno), można go łatwo na ten czas wyłączyć, po prostu komentując linię znakiem # w "fstab", odmontować i zamontować ponownie wszystkie punkty (sudo mount -a). Z kolei drugi wraz z symlinkami (o tym za chwilę) zostawić w spokoju.

tmpfs /tmp tmpfs nodev,nosuid,noatime,mode=1777,size=2G 0 0

tmpfs /mnt/ramdisk tmpfs noexec,noatime,rw,size=1G 0 0

938058

Na Linux Mint katalog "/mnt/ramdisk" już istnieje, ale jeśli go nie masz to powinieneś go utworzyć, inaczej mount nie będzie wiedział gdzie zamontować tmpfs. Ta konkretna lokalizacja nie jest obowiązkowa, może być dowolna, podobnie jak nazwa folderu, ale pamiętaj, że wpis w "fstab" musi tam prowadzić.

Nie zapomnij też usunąć zawartości prawdziwego "/tmp" (CTRL+H odkrywa pliki i foldery z kropką w nazwie) by następnie uruchomić system ponownie lub wklepać sudo mount -a.

938061

Znaczenie parametrów znajdziesz w dokumentacji mount. Offline, wpisując w terminalu man mount lub online np. tutaj. Jeśli nie wiesz do czego służą, zostaw je takie jakie proponuję ja (oczywiście poza "size", który determinuje rozmiar ramdysków, a który dobierasz względem własnych potrzeb i możliwości).

Cache

Do ramdysku warto wrzucić "/home/<użytkownik>/.cache/". Używany jest głównie przez Cinnamon, ale też i różne „zwykłe” programy. A więc utwórz folder "/mnt/ramdisk/.cache/", usuń ten folder w katalogu użytkownika i zrób link symboliczny (naturalnie nazwę katalogu użytkownika podajesz własną):

ln -s /mnt/ramdisk/.cache /home/<użytkownik>/

Nemo (domyślny manager plików) linki symboliczne wyświetla ze strzałką – i tak teraz powinien wyglądać ten folder.

938066

Po wyłączeniu komputera, RAM się czyści a więc cała zawartość "/mnt/ramdisk/" przestaje istnieć. A co za tym idzie, po ponownym uruchomieniu Linuksa, ".cache" z ramdysku zniknie, link symboliczny będzie martwy, a Cinnamon się zawiesi. Aby temu zapobiec, musisz przy każdym uruchomieniu systemu, tworzyć folder ".cache" w ramdysku. I tutaj są różne szkoły: możesz napisać usługę dla systemd (lub skrypt startowy jeśli używasz init), możesz dopisać polecenie w cronie, albo możesz tak jak ja napisać… aktywator. :P

Przejdź do "Preferencje"→"Programy startowe", i dodaj polecenie klikając w ikonę z plusem: mkdir /mnt/ramdisk/.cache

Opóźnienie zerowe, komentarz jak i nazwa w menu (czyli wg. tłumacza "Imię i nazwisko" ;)) może być dowolna. Aktywator trafi do "/home/<użytkownik>/.config/autostart/<nazwa>.desktop".

938070

Firefox

Do ramdysku można również wrzucić "/home/<użytkownik>/.mozilla/", czyli katalog użytkownika i ustawień Firefox’a. Nie wszystkie dane są tutaj tymczasowe, są takie które każdy chciałby zachować (ustawienia, zakładki, hasła, listy blokad reklam etc.). Więc albo zrezygnuj z pomysłu umieszczenia całego ".mozilla" w ramdysku, albo zrób tak jak ja – czyli przygotuj „folder matkę”, który będzie za każdym razem kopiowany w miejsce do którego kieruje dowiązanie symboliczne. Oczywiście za każdym razem kiedy system operacyjny jest uruchamiany, wszystkie zmiany z poprzedniej sesji nie zostają zachowane. Jeśli więc np. dodasz jakąś nową zakładkę to będziesz musiał eksportować plik z zakładkami i wrzucić go do folderu z pre‑konfiguracją bo inaczej zniknie po restarcie Mięty. To dość osobliwy patent, ale ja rzadko zmieniam te dane, więc na moje potrzeby takie egzotyczne rozwiązanie się sprawdza.

A więc najpierw zmień nazwę ".mozilla" na np. ".mozilla_teleport". ;) Będzie to folder-wzór, za każdym razem kopiowany do ramdysku. Jeśli chcesz poświęcić trochę czasu na jego odchudzenie ze śmieci, polecam swoje stare poradniki na DobreProgramy. Poniżej przykład z katalogu lisa pozbawionego śmieci (ale też bez "key4.db" z hasłami bo nie używam i bez "search.json.mozlz4" z ustawieniami wyszukiwarek bo mam tylko jedną).

938074

Stwórz link symboliczny:

ln -s /mnt/ramdisk/.mozilla /home/<użytkonwnik>/

I aktywator:

cp -r /home/<użytkownik>/.mozilla_teleport /mnt/ramdisk/.mozilla

Ustaw opóźnienie na sekundę lub dwie ponieważ nie jest to najważniejsza czynność na świecie, a i tak szybciej nie uruchomisz Firefox’a.

938078

Chromorodzina

Nie używam Chrome ani żadnej innej „przeglądarki chromopodobnej”, więc nie wiem czy można w podobny sposób tak jak „lisa”, oddelegować profil do ramdysku. Możliwe że w przyszłości uzupełnię ten rozdział.

LOGi systemowe

Wszystkie „logi”, które lądują w "/var/log/" można wrzucać do RAM. Prawdopodobnie trzeba montować z mode=0775 i suid dla syslog. Ja jednak wybrałem ograniczenie dla samego systemd, który generuje mi najwięcej i najcięższych, ale za to łatwo go zakneblować. Oczywiście liczę się z tym, że w przypadku problemów, bez log‑ów prawdopodobnie nie będzie łatwo odnaleźć przyczyny. Coś za coś.

Otwórz plik "/etc/systemd/journald.conf" i odkomentuj linie ze "Storage" (który przestaw z "auto" na "volatile") i "Compress" (ustaw na tak). Dzięki tej zmianie, logi generowane przez journald będą tymczasowe i zajmować mniej. Zapisz zmiany, restartuj i gotowe.

938084

Jeśli masz inne pomysły lub uwagi dotyczące uciszania Linuksa, podziel się nimi w komentarzu.

Wybrane dla Ciebie
Komentarze (15)