Saya mencoba untuk menguji proyek yang memerlukan penyimpanan terkompresi dengan menggunakan sistem file ext4 karena aplikasi yang saya gunakan bergantung pada fitur-fitur ext4.
Apakah ada solusi produksi / stabil di luar sana untuk kompresi transparan pada ext4?
Apa yang saya coba:
Ext4 lebih dari volume ZFS dengan kompresi diaktifkan. Ini sebenarnya memiliki dampak buruk. Saya mencoba membuat volume ZFS dengan kompresi lz4 diaktifkan dan membuat sistem file ext4 di / dev / zvol / ... tetapi volume zfs menunjukkan dua kali lipat penggunaan aktual dan kompresi tampaknya tidak berpengaruh.
# 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** -
Perintah Pembuatan 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: Tampaknya bekerja tetapi tidak 100% stabil. Mencari alternatif.
LessFS: Apakah mungkin menggunakan Lessfs dalam hubungannya dengan ext4? Saya belum mencoba tetapi akan tertarik dengan wawasan pengguna.
Satu masalah utama: transparansi tidak benar
Masalah yang saya lihat dengan fusecompress adalah kuota. Sebagai contoh, jika saya mengaktifkan kompresi pada sistem file, saya ingin sistem saya mendapat manfaat dari kompresi, tidak harus pengguna akhir. Jika saya mengaktifkan kuota 1GB untuk pengguna, dengan rasio kompresi 1,5, mereka akan dapat mengunggah data 1,5GB, daripada 1GB data dan sistem mendapat manfaat dari kompresi. Ini juga muncul untuk ditampilkan di df -h. Apakah ada solusi untuk memiliki kompresi transparan ke kuota?
sumber
Jawaban:
Saya menggunakan ZFS di Linux sebagai manajer volume dan sarana untuk memberikan perlindungan dan fungsionalitas tambahan ke sistem file tradisional. Ini termasuk membawa snapshot tingkat blok, replikasi, deduplikasi, kompresi, dan caching lanjutan ke sistem file XFS atau ext4.
Lihat: https://pthree.org/2012/12/21/zfs-administration-part-xiv-zvols/ untuk penjelasan lainnya.
Dalam kasus penggunaan saya yang paling umum, saya memanfaatkan fitur ZFS zvol untuk membuat volume yang jarang pada zpool yang ada. Properti zvol itu dapat diatur seperti sistem file ZFS normal. Pada titik ini, Anda dapat mengatur properti seperti tipe kompresi, ukuran volume, metode caching, dll.
Membuat zvol ini menghadirkan perangkat blok ke Linux yang dapat diformat dengan sistem file pilihan Anda. Gunakan
fdisk
atauparted
untuk membuat partisi Anda danmkfs
volume yang sudah jadi.Pasang ini dan Anda pada dasarnya memiliki sistem file yang didukung oleh zvol dan dengan semua propertinya.
Inilah alur kerja saya ...
Buat zpool yang terdiri dari empat disk:
Anda perlu
ashift=12
arahan untuk jenis disk yang Anda gunakan. Nama zpool adalah "vol0" dalam kasus ini.Tetapkan pengaturan zpool awal:
Saya atur
autoexpand=on
di tingkat zpool jika saya pernah mengganti disk dengan drive yang lebih besar atau memperluas kumpulan dalam pengaturan mirror ZFS . Saya biasanya tidak menggunakan ZFS raidz1 / 2/3 karena kinerja yang buruk dan ketidakmampuan untuk memperluas zpool.Setel properti sistem file zfs awal:
Silakan gunakan
lz4
algoritma kompresi untuk instalasi ZFS baru. Tidak apa-apa membiarkannya sepanjang waktu.Buat ZFS zvol:
Untuk ZFS di Linux, sangat penting bahwa Anda menggunakan ukuran blok yang besar.
-o volblocksize=128k
sangat penting di sini. The-s
pilihan menciptakan zvol jarang dan tidak mengkonsumsi ruang kolam renang sampai diperlukan. Anda dapat terlalu berkomitmen di sini, jika Anda tahu data Anda dengan baik. Dalam hal ini, saya memiliki sekitar 444GB ruang disk yang dapat digunakan di kolam, tapi saya menyajikan volume 800GB ke XFS.Perangkat partisi zvol:
( harus / dev / zd0 untuk zvol pertama; / dev / zd16, / dev / zd32, dll. Untuk zvol berikutnya )
Buat dan
pasang sistem file: mkfs.xfs atau ext4 pada partisi yang baru dibuat, / dev / zd0p1.
Raih UUID dengan
blkid
dan modifikasi/etc/fstab
.Pasang sistem file baru.
Hasil ...
Daftar sistem file ZFS.
ZFS daftar zpool.
Properti ZFS zvol ( perhatikan
referenced
,compressratio
danvolsize
).sumber
/dev/sdb
versus/dev/sdb1
.Anda juga perlu mengaktifkan discard pada sistem file ext4. Tanpa membuang, zfs tidak mendapatkan kembali ruang ketika file dihapus. Hal ini dapat menyebabkan perbedaan ruang besar antara apa yang dilaporkan oleh filesystem ext4 dan laporan volume zfs.
sumber
fstrim
perintah secara berkala .