Trim¶
Поиск устройств, поддерживающих discard¶
grep -lwv 0 /sys/block/*/queue/discard_max_bytes | cut -d / -f4
Поиск устройств, поддерживающих discard через lsblk¶
lsblk -o NAME,TYPE,FSTYPE,DISC-MAX
Для устройств с поддержкой discards значение DISC-MAX должно отличаться от ноля.
Проверка что SSD диск поддерживает TRIM¶
hdparm -I /dev/sda
выводвывод
/dev/sdc:
ATA device, with non-removable media
Model Number: OCZ-AGILITY3
Serial Number: OCZ-500DYX5125F39XRF
Firmware Revision: 2.25
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Used: unknown (minor revision code 0x0110)
Supported: 8 7 6 5
Likely used: 8
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 234441648
LBA48 user addressable sectors: 234441648
Logical Sector size: 512 bytes
Physical Sector size: 512 bytes
Logical Sector-0 offset: 0 bytes
device size with M = 1024*1024: 114473 MBytes
device size with M = 1000*1000: 120034 MBytes (120 GB)
cache/buffer size = unknown
Nominal Media Rotation Rate: Solid State Device
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = 16
Advanced power management level: 254
Recommended acoustic management value: 0, current value: 254
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=120ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
* Advanced Power Management feature set
Power-Up In Standby feature set
* SET_FEATURES required to spinup after power up
* 48-bit Address feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
* General Purpose Logging feature set
* WRITE_{DMA|MULTIPLE}_FUA_EXT
* 64-bit World wide name
* IDLE_IMMEDIATE with UNLOAD
Write-Read-Verify feature set
* {READ,WRITE}_DMA_EXT_GPL commands
* Segmented DOWNLOAD_MICROCODE
* Gen1 signaling speed (1.5Gb/s)
* Gen2 signaling speed (3.0Gb/s)
* Gen3 signaling speed (6.0Gb/s)
* Native Command Queueing (NCQ)
* Host-initiated interface power management
* Phy event counters
* Device automatic Partial to Slumber transitions
* READ_LOG_DMA_EXT equivalent to READ_LOG_EXT
* DMA Setup Auto-Activate optimization
Device-initiated interface power management
* Software settings preservation
* SMART Command Transport (SCT) feature set
* SCT Data Tables (AC5)
* SET MAX SETPASSWORD/UNLOCK DMA commands
* Data Set Management TRIM supported (limit 1 block)
* Deterministic read data after TRIM
Security:
Master password revision code = 65534
supported
not enabled
not locked
not frozen
not expired: security count
not supported: enhanced erase
2min for SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5e83a97e2d4e3c1f
NAA : 5
IEEE OUI : e83a97
Unique ID : e2d4e3c1f
Checksum: correct
* Data Set Management TRIM supported (limit 1 block)
* Deterministic read data after TRIM
Начальная поддержка discard появилась в ядре 2.6.28
Поддержка discard для swap появилась в ядре 2.6.29
Поддержка discard для btrfs появилась в ядре 2.6.32
Поддержка discard в libata (SATA driver library) появилась в ядре 2.6.33
Поддержка discard для ext4 появилась в ядре 2.6.33
Поддержка discard для vfat появилась в ядре 2.6.33
Поддержка discard для device-mapper (delay, linear, mpath, stripe) появилась в ядре 2.6.36
Поддержка discard для ext4(без журнала) появилась в ядре 2.6.36
Поддержка secure discard (1) появилась в ядре 2.6.36
Поддержка batched discard (2) для ext4 появилась в ядре 2.6.37
Поддержка batched discard (2) для ext3 появилась в ядре 2.6.38
Поддержка discard для dm-mirror появилась в ядре 2.6.38
Поддержка batched discard (2) для xfs появилась в ядре 2.6.38
Поддержка discard на уровне блочного устройства появилась в ядре 3.0
Поддержка discard для xfs появилась в ядре 3.0
Поддержка discard для loop устройств появилась в ядре 3.2
Поддержка discard для dm-thin устройств появилась в ядре 3.4
Поддержка подключения discard на лету для ext4(без журнала) появилась в ядре 3.7
Поддержка async discard для swap появилась в ядре 3.12
Поддержка discard для dm-raid (1,10,4,5,6) появилась в ядре 3.18
Поддержка batched discard (2) для f2fs появилась в ядре 3.18
Ускорение discard для dm-cache и dm-thin появилось в ядре 3.19
Источники:
https://clusterbuffer.wordpress.com/2011/10/02/how-do-you-know-trim-is-working-with-your-ssd-in-your-system/
http://kernelnewbies.org/LinuxVersions
(1) - фича диска, позволяющая гарантированно удалить все копии discard блока (реализуется прошивкой диска)
(2) - discard выполняется одним ioctl() вызовом возвращая размер высвобожденного места.
LVM 2.02.85
Утилита fstrim
util-linux 2.19
Утилита blkdiscard
util-linux 2.23