ZFS: sıkıştırma algoritmasındaki değişiklikten sonra mevcut dosyaları yeniden sıkıştırın


14

2011 yılında oluşturulan bir havuz var, kullanarak lzjb compressionve birkaç yıl sonra bir yükseltme bana sıkıştırma ayarlamak için izin değildi lz4. Dizideki içeriğin (alana göre) en az% 20'sinin 2013'ten önce oluşturulduğunu tahmin ediyorum, bu da hala sıkıştırılmış olduğu anlamına geliyor lzjb.

Bunu düzeltmek ve (bazı) alan kazanmak için birkaç seçenek düşünebilirsiniz:

  1. Yedekleyin ve yeni bir havuza geri yükleyin. Geçici kopyayı tutmak için yeterli yedek depolama alanına sahip olmadığım için gerçekten pratik değil. Geri yükleme ayrıca havuzun birkaç saat çevrimdışı kalmasını gerektirir.

  2. 2013'ten daha eski bir zaman damgası olan herhangi bir dosyayı yeniden kopyalamak için bir komut dosyası yazın. Özellikle boşluklara veya diğer özel karakterlere boğulursa ve orijinal adı karıştırırsa potansiyel olarak risklidir.

ZFS'nin mevcut sıkıştırma algoritmasını kullanarak eski blokları yeniden sıkıştırmasını sağlamanın bir yolu var mı? Bir tür fırça gibi, ama sıkıştırmayı iyileştirir.

İlgili bir soru: Her bir sıkıştırma algoritması türünün kullanımını görmenin bir yolu var mı? zdb, bireysel algoritmalara ayırmak yerine, genel sıkıştırma istatistiklerini gösterir.


2
Eminim sadece iki seçeneği seçtiniz. Ayrıca, bu işlevin neden bulunmadığından 3013 numaralı konudaki tartışmaya da bakın ve bunu hiç yapmak istemeyebilirsiniz.
Michael Hampton

2
lz4'ün sıkıştırmada lzjb'den en fazla % 10 daha iyi olduğu varsayılmaktadır. Verilerinizin% 20'si% 10 daha iyi sıkıştırılabilirse, en fazla% 2 daha fazla boş alan elde edersiniz. Buna değer mi?
boru

1
Kopyayı yapmak için bir kabuk komut dosyası yazarsanız export LC_ALL=C, komut dosyasının başına ekleyin ve dosya adlarındaki ASCII olmayan tüm özel karakterler korunur. Beyaz alanı ve kısa çizgiyi sağlam tutmak, çift tırnak işareti kullanın ve --ör cp -- "$SOURCE" "$TARGET".
pts

4
@pipe Space (çok) küçük bir avantajdır, ancak dekompresyon hızı ile daha fazla ilgileniyorum. FreeBSD zpool-features manpage'den: "Tipik olarak, lz4 sıkıştırması sıkıştırılabilir verilerde yaklaşık% 50, sıkıştırılamaz verilerde lzjb'den% 200 daha hızlıdır. Ayrıca, dekompresyonda yaklaşık% 80 daha hızlıdır ve yaklaşık% 10 daha iyi sıkıştırma oranı sağlar. "
rowan194

@pts Ben temel kabuk programlama kurallarına (değişkenler etrafında çift tırnak veya kullanarak --) " trickier" itaat demem . Örneğin, SQL enjeksiyonundan kaçınmak kadar önemlidir.
glglgl

Yanıtlar:


14

Verileri (tam veya kısmi) yeniden kopyalamanız veya zfs'nin verileri yeni bir havuza veya ZFS dosya sistemine göndermesi / almanız gerekir.

Başka seçenek yok.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.