fstrim выравнивает более половины размера раздела, даже если раздел монтируется с отбрасыванием

Когда я установил свой SSD, я просто смонтировал его и не потел. Однако сегодня я читал о плюсах и минусах использования fstrim вместо этого и решил запустить программу, чтобы получить представление о том, сколько времени это займет (все еще с моими разделами, установленными с discard ). Команда заняла несколько минут на обоих моих корневых и домашних разделах. Для моего домашнего раздела я использовал -v и получил следующее:

 $ sudo fstrim -v /home /home: 137494052864 bytes were trimmed 

Это больше, чем количество свободного места на разделе!

 $ df -h /home Filesystem Size Used Avail Use% Mounted on /dev/sda2 206G 78G 118G 40% /home 

Последующие пробеги заканчиваются менее чем за секунду, например:

 $ sudo fstrim -v /home /home: 0 bytes were trimmed 

Разумеется, если бы у меня всегда был раздел, монтированный с discard , fstrim не должен обрезать большое количество данных? Опция discard определенно включена, вот соответствующие строки fstab :

 UUID=xxxxxxxx... / ext4 noatime,discard,errors=remount-ro 0 1 UUID=xxxxxxxx... /home ext4 noatime,discard,errors=remount-ro 0 2 

И mount выходные линии:

 /dev/disk/by-uuid/xxxxxxxx... on / type ext4 (rw,noatime,discard,errors=remount-ro,stripe=128,data=ordered) /dev/sda2 on /home type ext4 (rw,noatime,discard,errors=remount-ro,stripe=128,data=ordered) 

SSD – это TOSHIBA THNSNS256GMCP. Почему это происходит?

  • SSD-шифрование / dm-crypt
  • SSD: как часто я должен делать fstrim?
  • Обрезка с LVM и dm-crypt
  • Почему fstrim, похоже, не обрезает блоки данных на btrfs (+ ecrypts)?
  • Как отменить / TRIM диапазон в открытом файле?
  • Кэш LVM и TRIM
  • Есть ли TRIM на Samsung 840 Pro с версией прошивки DXM06B0Q?
  • Использование SSD на Qubes OS
  • One Solution collect form web for “fstrim выравнивает более половины размера раздела, даже если раздел монтируется с отбрасыванием”

    Две вещи здесь:

    1. fstrim обрезает все данные, которые нераспределены в файловой системе (ну, не все данные, только блоки данных, которые не выделены, я не думаю, что неиспользуемые части таблицы inode или части не полностью используемых блоков обрезаются), независимо от того, используется ли discard или нет. fstrim не может знать, какой из этих нераспределенных блоков был «обрезан» или еще не был в прошлом, но он (на самом деле ядро, вся работа fstrim выполняется в FITRIM ioctl ), однако отслеживает, какая группа блоков была обрезана и не будет обрезать их снова, если с тех пор не было никакого освобождения в этой группе блоков, если вы не запрашиваете FITRIM с меньшей минимальной длиной (от проверки кода ext4, это может быть другим для других файловых систем), которое объясняет, почему вы получаете 0 при следующем запуске.

      Обратите внимание, что это не вредит обрезке блока, который уже был обрезан. Это просто говорит SSD, что он может делать все, что захочет, с ним (например, стереть его, чтобы он мог быть готов снова использовать что-то еще).

    2. В выводе df «доступное» значение не учитывает пространство, зарезервированное для root , вы заметите, что 206 – 76 – 130G, а не 118G. 12G (около 5%) зарезервированы. См. tunefs -m чтобы изменить, сколько зарезервировано.
    Linux и Unix - лучшая ОС в мире.