Mam pulę, która została utworzona w 2011 roku, przy użyciu lzjb compression
i dopiero kilka lat później aktualizacja pozwoliła mi ustawić kompresję na lz4
. Szacuję, że co najmniej 20% zawartości (według miejsca) w tablicy zostało utworzone przed 2013 rokiem, co oznacza, że nadal jest ona kompresowana przy użyciu lzjb
.
Mogę wymyślić kilka opcji, aby to naprawić i odzyskać (trochę) miejsca:
Utwórz kopię zapasową i przywróć do nowej puli. Niezbyt praktyczne, ponieważ nie mam wystarczającej ilości nadmiarowego miejsca do przechowywania kopii tymczasowej. Przywracanie wymagałoby również, aby pula była offline przez kilka godzin.
Napisz skrypt, aby ponownie skopiować dowolny plik ze znacznikiem czasu starszym niż 2013. Potencjalnie ryzykowny, szczególnie jeśli zadławi się spacjami lub innymi znakami specjalnymi i skończy się mangowaniem oryginalnej nazwy.
Czy jest jakiś sposób, aby ZFS ponownie skompresował jakiekolwiek starsze bloki przy użyciu bieżącego algorytmu kompresji? Coś jak peeling, ale leczący kompresję.
Powiązane pytanie: czy jest jakiś sposób, aby zobaczyć użycie każdego rodzaju algorytmu kompresji? zdb pokazuje tylko ogólne statystyki kompresji, zamiast rozkładać je na poszczególne algorytmy.
export LC_ALL=C
na początku skryptu, a wszystkie znaki specjalne spoza ASCII w nazwach plików pozostaną nienaruszone. Utrzymywanie nienaruszonych białych znaków i myślników jest trudniejsze, użyj podwójnych cudzysłowów i--
, npcp -- "$SOURCE" "$TARGET"
.--
) „trudniejszym”. Jest to na przykład tak ważne, jak unikanie wstrzykiwania SQL.Odpowiedzi:
Musisz skopiować dane (pełne lub częściowe) lub ZFS wysyła / odbiera dane do nowej puli lub systemu plików ZFS.
Nie ma żadnych innych opcji.
źródło