Ich habe ein Laufwerk (SD-Karte) mit einigen ext4-Partitionen, aber auch nicht zugewiesenem Speicherplatz. Das fstrim
Dienstprogramm kann nur innerhalb eines Dateisystems arbeiten. Gibt es ein anderes Dienstprogramm, das den nicht zugewiesenen Speicherplatz TRIMMEN kann (oder das einen explizit angegebenen Bereich TRIMMEN kann), bevor ich das Rad neu erfinde und eines schreibe?
Ich kann überprüfen, ob der Controller derzeit nicht weiß, dass der größte Teil des nicht zugewiesenen Speicherplatzes auf dem Gerät frei ist , da ich festgestellt habe, dass auf dieser bestimmten Karte in den zugeschnittenen Speicherplatz Nullen zurückgegeben werden, aber ein Scan des Geräts zeigt viele Mülldaten übrig.
Bearbeiten: Ich habe ein Problem mit hdparm
. Im folgenden Beispiel wird der erste Sektor verworfen, aber unabhängig vom angegebenen Bereich werden dieselben Ergebnisse angezeigt. fstrim
hat keine Probleme auf dem Gerät:
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
Ich recherchiere weiter, aber hat jemand einen Einblick?
blkdiscard
scheint aber in meinen Standardpaket-Repositorys nicht verfügbar zu sein (Ubuntu 12.04 scheint in nicht vorhanden zu sein util-linux
).
hdparm
aus irgendeinem Grund nie für mich arbeiten, aber ich habe mir die Util-Linux-Quelle von github.com/karelzak/util-linux/tree/stable/v2.23 geholt , sie gebaut ( ./autogen.sh ; ./configure ; make blkdiscard
) und sie funktioniert großartig. Immer noch verwirrt hdparm
, blkdiscard
macht aber genau das, was ich will. Bonus: Es ist nicht erforderlich, zuerst ein temporäres Dateisystem zu erstellen. Sie können sfdisk -l
den Abstand zwischen Partitionen ermitteln und blkdiscard
zuschneiden.
blkdiscard
mit Offset- / Längenoptionen arbeiten konnte. Die von mir vorgeschlagenen temporären Partitionen sind also nicht einmal notwendig. Nett!
blkdiscard
diese verwenden, um das gesamte Gerät zu beschneiden.