Включение TRIM на (внешнем) SSD: различия между версиями

Материал из ALT Linux Wiki
Строка 13: Строка 13:
TRIM был придуман для решения этой проблемы. TRIM — это имя команды, которую операционная система может отправить, чтобы сообщить SSD, какие блоки в файловой системе свободны.
TRIM был придуман для решения этой проблемы. TRIM — это имя команды, которую операционная система может отправить, чтобы сообщить SSD, какие блоки в файловой системе свободны.
SSD использует эту информацию для внутренней дефрагментации блоков и сохранения свободных страниц для быстрой и эффективной записи.
SSD использует эту информацию для внутренней дефрагментации блоков и сохранения свободных страниц для быстрой и эффективной записи.
{| class="wikitable"
|+  Поддержка ТРИМ файловыми системами  [https://wiki.archlinux.org/title/Solid_state_drive_(Русский)#Использование Источник]
|-
! Файллвая система !! Опция discard !! Поддержка fstrim !!  Замечания
|-
| ext4 || Yes || Yes || "discard, nodiscard(*)" [https://docs.kernel.org/admin-guide/ext4.html?highlight=discard,%20nodiscard(*)#options]
|-
| ext3 || Yes || Yes ||
|-
| Btfs || Yes || Yes ||
|-
| F2F2FS || Yes || Yes ||
|-
| JFS || Yes || Yes || [https://www.phoronix.com/news/MTE5ODY]
|-
| XFS || Yes || Yes || [https://xfs.org/index.php/FITRIM/discard]
|-
| NILFS2 || Yes || Yes || [https://en.wikipedia.org/wiki/NILFS]
|-
| NTFS-3G || No || Yes || начиная с версии 2015.3.14 [https://www.mail-archive.com/ntfs-3g-devel@lists.sourceforge.net/msg01093.html]
|-
| VFAT || Yes || Yes || fstrim поддерживается начиная с ядра 4.19 [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f663b5b38fffeb31841f8bfaf0ef87a445b0ffee]
|-
| ExFAT || Yes || Yes ||  fstrim поддерживается начиная с ядра 5.13,  [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=654762df2ec7d61b05acc788afbffaba52d658fe]
|}
{{Note|Пользователи должны быть уверены, что их SSD поддерживает TRIM, прежде чем пытаться использовать его. В противном случае возможна потеря данных}}


Классический способ включения TRIM в Linux , это прописать в /etc/fstab опцию discard, например так (если корень находится на SSD диске):
Классический способ включения TRIM в Linux , это прописать в /etc/fstab опцию discard, например так (если корень находится на SSD диске):

Версия от 15:17, 15 сентября 2022

Введение

Статья является адаптацией к реалиям ALT Linux статьи Включение TRIM на внешнем SSD на Raspberry Pi (eng)

Теория взята из Как правильно активировать TRIM для вашего SSD в Linux  (eng)
В отличие от жестких дисков (HDD), флэш-память NAND, которая лежит в основе SSD дисков, не может перезаписывать существующие данные. Это означает, что вы должны сначала удалить старые данные, прежде чем записывать новые. Флэш-память разделена на блоки, которые далее делятся на страницы. Минимальная единица записи — это страница, а наименьшая единица стирания — блок.
Данные можно записывать прямо на пустую страницу, но стирать можно только целые блоки. Поэтому, для того, чтобы освободить пространство, занятое удалёнными данными, все имеющиеся данные из одного блока должны быть сначала скопированы и записаны на пустые страницы нового блока. Только после этого  данные в исходном блоке могут быть окончательно стерты, что делает блок готовым для записи новых данных.
Проблема в том, что со временем возникнет "куча" не полностью занятых страниц и быстродействие диска сильно упадёт. Это связано с тем, что при удалении файла операционная система просто помечает данные блоки как свободные, но не сообщает об этом контроллеру диска. И вне зависимости от оставшегося места, контроллер диска не сможет найти куда записать новые данные. Для решения этой проблемы и используется TRIM

Что такое ТРИМ?

TRIM был придуман для решения этой проблемы. TRIM — это имя команды, которую операционная система может отправить, чтобы сообщить SSD, какие блоки в файловой системе свободны. SSD использует эту информацию для внутренней дефрагментации блоков и сохранения свободных страниц для быстрой и эффективной записи.

Поддержка ТРИМ файловыми системами Источник
Файллвая система Опция discard Поддержка fstrim Замечания
ext4 Yes Yes "discard, nodiscard(*)" [1]
ext3 Yes Yes
Btfs Yes Yes
F2F2FS Yes Yes
JFS Yes Yes [2]
XFS Yes Yes [3]
NILFS2 Yes Yes [4]
NTFS-3G No Yes начиная с версии 2015.3.14 [5]
VFAT Yes Yes fstrim поддерживается начиная с ядра 4.19 [6]
ExFAT Yes Yes fstrim поддерживается начиная с ядра 5.13, [7]


Примечание: Пользователи должны быть уверены, что их SSD поддерживает TRIM, прежде чем пытаться использовать его. В противном случае возможна потеря данных


Классический способ включения TRIM в Linux , это прописать в /etc/fstab опцию discard, например так (если корень находится на SSD диске):

UUID="6ff0461b-4796-4s0f-a8c0-1fs5f884a593    /  ext4    discard,noatime 1  1
Примечание: Определение опции монтирования discard в /etc/fstab не работает с разделом XFS на /. Опция должна быть установлена с помощью параметра ядра rootflags


rootflags=discard

В файловой системе ext4 флаг discard также может быть установлен как опция монтирования по умолчанию с помощью tune2fs (например):


# tune2fs -o discard /dev/sda1
Использование опций монтирования по умолчанию вместо записи в /etc/fstab особенно полезно для внешних дисков, поскольку такой раздел будет монтироваться с опциями по умолчанию и на других машинах. Таким образом, нет необходимости редактировать /etc/fstab на каждой машине.

Поддерживает ли мой SSD TRIM

Для проверки, поддерживает-ли ваш SSD диск TRIM, надо выполнить команду:
# fstrim  -v путь_до_точки_монтирования_раздела

Например, если у вас раздел c SSD диска смонтирован в /mnt/arhiv. То вы при поддерживаемом TRIM вы увидите

fstrim -v /mnt/arhiv/
/media/arhiv/: 0 B (0 bytes) trimmed

Если диск не поддерживает TRIM, то вы увидите что-то подобное:

fstrim -v /mnt/arhiv/
mnt/arhiv: the discard operation is not supported


Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Ссылки :

  1. [8]
  2. Включение TRIM на внешнем SSD на Raspberry Pi (eng)
  3. Как правильно активировать TRIM для вашего SSD в Linux (eng)