fstrim обрезает все свободное место после перезагрузки

fstrim обрезает все свободное место после перезагрузки

Я только что обновился до SSD. Производительность отличная.

Однако после каждой перезагрузки, когда я делаю fstrim для разделов, он обрезает все свободное пространство. И, как я понимаю, обрезка записывает все свободное пространство, которое доступно. Не уверен, относится ли это к делу, но я использую полное шифрование диска (включая /boot).

Поскольку срок службы SSD-накопителя может существенно сократиться при частой записи, меня беспокоит такая обрезка.

Вот журналы, которые я веду по каждой обрезке:

Jul 30 13:46:00 /: 478.6 MiB (501862400 bytes) trimmed
Jul 31 13:22:26 /: 347.8 GiB (373409230848 bytes) trimmed
Jul 31 13:25:32 /: 194.3 MiB (203710464 bytes) trimmed
Jul 31 13:25:40 /: 19.2 MiB (20111360 bytes) trimmed
Aug 02 14:08:06 /: 345.9 GiB (371398463488 bytes) trimmed
Aug 02 22:21:36 /: 56.9 GiB (61047971840 bytes) trimmed
Aug 02 22:31:27 /: 347.7 MiB (364560384 bytes) trimmed
Aug 02 22:31:43 /: 127 MiB (133144576 bytes) trimmed
Aug 02 22:33:01 /: 243 MiB (254767104 bytes) trimmed
Aug 03 06:58:47 /: 1 GiB (1080602624 bytes) trimmed
Aug 03 10:00:02 /: 2.4 GiB (2526216192 bytes) trimmed
Aug 03 11:42:14 /: 341 GiB (366146318336 bytes) trimmed
Aug 03 16:00:01 /: 0 B (0 bytes) trimmed
Aug 03 16:33:53 /: 0 B (0 bytes) trimmed
Aug 03 16:48:43 /: 341 GiB (366074740736 bytes) trimmed
Aug 03 16:50:13 /: 1.2 GiB (1297809408 bytes) trimmed
Aug 03 16:53:31 /: 341 GiB (366074695680 bytes) trimmed
Aug 03 17:07:55 /: 340.9 GiB (366066126848 bytes) trimmed
Aug 05 22:00:13 /: 341 GiB (366073069568 bytes) trimmed
Aug 05 22:07:22 /: 1.2 GiB (1261793280 bytes) trimmed
Aug 06 07:41:50 /: 1.4 GiB (1522991104 bytes) trimmed
Aug 06 10:00:11 /: 341 GiB (366068740096 bytes) trimmed

Как вы можете видеть, обрезка после включения компьютера составляет около 340 ГиБ, в то время как обрезка при обычном использовании составляет всего около 1 ГиБ.

Стоит ли мне беспокоиться, что это изнашивает мой SSD? Не стоит ли мне обрезать?

решение1

Существует заблуждение. Обрезка не вызывает дополнительных записей, онауменьшаетсяих.

SSD, или, скорее, его NAND, имеет два понятия «блоков», один из которых на самом деле называетсяблокировать(обычно от 128 до 512 КБ), а другой, который гораздо ближе к тому, что вы имеете в виду, когда говорите о «блоке» в терминах вашей файловой системы, называетсястраница(обычно что-то около 4k). Вы можетеписатьпо одной странице за раз, как на старом жестком диске, никаких проблем. Все работает так, как и ожидалось.

Однако вы не можетеперезаписатьстраницу, они однократно пишутся. После этого вы можете толькостеретьэто, делая его снова однократно записываемым. Это то, что учитывается в сроке службы NAND. Проблема в том, что... на самом деле выне могуСтереть страницы. Вы можете стереть толькоблоки(т.е. кластеры по 32–64 страницы за раз).

Это означает, что при перезаписи страницы («блока» в терминах файловой системы) контроллер должен:

  1. читать в полном блоке
  2. если существует «чистый» или уже стертый блок, используйте его
  3. в противном случаепрозрачныйтот же блок
  4. записать весь блок, изменив соответствующим образом содержимое перезаписанной страницы
  5. сделать какую-то неуказанную «магию», чтобы циклы стирания были равномерно распределены по всем блокам, предотвращая преждевременную смерть

Это несколько упрощенно, но принцип такой.умныйКонтроллер может делать что-то немного другое (например, логически переназначать страницы, заполнять все страницы до тех пор, пока не останется ни одной, и каким-то образом «запоминать», какие из них хорошие, а какие устаревшие и т. д. и т. п.), но в принципе рабочий процесс такой, как описано выше.

Это проблема, поскольку небольшие записи — обычное дело, поэтому вскоре каждый блок на вашем диске будет записан хотя бы один раз. Что же теперь может сделать контроллер? Немного. Он на самом деле не знает, что делает файловая система или чего от нее ожидают, поэтому ему приходится работать на основе самых консервативных предположений. То есть, все и вся, что было когда-то записано, должно быть сохранено.

TRIM решает эту проблему. Он сообщает контроллеру, что такой-то большой диапазонне используется, поэтому контроллер может также сбросить его. Он ничего не записывает. Если вообще стирает, то только блоки (хотя только один раз, а не каждый раз).
Поскольку вы сообщили контроллеру, что не используете эти данные, он может рискнуть и сбросить их без вреда. Теперь внезапно снова доступны записываемые блоки без необходимости копирования данных и многократного стирания блоков. Что не только делает записиБыстреено также уменьшает количество стираний, которые необходимо выполнить.

решение2

fstrimкажется, освобождаетвсесвободное пространство раздела, а не только пространство, освобожденное с момента последнего вызова fstrim. Смотрите такжеэта публикация.

Связанный контент