Ho un disco (scheda SD) con alcune partizioni ext4 ma anche uno spazio non allocato. L' fstrim
utilità 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. fstrim
non 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?
blkdiscard
non sembra essere disponibile nei miei repository di pacchetti standard (Ubuntu 12.04, non sembra essere presente in util-linux
).
hdparm
lavorare 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 hdparm
ma blkdiscard
fa esattamente quello che voglio. Bonus: non è necessario creare prima un filesystem temporaneo, puoi usarlo sfdisk -l
per capire lo spazio tra le partizioni e blkdiscard
tagliarlo.
blkdiscard
poter lavorare con le opzioni offset / lunghezza. Quindi le partizioni temporanee che ho suggerito non sono nemmeno necessarie. Bello!
blkdiscard
per tagliare l'intero dispositivo.