ZFS: kompres ulang file yang ada setelah perubahan dalam algoritma kompresi


14

Saya memiliki kumpulan yang dibuat pada tahun 2011, menggunakan lzjb compression, dan tidak sampai beberapa tahun kemudian upgrade memungkinkan saya untuk mengatur kompresi lz4. Saya memperkirakan bahwa setidaknya 20% dari konten (berdasarkan ruang) pada array dibuat sebelum 2013, yang berarti masih dikompres menggunakan lzjb.

Saya dapat memikirkan beberapa opsi untuk memperbaikinya dan mendapatkan kembali (beberapa) ruang:

  1. Cadangkan dan pulihkan ke kumpulan baru. Tidak terlalu praktis, karena saya tidak memiliki penyimpanan berlebihan yang cukup untuk menampung salinan sementara. Pemulihan juga membutuhkan kolam untuk offline selama beberapa jam.

  2. Tulis skrip untuk menyalin ulang file apa pun dengan stempel waktu lebih tua dari 2013. Berpotensi berisiko, terutama jika tersedak ruang atau karakter khusus lainnya dan berakhir dengan mengacaukan nama asli.

Apakah ada cara untuk membuat ZFS mengkompres ulang blok legacy menggunakan algoritma kompresi saat ini? Agak seperti scrub, tetapi menyembuhkan kompresi.

Pertanyaan terkait: apakah ada cara untuk melihat penggunaan setiap jenis algoritma kompresi? zdb hanya menunjukkan statistik kompresi secara keseluruhan, daripada memecahnya menjadi algoritma individu.


2
Saya cukup yakin Anda menyebutkan hanya dua opsi. Lihat juga diskusi dalam masalah 3013 untuk mengapa fungsi ini tidak ada dan Anda mungkin tidak ingin melakukan ini sama sekali.
Michael Hampton

2
lz4 konon paling banyak 10% lebih baik dalam mengompresi daripada lzjb. Jika 20% dari data Anda dapat dikompresi 10% lebih baik, Anda akan mendapatkan paling banyak 2% lebih banyak ruang kosong. Apakah itu layak?
pipa

1
Jika Anda menulis skrip shell untuk melakukan penyalinan, tambahkan export LC_ALL=Cke awal skrip, dan semua karakter khusus non-ASCII dalam nama file akan tetap utuh. Menjaga ruang putih dan dash tetap utuh lebih sulit, gunakan tanda kutip ganda dan --, mis cp -- "$SOURCE" "$TARGET".
Poin

4
@pipe Space adalah satu (sangat) keuntungan kecil, tapi saya lebih tertarik pada kecepatan dekompresi. Dari FreeBSD zpool-fitur manpage: "Biasanya, kompresi lz4 sekitar 50% lebih cepat pada data kompresibel dan 200% lebih cepat pada data yang tidak dapat dimampatkan daripada lzjb. Ia juga sekitar 80% lebih cepat pada dekompresi, sambil memberikan sekitar 10% rasio kompresi yang lebih baik. "
rowan194

@ Poin Saya tidak akan memanggil mematuhi aturan pemrograman shell mendasar (tanda kutip ganda di sekitar variabel atau menggunakan --) "lebih rumit". Itu sama pentingnya dengan menghindari injeksi SQL, misalnya.
glglgl

Jawaban:


14

Anda harus menyalin kembali data (lengkap atau sebagian) atau zfs mengirim / menerima data ke kumpulan baru atau sistem file ZFS.

Tidak ada opsi lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.