J'ai un lecteur (carte SD) avec quelques partitions ext4 mais aussi de l'espace non alloué. L' fstrimutilitaire ne peut fonctionner que dans un système de fichiers. Avant de réinventer la roue et d'en écrire une, existe-t-il un autre utilitaire qui peut TRIM l'espace non alloué (ou qui peut TRIM une plage explicitement spécifiée)?
Je peux vérifier que la majorité de l'espace non alloué sur le périphérique n'est pas actuellement connue comme étant libre par le contrôleur, car j'ai observé que, sur cette carte particulière, lit à l'espace coupé des retours de 0, mais une analyse de l'appareil montre beaucoup de données sur les ordures restantes.
Edit: J'ai un problème avec hdparm. L'exemple ci-dessous élimine le premier secteur, mais je vois les mêmes résultats quelle que soit la plage que je spécifie. fstrimn'a aucun problème sur l'appareil:
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
J'enquête plus, mais quelqu'un a-t-il une idée?
blkdiscardne semble pas être disponible dans mes référentiels de packages standard (Ubuntu 12.04, ne semble pas être présent dans util-linux).
hdparmtravailler pour moi pour une raison quelconque, mais j'ai récupéré la source util-linux de github.com/karelzak/util-linux/tree/stable/v2.23 , je l'ai construite ( ./autogen.sh ; ./configure ; make blkdiscard) et ça marche très bien. Toujours mystifié hdparmmais blkdiscardfait exactement ce que je veux. Bonus: il n'est pas nécessaire de créer un système de fichiers temporaire en premier, vous pouvez l'utiliser sfdisk -lpour déterminer l'espace entre les partitions et le blkdiscardcouper.
blkdiscardpouvoir travailler avec des options de décalage / longueur. Les partitions temporaires que j'ai suggérées ne sont donc même pas nécessaires. Agréable!
blkdiscardsur celles-ci un découpage de l'ensemble du périphérique.