Próbuję przetestować projekt, który wymaga skompresowanej pamięci masowej przy użyciu systemu plików ext4, ponieważ aplikacja, której używam, opiera się na funkcjach ext4.
Czy są dostępne jakieś rozwiązania produkcyjne / stabilne do przezroczystej kompresji na ext4?
Co próbowałem:
Ext4 ponad wolumin ZFS z włączoną kompresją. To faktycznie miało negatywny wpływ. Próbowałem utworzyć wolumin ZFS z włączoną kompresją lz4 i stworzyć system plików ext4 na / dev / zvol / ... ale wolumin zfs pokazał dwukrotnie rzeczywiste użycie, a kompresja nie wydawała się mieć żadnego efektu.
# du -hs /mnt/test
**1.1T** /mnt/test
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
pool 15.2T 2.70G 290K /pool
pool/test 15.2T 13.1T **2.14T** -
Polecenia tworzenia ZFS
zpool create pool raidz2 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde2 /dev/sdf1 /dev/sdg1 /dev/sdh2 /dev/sdi1
zfs set recordsize=128k pool
zfs create -p -V15100GB pool/test
zfs set compression=lz4 pool/test
mkfs.ext4 -m1 -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink /dev/zvol/pool/test
Fusecompress: Wydaje się, że działa, ale nie jest w 100% stabilny. Poszukuję alternatyw.
LessFS: Czy można używać Lessfs w połączeniu z ext4? Nie próbowałem jeszcze, ale byłbym zainteresowany wglądem użytkowników.
Jeden główny problem: nieprawdziwa przejrzystość
Problem, który widziałem w przypadku fusecompress, to kwoty. Na przykład, jeśli włączyłem kompresję w systemie plików, chciałbym, aby mój system skorzystał z kompresji, niekoniecznie użytkownika końcowego. Gdybym włączył limit 1 GB dla użytkownika o współczynniku kompresji 1,5, byłby on w stanie przesłać 1,5 GB danych zamiast 1 GB danych, a system korzystałby z kompresji. To również wydawało się pokazywać na df-h. Czy istnieje rozwiązanie, aby kompresja była przezroczysta dla kwot?
źródło
Odpowiedzi:
Używam ZFS w systemie Linux jako menedżera woluminów i jako środek zapewniający dodatkową ochronę i funkcjonalność tradycyjnym systemom plików. Obejmuje to dostarczanie migawek na poziomie bloków, replikacji, deduplikacji, kompresji i zaawansowanego buforowania w systemach plików XFS lub ext4.
Zobacz: https://pthree.org/2012/12/21/zfs-administration-part-xiv-zvols/ w celu uzyskania innego wyjaśnienia.
W moim najczęstszym przypadku wykorzystuję funkcję Zvol ZFS, aby utworzyć rzadki wolumin na istniejącym Zpool. To właściwości zvola można ustawić tak jak normalny system plików ZFS. W tym momencie możesz ustawić właściwości takie jak typ kompresji, rozmiar woluminu, metoda buforowania itp.
Utworzenie tego zvola stanowi dla Linuksa urządzenie blokowe, które można sformatować w wybranym systemie plików. Użyj
fdisk
lub,parted
aby utworzyć partycję imkfs
gotowy wolumin.Zamontuj to, a zasadniczo masz system plików wspierany przez Zvol i wszystkie jego właściwości.
Oto mój obieg pracy ...
Utwórz zpool składający się z czterech dysków:
Będziesz potrzebować
ashift=12
dyrektywy dla rodzaju używanych dysków. W tym przypadku nazwa zpool to „vol0”.Ustaw początkowe ustawienia Zpool:
Ustawiam
autoexpand=on
na poziomie Zpool na wypadek, gdyby kiedykolwiek wymieniłem dyski na większe dyski lub rozszerzę pulę w ustawieniach serwerów lustrzanych ZFS . Zazwyczaj nie używam ZFS raidz1 / 2/3 z powodu niskiej wydajności i niemożności rozszerzenia zpool.Ustaw początkowe właściwości systemu plików ZFS:
użyj
lz4
algorytmu kompresji dla nowych instalacji ZFS. Można pozostawić to włączone cały czas.Utwórz Zvol ZFS:
W przypadku ZFS w systemie Linux bardzo ważne jest, aby używać dużego rozmiaru bloku.
-o volblocksize=128k
jest tu absolutnie niezbędny. Ta-s
opcja tworzy rzadki zvol i nie zużywa miejsca w puli, dopóki nie będzie potrzebne. Możesz tu przesadzić, jeśli dobrze znasz swoje dane. W tym przypadku mam około 444 GB dostępnego miejsca na dysku w puli, ale prezentuję wolumin 800 GB dla XFS.Urządzenie zvol partycji:
( powinno być / dev / zd0 dla pierwszego zvol; / dev / zd16, / dev / zd32 itp. Dla kolejnych zvoli )
Utwórz i zamontuj system plików:
mkfs.xfs lub ext4 na nowo utworzonej partycji, / dev / zd0p1.
Chwyć UUID
blkid
i zmodyfikuj/etc/fstab
.Zamontuj nowy system plików.
Wyniki ...
Lista systemów plików ZFS.
Lista Zpool ZFS.
Właściwości ZFS zvol ( Należy wziąć pod uwagę
referenced
,compressratio
ivolsize
).źródło
/dev/sdb
kontra/dev/sdb1
.Musisz także włączyć odrzucanie w systemie plików ext4. Bez odrzucania, zfs nie odzyskuje miejsca po usunięciu plików. Może to prowadzić do dużych rozbieżności w przestrzeni między raportami systemu plików ext4 a raportami woluminu ZFS.
źródło
fstrim
polecenia jest czystsze .