Kompresja systemu plików w Windows i Linux

in #polish6 years ago

Dyski twarde są coraz pojemniejsze - i jest to prawda. Nawet mój "nowy" laptop ma 1TB pamięci, ale przecież nie każdy użytkownik ma pojemny dysk lub na mało danych, a pomieścić je trzeba. Dzisiaj opowiem jak włączyć kompresję.

Czym jest kompresja?

Kompresja to algorytm komputerowy służący do zapisania danych na możliwie najmniejszej przestrzeni dyskowej. Mamy dwa rodzaje kompresji:

  • Stratna, w której część danych jest tracona, dla przykładu w wysokiej jakości obrazie 3 bardzo podobne kolory można zapisać jako jeden i w ten sposób zapisać ogólną informację.
  • Bezstratna, w której dane po dekompresji są takie same jak przed tym zabiegiem.

Kompresję oczywiście stosuje się nie tylko do zapisu danych na dyskach, ale również powszechnie w internecie, by ograniczyć ilość przesyłanych danych (co oszczędza pieniądze).

Windows

NTFS czyli domyślny system plików Microsoftu ma wbudowaną opcję kompresji, ale domyślnie wyłączoną. Nie jest ona tak imponująca jak Linuksowa, ale "daje radę". Aby ją włączyć należy wejść w Komputer.

image.png

Wybieramy dysk prawym przyciskiem myszy i dajemy właściwości
image.png

Zaznaczamy opcję "Kompresuj ten dysk, aby zaoszczędzić miejsce na dysku".
image.png

I Zastosuj.

Podczas kompresowania może wyskakiwać błąd (np. aplikacja jest wykorzystywana albo brak dostępu), naciskamy przycisk "Ignoruj wszystko" i idziemy sobie aż proces się nie skończy.
image.png

Brawo - kompresja włączona.

W moim przypadku (czystego Windowsa) 8.78GB udało się zrobić 8.69GB. Nie jest to dużo, ale należy pamiętać, że kompresja działa cały czas, czyli wgrywając pliki przepaść będzie się zwiększać jakby (czyli więcej miejsca zaoszczędzimy).

Linux

Nie każdy system plików wspiera kompresję dlatego warto tutaj zaopatrzyć się w system plików BTRFS, który taką obsługę posiada. Sam system plików jest dla wielu godnym następcą Ext4 i z czasem się przekonuję do niego (głównie za sprawą kompresji i wielu funkcji).

Krok 1 - Upewnij się, że partycja /boot jest na drugiej partycji

Jest to bardzo ważne zalecenie, by /boot (konfiguracja bootloadera i kernel) znajdowały się na niekompresowanym systemie plików, przez parę dni nie mogłem rozgryźć czemu po aktualizacji gruba system nie działa. Odpowiedź prosta - BTRFS kompresował konfigurację bootloadera, a ten nie mógł jej rozczytać, co powodowało awarię.

Krok 2 - Upewnij się, że masz jądro w wersji 4.14 lub nowszej

Osobiście preferuję najnowszej generacji algorytm ZStandard ("mocno" kompresuje, ale zarazem jest bardzo szybki). Jest to dość "świeża" rzecz i stare systemy (ze starym jądrem) mogą przestać działać.

Krok 3 - Wyedytuj /etc/fstab

Jest to przykładowy plik konfiguracyjny jak coś ;) Jako inspiracja

UUID=9781cacd-9c3f-40f5-9680-16666e425c64 /           btrfs    defaults        0       0

Mamy tutaj interesującą nas linię informującą gdzie w hierarchii katalogów znajduje się dysk twardy o identyfikatorze 97(...). Jeśli chcemy włączyć kompresję należy po defaults dać przecinek i wpisać compress=zstd

UUID=9781cacd-9c3f-40f5-9680-16666e425c64 /           btrfs    defaults,compress=zstd        0       0

Zapisać i zrestartować. Kompresja plików została włączona.

Sort:  

Nie spowoduje to na Windows, że aplikacje będą się dłużej uruchamiać ?

Posted using Partiko Android

Potencjalnie mogą się krócej uruchamiać jeśli dysk jest wolny. Natomiast różnicy wielkiej nie ma. Dodatkowo na próbę można kompresować np. aplikację (grę - jej katalog) jeśli loadingi są duże i samemu się przekonać

Jeśli dysk twardy jest powolny to kompresja go przyspieszy (mniej danych trzeba będzie odczytać z dysku). To nawet w niektórych przypadkach jest zauważalne gołym okiem. Szczególnie jeśli po kompresji popełni się jeszcze defragmentację. Kompresja daje jednak większy nakład pracy na procesor i baterię (czas pracy na baterii na laptopie). Mimo wszystko najczęściej spowolnienie procesora będzie marginalne, szczególnie jeśli nie będziemy kompresować plików, które są bardzo często czytane, ani tych które już są skompresowane (filmów, mp3 itp.).

Jeśli chodzi o BTRFS to warto dodać, że:

  • System plików sam zdecyduje które pliki skompresować, które nie. Wpis w pliku fstab tylko informuje o włączeniu tej funkcji. W ten sposób np. filmy (które już są mocno skompresowane) nie będą się niepotrzebnie kompresować drugi raz. W razie potrzeby regulacje można prowadzić granularnie - per plik lub katalog (włączyć wymuszenie kompresji lub wymuszenie dekompresji).
  • W przypadku dysków SSD w pliku fstab bardzo warto dodać przełącznik "ssd", co da np. "defaults,ssd,compress=zstd".
  • BTRFS obsługuje aż trzy rodzaje kompresji. ZSTD to jedna z nich.
  • Nie zaleca się kompresji plików baz danych (Oracle, MySQL, Postgres, itp), jako iż bazy same próbują optymalizować miejsce na dysku i tylko zmniejszy to ich wydajność.
  • Kompresja BTRFS niestety nie da zabójczo dobrych rezultatów, jako iż sama struktura systemu plików BTRFS zabiera trochę miejsca (więcej niż EXT4). W zamian ten system plików daje bardzo duże możliwości (snapshots, immutable files, deduplikacja takich samych plików w różnych katalogach, partycje logiczne itp).

Profesjonalny opis :D Natomiast ogólnie masz rację.
Co do ZSTD - chyba jest najlepszy? Podobno Snappy też jest ciekawy, ale kompresja trwa długo

ZSTD najlepszy, choć też i najmłodszy. Niektórzy wolą jeszcze nie używać do ważnych danych w obawie przed nieodkrytymi jeszcze bugami. Inni obawiają się bugów w nowszych jądrach Linuksa (4.14 i nowsze), które jest wymagane aby mieć tę kompresję w BTRFS. Do domowych zastosowań myślę, że to najlepsza opcja, natomiast przy krytycznych serwerach firmy każdy wybór jednak musi być wiele razy przemyślany. ;)

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.033
BTC 64029.44
ETH 3157.04
USDT 1.00
SBD 4.02