FALLOCATE(1)

NAZWA
fallocate - przydziela miejsce plikowi lub zwalnia miejsce pliku

SKŁADNIA

fallocate [-c|-p|-z|-w] [-o przesunięcie] -l długość [-n] nazwa-pliku

fallocate -d [-o przesunięcie] [-l długość] nazwa-pliku

fallocate -r [-o przesunięcie] nazwa-pliku

fallocate -x [-o przesunięcie] -l długość nazwa-pliku

OPIS

fallocate dłuży do konfiguracji przydziału przestrzeni dysku plikowi, tj. do jej zwolnienia lub przydzielenia. W przypadku systemów plików obsługujących wywołanie systemowe fallocate(2), przydział jest szybki i polega na przydzieleniu bloków i oznaczeniu ich jako niezainicjowane, zatem nie występuje wejście/wyjście do bloków danych. Jest to znacznie szybsze, niż tworzenie pliku wypełniając go zerami.

fallocate zwraca status zakończenia równy 0 w przypadku powodzenia i 1 przy porażce.

OPCJE

Po argumentach rozmiar i przesunięcie mogą występować przyrostki binarne (2^N): KiB (=1024), MiB (=1024*1024) i tak dalej dla GiB, TiB, PiB, EiB, ZiB oraz YiB (część "iB" jest opcjonalna, na przykład "K" ma to samo znaczenie, co "KiB") lub dziesiętne (10^N): KB (=1000), MB (=1000*1000) i podobnie dla GB, TB, PB, EB, ZB oraz YB.

Opcje --collapse-range, --dig-holes, --report-holes, --punch-hole, --zero-range, --write-zeroes i --posix wzajemnie się wykluczają.

-c, --collapse-range
    Usuwa zakres bajtów z pliku, bez pozostawiania dziury. Zakres bajtów do usunięcia rozpoczyna się na przesunięciu i kontynuuje się przez długość bajtów. Po ukończeniu operacji, zawartość pliku zaczynająca się w położeniu przesunięcie+długość zostanie dodana w położeniu przesunięcie, a plik stanie się o długość bajtów mniejszy. W przypadku tej operacji nie można użyć opcji --keep-size.

    Dostępne od Linuksa 3.15 w systemach plików ext4 (tylko w przypadku plików z ekstentami) i XFS.

    System plików może narzucić ograniczenia w ziarnistości operacji, aby zapewnić wydajną implementację. Zwykle przesunięcie i długość muszą być wielokrotnościami rozmiaru bloków logicznych systemu plików, która zależy od konfiguracji i typu systemu plików. Jeśli system plików posiada takie wymaganie, operacja zawiedzie z błędem EINVAL w przypadku jego naruszenia.

-d, --dig-holes
    Wykrywa ciągi zer i tworzy z nich dziury. W ten sposób plik stanie się rzadki, bez zajmowania dodatkowej przestrzeni dysku. Minimalny rozmiar dziury zależy od rozmiaru bloku wejścia/wyjścia systemu plików (zwykle 4096 bajtów). Przy korzystaniu z tej opcji dorozumiane jest --keep-size. Jeśli nie poda się zakresu za pomocą opcji --offset i --length, to przeanalizowany pod kątem dziur zostanie cały plik.

    Można myśleć o tej opcji jako o wykonaniu polecenia "cp --sparse", a następnie zmianie nazwy pliku docelowego na pierwotną, bez konieczności zajmowania dodatkowej przestrzeni dysku.

    Listę obsługiwanych systemów plików opisano przy opcji --punch-hole.

-r, --report-holes
    Skanuje plik i zwraca rozłożenie dziur, nie modyfikując go. Pokazywane są dwa rodzaje dziur: plikowe - bloki, których system plików nie przydzielił (zgłaszane przez SEEK_HOLE); danych - przedziały wewnątrz pliku, które są logicznie wypełnione bajtami zerowymi, ale wciąż zajmują miejsce na dysku.

    W trybie szczegółowym (verbose) dla każdej dziury wypisywane jest przesunięcie, koniec i rozmiar w bajtach, po którym następuje domyślne podsumowanie pokazujące całkowity rozmiar i procent pliku, jaki zajmują dziury każdego typu. Jeśli nie poda się przesunięcia opcją --offset, skanowany jest cały plik.

    Opcja dokonująca wyłącznie odczytu, może posłużyć do oszacowania jak dużo miejsca można odzyskać opcją --dig-holes.

    Listę obsługiwanych systemów plików opisano przy opcji --punch-hole.

-i, --insert-range
    Umieszcza dziurę o długości bajtów poczynając od przesunięcia, przesuwając istniejące dane.

    Supported for XFS (since Linux 4.1) and ext4 (since Linux 4.2).

-l, --length długość
    Określa długość zakresu, w bajtach.

-n, --keep-size
    Nie modyfikuje pozornej długości pliku. W ten sposób mogą zostać przydzielone bloki poza końcem pliku, które można usunąć, przycinając go.

-o, --offset przesunięcie
    Określa początkowe przesunięcie zakresu, w bajtach.

-p, --punch-hole
    Zwalnia przestrzeń (tj. tworzy dziurę) w zakresie bajtów poczynając od przesunięcia, kontynuując przez długość bajtów. W podanym zakresie, częściowe bloki systemu plików są zerowane, a całe bloki systemu plików są usuwane z pliku. Po pomyślnym wywołaniu, kolejne odczyty z tego zakresu zwrócą zera. Opcji nie można łączyć z opcją --zero-range. Przy korzystaniu z tej opcji dorozumiane jest --keep-size.

    Obsługiwane w systemach plików XFS (od Linuksa 2.6.38), ext4 (od Linuksa 3.0), Btrfs (od Linuksa 3.7), tmpfs (od Linuksa 3.5) oraz gfs2 (od Linuksa 4.16).

-v, --verbose
    Włącza tryb szczegółowy.

-w, --write-zeroes
    Zeruje przestrzeń w zakresie bajtów poczynając od przesunięcia i kontynuując przez długość bajtów. W podanym zakresie zapisywane bloki są wstępnie przydzielane w miejscach, w którym w pliku występują dziury. Po pomyślnym wywołaniu, kolejne odczyty z tego zakresu zwrócą zera, a kolejne zapisy do tego zakresu nie wymagają wtórnych zmian w metadanych opisujących mapowanie pliku.

    Zerowanie jest dokonywane na poziomie systemu plików. System plików może korzystać z poleceń zerowania przyspieszanych sprzętowo albo może dokonywać zwykłego zapisu. Zachowanie zależy od sposobu zaprojektowania systemu plików i dostępnego sprzętu.

    W przypadku operacji write-zeroes nie można podać opcji --keep-size, ponieważ nie można przydzielać zapisywanych bloków poza rozmiar i-węzła.

-x, --posix
    Włącza tryb działania POSIX. W tym trybie operacja przydziału zawsze jest kończona, lecz może zająć dłużej, jeśli szybkie przydzielenie nie jest obsługiwane przez dany system plików.

-z, --zero-range
    Zeruje przestrzeń w zakresie bajtów poczynając od przesunięcia i kontynuując przez długość bajtów. W podanym zakresie bloki są przydzielane w miejscach, w którym w pliku występują dziury. Po pomyślnym wywołaniu, kolejne odczyty z tego zakresu zwrócą zera.

    Zerowanie w systemie plików próbuje się dokonać przez konwersję zakresu do niezapisanych ekstentów. Takie podejście oznacza, że podany zakres nie zostanie fizycznie wyzerowany na urządzeniu (z wyjątkiem częściowych bloków przy jego granicach), a wejście/wyjście jest w takim przypadku wymagane tylko do aktualizacji metadanych.

    Aby zapobiec modyfikacji długości pliku można podać opcję --keep-size.

    Dostępne od Linuksa 3.14 w systemach plików ext4 (tylko w przypadku plików z ekstentami) i XFS.

-h, --help
    Wyświetla ten tekst i wychodzi.

-V, --version
    Wyświetla wersję i wychodzi.

AUTORZY

ZOBACZ TAKŻE

truncate(1), fallocate(2), posix_fallocate(3)

ZGŁASZANIE BŁĘDÓW

Problemy należy zgłaszać w

DOSTĘPNOŚĆ

Polecenie fallocate jest częścią pakietu util-linux, który można pobrać ze strony