Я настраиваю сервер под управлением Ubuntu Precise и пытаюсь проверить, работает ли SSD TRIM.
fstrim не работает:
~ sudo fstrim -v /
fstrim: /: FITRIM ioctl failed: Operation not supported
Итак, я попробовал wiper.sh в hdparm:
wiper-3.5 sudo ./wiper.sh --verbose --commit /dev/sda1
wiper.sh: Linux SATA SSD TRIM utility, version 3.5, by Mark Lord.
rootdev=/dev/sda1
fsmode2: fsmode=read-write
/: fstype=ext4
freesize = 169502088 KB, reserved = 1695020 KB
Preparing for online TRIM of free space on /dev/sda1 (ext4 mounted read-write at /).
This operation could silently destroy your data. Are you sure (y/N)? y
Creating temporary file (167807068 KB)..
Syncing disks..
Beginning TRIM operations..
get_trimlist=/sbin/hdparm --fibmap WIPER_TMPFILE.11503
/dev/sda:
trimming 3211263 sectors from 64 ranges
succeeded
trimming 3571713 sectors from 64 ranges
succeeded
trimming 3915776 sectors from 64 ranges
succeeded
(...)
trimming 3657913 sectors from 60 ranges
succeeded
Removing temporary file..
Syncing disks..
Done.
Вроде работает, но мне интересно, правда ли это. Есть ли случаи, когда wiper.sh должен работать, а fstrim - нет? Есть ли способ проверить, действительно ли обрезка прошла успешно (кроме как доверять wiper.sh-log)?
Версия ядра: Linux 3.2.0-31-generic # 50-Ubuntu SMP Пт 7 сентября 16:16:45 UTC 2012 x86_64 x86_64 x86_64 GNU / Linux
Какая версия ядра у вас установлена? ФИТРИМ ioctl был добавлен примерно в августе 2010 г., поэтому в старых ядрах этого не будет. Я предполагаю, что wiper.sh использует другой метод обрезки, поэтому он будет работать без ioctl.
fstrim
использует интерфейсы ядра для связи с диском, и если ваше ядро не знает, как отправить TRIM
команда к приводу, fstrim
будет излучать Operation not supported
. (Например, для некоторых дисков требуется TRIM
быть переведенным на UNMAP
или DISCARD
.)
С другой стороны, hdparm
напрямую обращается к вашему устройству хранения без поддержки ядра (по этой причине его всегда нужно запускать root
). В результате он может поддерживать устройства, которые ядро (пока?) Не знает достаточно хорошо для поддержки. В wiper.sh
скрипт - это просто интерфейс для hdparm
так что вам не нужно вручную вычислять и вводить номера секторов.
Я считаю, что если вы используете последнее ядро Linux, то TRIM
должны поддерживаться, если устройство напрямую подключено к системе. Однако ядро может не поддерживать TRIM
для вашего устройства, если оно подключено через USB с использованием SAT через мост UAS / UASP.
Обратите внимание, что в настоящее время вам может потребоваться выполнить TRIM
на жестких дисках тоже, потому что жесткие диски SMR будут иметь лучшую производительность, если можно будет отбросить большие блоки.