У меня есть диск (SD-карта) с несколькими разделами ext4, но также есть некоторое нераспределенное пространство. fstrimУтилита может работать только в пределах файловой системы. Прежде чем я изобрету колесо и напишу один, есть ли другая утилита, которая может TRIM нераспределенное пространство (или которая может TRIM явно заданный диапазон)?
Я могу убедиться, что большая часть нераспределенного пространства на устройстве в настоящее время не известна контроллеру как свободная, так как я заметил, что на этой конкретной карте выполняется считывание обрезанных пробелов с возвратами 0, но сканирование устройства показывает осталось много мусорных данных.
Изменить: у меня возникла проблема с использованием hdparm. В приведенном ниже примере отбрасывается первый сектор, но я вижу одинаковые результаты независимо от указанного диапазона. fstrimне имеет проблем на устройстве:
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
Я продолжаю расследование, но есть ли у кого-нибудь понимание?
blkdiscard, кажется, не доступно в моих стандартных репозиториях пакетов (Ubuntu 12.04, кажется, не присутствует в util-linux).
hdparmкакой-то причине мне так и не удалось поработать на меня, но я взял источник util-linux с github.com/karelzak/util-linux/tree/stable/v2.23 , собрал его ( ./autogen.sh ; ./configure ; make blkdiscard), и он отлично работает. Все еще озадачен, hdparmно blkdiscardделает именно то, что я хочу. Бонус: нет необходимости сначала создавать временную файловую систему, вы можете использовать, sfdisk -lчтобы выяснить пространство между разделами и blkdiscardобрезать его.
blkdiscardвозможности работать с опциями смещения / длины. Поэтому временные разделы, которые я предложил, даже не нужны. Ницца!
blkdiscardих, чтобы обрезать все устройство.