Ho un disco (scheda SD) con alcune partizioni ext4 ma anche uno spazio non allocato. L' fstrimutilità può funzionare solo all'interno di un filesystem. Prima di reinventare la ruota e scriverne una, esiste un'altra utility che può TRIM lo spazio non allocato (o che può TRIM un intervallo specificato esplicitamente)?
Posso verificare che la maggior parte dello spazio non allocato sul dispositivo non è attualmente noto per essere libero dal controller, poiché ho osservato che, su questa particolare scheda, legge 0 di ritorno dello spazio ritagliato, ma una scansione del dispositivo mostra molti dati immondizia rimasti.
Modifica: sto riscontrando un problema con hdparm. L'esempio seguente scarta il primo settore, ma sto vedendo gli stessi risultati indipendentemente dall'intervallo specificato. fstrimnon ha problemi sul dispositivo:
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
Sto indagando ulteriormente, ma qualcuno ha qualche idea?
blkdiscardnon sembra essere disponibile nei miei repository di pacchetti standard (Ubuntu 12.04, non sembra essere presente in util-linux).
hdparmlavorare per me per qualche motivo, ma ho preso il sorgente util-linux da github.com/karelzak/util-linux/tree/stable/v2.23 , l'ho costruito ( ./autogen.sh ; ./configure ; make blkdiscard) e funziona alla grande. Ancora sconcertato hdparmma blkdiscardfa esattamente quello che voglio. Bonus: non è necessario creare prima un filesystem temporaneo, puoi usarlo sfdisk -lper capire lo spazio tra le partizioni e blkdiscardtagliarlo.
blkdiscardpoter lavorare con le opzioni offset / lunghezza. Quindi le partizioni temporanee che ho suggerito non sono nemmeno necessarie. Bello!
blkdiscardper tagliare l'intero dispositivo.