У меня есть диск (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
их, чтобы обрезать все устройство.