SSD na miętowo
29.07.2022 | aktual.: 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).
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
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
.
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.
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".
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ą).
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.
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.
Jeśli masz inne pomysły lub uwagi dotyczące uciszania Linuksa, podziel się nimi w komentarzu.