Jak wyczyścić nieużywane miejsce zerami? (Proszę o narzędzie do systemu plików btrfs )
Szukam czegoś mądrzejszego niż
cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero
Podobnie jak FSArchiver szuka „zużytej przestrzeni” i ignoruje nieużywaną, ale przeciwną stronę.
Cel: Chciałbym skompresować obrazy partycji, więc wysoce zalecane jest wypełnienie nieużywanego miejsca zerami.
Btw. Dla ext3, ext4: Wyczyść nieużywane miejsce zerami (ext3, ext4) . Tutaj proszę o btrfs
Wyjaśnienie „inteligentniejszego algorytmu”: Jak widzę, że „inteligentniejszy algorytm” prowadzi do zamieszania, tutaj w końcu postanowiłem dodać linię na ten temat. Drogi czytelniku, pomyśl o systemie plików jako o strukturze danych. Dla uproszczenia wyobraźmy sobie samoczynnie równoważącą się czerwono-czarną mapę trzymania drzewa, która jest używana jako klucz asocjacyjny-> tablica wartości, gdzie wartości są liczbami całkowitymi. Celem jest usunięcie wszystkich wartości ujemnych zerami. Algorytm „nie inteligentny” będzie się nad nim powtarzał i doda klucz: pary wartości do nowej mapy (z ewentualną zmianą wartości ujemnej na zero). Inteligentny algorytm po prostu wykryje miejsca, w których przechowywane są wartości ujemne i wyczyści je w miejscu .
źródło
sfill
sugestię ? Wygląda na to, że nie wymaga extX.truncate
i / lubfallocate
Odpowiedzi:
Oto zmodyfikowana i znacznie rozszerzona odpowiedź na moje poprzednie pytanie:
sfill
zsecure-delete
paczki możesz robić co chcesz.W przeciwieństwie do zerofree (który działa tylko z systemami plików ext2, ext3 i ext4), sfill będzie działał z każdym systemem plików.
na przykład
Wygląda na to, że strona główna sfill / secure-delete zniknęła, ale jest spakowana dla Debiana i Ubuntu. prawdopodobnie inne dystrybucje też. jeśli potrzebujesz kodu źródłowego, możesz go znaleźć w archiwach Debiana, jeśli nie możesz go znaleźć nigdzie indziej.
UWAGA: sfill działa tylko na zamontowanym systemie plików. Jeśli wypełniasz zero plików obrazów z systemu hosta, a nie z maszyny wirtualnej, musisz zainstalować obraz fs na hoście. Dokładna metoda różni się w zależności od rodzaju pliku obrazu (np. Qcow2 lub raw).
Montowanie „surowych” obrazów jest łatwe i proste. Wystarczy użyć
kpartx
pliku obrazu, aby utworzyć urządzenie zwrotne, a / dev / mapper / wpisy dla każdej partycji można następnie zamontować osobno.oto częściowy skrypt zmodyfikowany z fragmentu skryptu, którego używam do montowania obrazów dysku twardego freedos z uruchamianiem sieciowym (używanych do aktualizacji bios na komputerach, na których Flashrom nie działa):
UWAGA: zakłada, że każdą partycję na obrazie można zamontować. prawda w moim przypadku użycia (obraz HD Freedos z jedną partycją). nieprawda, jeśli jedną z partycji jest, powiedzmy, przestrzeń wymiany. Wykrywanie takich partycji i używanie dd do zerowania partycji wymiany pozostawia się jako ćwiczenie dla czytelnika :)
Ta metoda lub jej wariant powinien również działać w przypadku woluminów LVM.
Jeśli twoje obrazy to qcow, możesz użyć
qemu-nbd
narzędzia zqemu-utils
pakietu, które przedstawi plik obrazu i jego partycje jako urządzenia blokujące sieć - np. / Dev / nbd0 / dev / ndb0p1 - które mogą być używane w podobny sposób jak / urządzenia deweloperskie / mapujące powyżej.Być może jest to łatwiejsze i mniej kłopotliwe (ale bardziej czasochłonne), aby użyć
qemu-img
do konwersji z Qcow na Raw, użyj powyższej metody dla Raw, a następnie przekonwertować zmodyfikowany surowy obraz z powrotem do skompresowanego qcow2. Prawdopodobnie spowoduje to nieco mniejsze obrazy niż użycie qemu-nbd, ponieważ będziesz kompresował nowy obraz qcow2 podczas jego tworzenia.źródło
Prawidłowym i „inteligentnym” sposobem na zwolnienie wolnego miejsca jest użycie:
Użyj tego w zamontowanym systemie plików.
Należy zauważyć, że nie ma w tym żadnej korzyści bezpieczeństwa. Jeśli chcesz wyczyścić dysk ze względów bezpieczeństwa, wykonaj kopię zapasową plików, wyzeruj cały dysk za pomocą polecenia „niszcz”, a następnie przywróć pliki.
Jednak rozwiązanie działa dobrze, jeśli dysk jest cienkim zapasem w rzadkim systemie plików i chcesz odzyskać nieużywane miejsce.
źródło