Ich habe ein Laufwerk (SD-Karte) mit einigen ext4-Partitionen, aber auch nicht zugewiesenem Speicherplatz. Das fstrimDienstprogramm 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. fstrimhat 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?
blkdiscardscheint aber in meinen Standardpaket-Repositorys nicht verfügbar zu sein (Ubuntu 12.04 scheint in nicht vorhanden zu sein util-linux).
hdparmaus 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, blkdiscardmacht aber genau das, was ich will. Bonus: Es ist nicht erforderlich, zuerst ein temporäres Dateisystem zu erstellen. Sie können sfdisk -lden Abstand zwischen Partitionen ermitteln und blkdiscardzuschneiden.
blkdiscardmit Offset- / Längenoptionen arbeiten konnte. Die von mir vorgeschlagenen temporären Partitionen sind also nicht einmal notwendig. Nett!
blkdiscarddiese verwenden, um das gesamte Gerät zu beschneiden.