J'ai un lecteur (carte SD) avec quelques partitions ext4 mais aussi de l'espace non alloué. L' fstrim
utilitaire 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. fstrim
n'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?
blkdiscard
ne semble pas être disponible dans mes référentiels de packages standard (Ubuntu 12.04, ne semble pas être présent dans util-linux
).
hdparm
travailler 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é hdparm
mais blkdiscard
fait 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 -l
pour déterminer l'espace entre les partitions et le blkdiscard
couper.
blkdiscard
pouvoir 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!
blkdiscard
sur celles-ci un découpage de l'ensemble du périphérique.