Mam dysk (kartę SD) z kilkoma partycjami ext4, ale także trochę nieprzydzielonego miejsca. fstrim
Narzędzie może pracować tylko w systemie plików. Czy zanim jeszcze raz wymyślę koło i napiszę jedno, czy istnieje inne narzędzie, które może PRZYCINAĆ nieprzydzielone miejsce (lub które może PRZYCINAĆ wyraźnie określony zakres)?
Mogę sprawdzić, czy większość nieprzydzielonego miejsca na urządzeniu nie jest obecnie znana jako wolna od kontrolera, ponieważ zauważyłem, że na tej konkretnej karcie odczytuje się skrócone znaki zerowe, ale skan urządzenia pokazuje pozostało dużo śmieci.
Edycja: Mam problem z używaniem hdparm
. Poniższy przykład odrzuca pierwszy sektor, ale widzę te same wyniki niezależnie od określonego zakresu. fstrim
nie ma problemów z urządzeniem:
root@ubuntu:~# hdparm --please-destroy-my-drive --trim-sector-ranges 0:1 --verbose /dev/mmcblk0
/dev/mmcblk0:
trimming 1 sectors from 1 ranges
outgoing cdb: 85 0d 06 00 01 00 01 00 00 00 00 00 00 40 06 00
outgoing_data:
00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ioctl(fd,SG_IO): Invalid argument
FAILED: Invalid argument
Badam dalej, ale czy ktoś ma wgląd w to?
blkdiscard
na nich, która przycina całe urządzenie.blkdiscard
wydaje się , że nie jest dostępne w moich standardowych repozytoriach pakietów (Ubuntu 12.04, nie wydaje się być w nim obecneutil-linux
).hdparm
jakiegoś powodu nigdy nie byłem w stanie pracować dla mnie, ale skorzystałem ze źródła util-linux z github.com/karelzak/util-linux/tree/stable/v2.23 , zbudowałem (./autogen.sh ; ./configure ; make blkdiscard
) i działa świetnie. Nadal się zastanawiam,hdparm
aleblkdiscard
robi dokładnie to, czego chcę. Bonus: Nie musisz najpierw tworzyć tymczasowego systemu plików, możesz go użyć,sfdisk -l
aby obliczyć przestrzeń między partycjami iblkdiscard
ją przyciąć.blkdiscard
pracować z opcjami przesunięcia / długości. Więc tymczasowe partycje, które zasugerowałem, nie są nawet konieczne. Miły!Odpowiedzi:
Jeśli masz wystarczająco najnowszą wersję
util-linux
, zawiera narzędzie,blkdiscard
które jest w stanie PRZYCINAĆ całe urządzenia lub zakresy w urządzeniu za pomocą--offset
i--length
opcji.Uwaga:
blkdiscard
jest niebezpieczny, jeśli pozwolisz TRIM niewłaściwym regionom, twoje dane znikną!Możesz więc dowiedzieć się, które partycjonowane (wolne) regiony tabeli partycji dzielą na partycje, a następnie PRZYCINANIE ich za pomocą tego narzędzia. For
msdos
igpt
partycjeparted
zapewnia wolne regiony takie jak:Dodaj do niego pętlę ...
który drukuje
Sprawdź, czy dane wyjściowe są odpowiednie dla Ciebie, dodaj dodatkowe opcje, jeśli chcesz (szczegółowe?), I na koniec usuń
echo
je, aby zostało faktycznie wykonane, i powinieneś być ustawiony.Drugie polecenie z tego przykładu tak naprawdę się nie udaje, ponieważ długość jest zbyt mała - warto sprawdzić w pętli, zignorować regiony mniejsze niż 1 MB, ponieważ prawdopodobnie nie uda się ich przyciąć.
Jeśli używasz LVM zamiast partycji, możesz utworzyć LV dla niezajętego miejsca i przyciąć, aby:
Jeśli ustawisz
issue_discards = 1
w swoimlvm.conf
, możesz pominąćblkdiscard
połączenie, ponieważ LVM sam wyda TRIMlvremove
.źródło
blkdiscard
dostępnego; możesz pobrać plik util-linux ze strony github.com/karelzak/util-linux/tree/stable/v2.23, a następnie zbudowaćblkdiscard
(uruchomić./autogen.sh ; ./configure ; make blkdiscard
) - zbudowano go czysto (chociaż może być konieczne zainstalowanie niektórych zależności iconfigure
opcji dostrajania ) i jako dopóki go nie zainstalujesz, nie będzie on kolidował z istniejącym plikiem ut-linux.blkdiscard
, ale zauważyłem, że wartości były oparte na przesunięciu, a nie na długości. Możliwe, że wystąpił problemblkdiscard
, jestem w trakcie badania. Zobacz unix.stackexchange.com/questions/98473/…hdparm --trim-sector-ranges
może przyciąć zakres. Strona podręcznika ostrzega przed jego użyciem, więc lepiej upewnij się, że masz odpowiedni zakres i składnię.Myślę, że wysłanie trymu dla wszystkich danych poza partycją byłoby niebezpieczne, ponieważ istnieją tam ukryte dane, takie jak kod programu ładującego lub tabele drugiej partycji. Musisz wiedzieć dokładnie, które obszary poza partycjami są naprawdę nieużywane.
źródło
hdparm
, nieużywane zakresysfdisk
i odpowiednio przyciąć. Wiem, co jest na dysku. Jeśli istnieje schemat partycjonowania, który ukrywa dane w dostępnych, ale nieprzydzielonych obszarach, to zepsułoby podstawową funkcjonalność dowolnego edytora partycji. Zakładam (mam nadzieję), że wszelkie takie plany już dawno zostały porzucone (choć nie znam żadnego z głowy). Wszystkie znane mi schematy przechowują MBR w znanej nieprzydzielonej przestrzeni na początku urządzenia, a VBR / EBR w przydzielonych partycjach. Mogą istnieć stare, niejasne schematy, które są różne. :)hdparm
, zredagowałem swoje pytanie ze szczegółami; zastanawiam się, czy masz jakiś wgląd.