3.7.2.1 TRIM
Скачать документ Проверка поддержки TRIM
Включение TRIM с помощью флагов монтирования
Применение TRIM по раписанию cron
Включение TRIM с помощью tune2fs
Настройка TRIM по расписанию с помощью таймера systemd
Когда в операционной системе происходит операция удаления данных с SSD-диска, то физически они не удаляются, а лишь помечаются как «неиспользуемые» в файловой системе. Операция записи новых данных на место «неиспользуемых» предварительно сопровождается уже реальной функцией стирания ранее «удаленных» данных, что приводит к снижению производительности диска.
Чтобы решить эту проблему используется TRIM — команда интерфейса ATA, которая сообщает твердотельному диску, какие «неиспользуемые» блоки данных можно физически удалить с твердотельного устройства (SSD).
Целью очистки памяти является периодическая оптимизация накопителя, чтобы он работал эффективно и сохранял производительность на протяжении всего срока службы. Часто эта операция может выполняться в фоновом режиме или в ручном.
На твердотельном накопителе с включенным TRIM, если вы удалите файл и впоследствии очистите корзину, восстановить удаленные данные уже будет невозможно. В отличие от механических жестких дисков, которые удерживают данные магнитным полем, все, что требуется NAND для полного удаления данных — это команда (trim).
Проверка поддержки TRIM
Проверить поддержку TRIM можно двумя способами.
Способ №1 — с помощью команды lsblk:
lsblk -D NAME DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO sda 0 512B 2G 0 ├─sda1 0 512B 2G 0 ├─sda2 0 512B 2G 0 ├─sda3 0 512B 2G 0 ├─sda4 0 512B 2G 0 └─sda5 0 512B 2G 0 sdb 0 0B 0B 0
Если значения столбцов DISC-GRAN (отбросить гранулярность) и DISC-MAX (отбросить максимальное количество байтов) имеют ненулевые значения, это указывает на поддержку TRIM.
Способ №2 — с помощью команды hdparm:
hdparm -I /dev/sda | grep TRIM
* Data Set Management TRIM supported (limit 8 blocks)
Если в выводе присутствует запись TRIM supported
, значит диск поддерживает TRIM.
Включение операции TRIM в РЕД ОС
Включение TRIM с помощью флагов монтирования
В данном случае операция TRIM будет выполняться каждый раз при монтировании раздела диска. Параметр discard
в /etc/fstab в строке монтирования раздела активирует TRIM:
/dev/sda1 / ext4 defaults,noatime,discard 0 1 /dev/sda2 /home ext4 defaults,noatime,discard 0 2
не используйте флаг discard, если вы периодически выполняете команду fstrim;
если вы используете флаг discard для корневого раздела с файловой системой ext3, раздел будет смонтирован в режиме только-чтение (read_only).
Перед внесением изменений убедитесь, что ваш SSD поддерживает TRIM, иначе вы можете потерять данные!
Применение TRIM по расписанию cron
Данный метод не работает для файловых систем VFAT.
Для использования fstrim раздел диска должен быть смонтирован и указан точкой монтирования. Для периодического выполнения команды можно задействовать планировщик заданий cron, в котором в качестве задания используется команда:
fstrim -v /
Данная команда будет применена к корневому разделу. Для указания, например, домашнего раздела используйте команду:
fstrim -v /home
Подробную информацию по работе с планировщиком cron см. в нашей статье «Crontab».
После настройки планировщика заданий уберите опцию discard
из /etc/fstab, если ранее вы ее добавляли.
Приоритетным способом является использование discard
. Если с ним возникли проблемы или он не подошел, используйте fstrim.
Включение TRIM с помощью tune2fs
В файловой системе EXT4 флаг discard
можно установить с помощью утилиты tune2fs. При данном способе флаг discard
устанавливается в суперблоке ФС, как опция монтирования по умолчанию.
tune2fs -o discard /dev/sdXY
где:
- XY — раздел на диске.
Если на диске используется LVM, то команда для корневого раздела может выглядеть примерно следующим образом:
tune2fs -o discard /dev/mapper/ro_redos-root
Чтобы определить, какой именно раздел применять в команде tune2fs, воспользуйтесь командами «lsblk», «df» или blkid, которые выведут на экран имена разделов диска.
Убедиться в активации trim можно также с помощью tune2fs, при этом команде передается ключ -l:
tune2fs -l /dev/mapper/vg1-lvroot | grep options Default mount options: user_xattr acl discard
Использование параметров монтирования по умолчанию вместо редактирования в /etc/fstab актуально для внешних дисков, поскольку для разделов диска признак применения TRIM будет установлен по умолчанию и не придется на каждом компьютере редактировать /etc/fstab для добавления опции discard
.
При использовании данного способа опция discard
НЕ будет показана командой mount.
Настройка TRIM по расписанию с помощью таймера systemd
В РЕД ОС присутствует systemd-таймер, который предназначен для использования TRIM по расписанию. Активировать таймер можно командой:
systemctl enable --now fstrim.timer
По умолчанию задание fstrim будет выполняться еженедельно, это задание запускает связанную службу fstrim по расписанию. Время выполнения fstrim по умолчанию настроено на каждый понедельник с точностью запуска в 1 час, т.е. с 00:00 по 01:00.
Для установки собственного времени выполнения задания измените время в таймере /usr/lib/systemd/system/fstrim.timer, за это отвечает опция OnCalendar.
Пример изменения таймера на каждый понедельник в 12:00.
nano /usr/lib/systemd/system/fstrim.timer
[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim
ConditionVirtualization=!container
ConditionPathExists=!/etc/initrd-release
[Timer]
OnCalendar=Mon *-*-* 12:00:00
Persistent=true
[Install]
WantedBy=timers.target
Перезапустите таймер для применения внесенных изменений:
systemctl daemon-reload systemctl restart fstrim.timer
В статусе таймера в поле Trigger будет указано запланированное время выполнения задания:
systemctl status fstrim.timer
● fstrim.timer - Discard unused blocks once a week Loaded: loaded (/usr/lib/systemd/system/fstrim.timer; enabled; preset: enabled) Active: active (waiting) since Fri 2024-10-11 11:35:08 MSK; 10s ago Trigger: Mon 2024-10-14 12:09:21 MSK; 3 days left Triggers: ● fstrim.service Docs: man:fstrim
Дата последнего изменения: 11.10.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.