Trim » История » Версия 3
Андрей Волков, 2016-03-16 18:26
| 1 | 1 | Андрей Волков | h1. Trim |
|---|---|---|---|
| 2 | |||
| 3 | 3 | Андрей Волков | h3. Поиск устройств, поддерживающих discard |
| 4 | |||
| 5 | <pre> |
||
| 6 | grep -lwv 0 /sys/block/*/queue/discard_max_bytes | cut -d / -f4 |
||
| 7 | </pre> |
||
| 8 | |||
| 9 | h3. Поиск устройств, поддерживающих discard через lsblk |
||
| 10 | |||
| 11 | <pre> |
||
| 12 | lsblk -o NAME,TYPE,FSTYPE,DISC-MAX |
||
| 13 | </pre> |
||
| 14 | |||
| 15 | Для устройств с поддержкой discards значение DISC-MAX должно отличаться от ноля. |
||
| 16 | |||
| 17 | |||
| 18 | 1 | Андрей Волков | h2. Проверка что SSD диск поддерживает TRIM |
| 19 | |||
| 20 | hdparm -I /dev/sda |
||
| 21 | |||
| 22 | {{collapse(вывод) |
||
| 23 | <pre> |
||
| 24 | /dev/sdc: |
||
| 25 | |||
| 26 | ATA device, with non-removable media |
||
| 27 | Model Number: OCZ-AGILITY3 |
||
| 28 | Serial Number: OCZ-500DYX5125F39XRF |
||
| 29 | Firmware Revision: 2.25 |
||
| 30 | Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0 |
||
| 31 | Standards: |
||
| 32 | Used: unknown (minor revision code 0x0110) |
||
| 33 | Supported: 8 7 6 5 |
||
| 34 | Likely used: 8 |
||
| 35 | Configuration: |
||
| 36 | Logical max current |
||
| 37 | cylinders 16383 16383 |
||
| 38 | heads 16 16 |
||
| 39 | sectors/track 63 63 |
||
| 40 | -- |
||
| 41 | CHS current addressable sectors: 16514064 |
||
| 42 | LBA user addressable sectors: 234441648 |
||
| 43 | LBA48 user addressable sectors: 234441648 |
||
| 44 | Logical Sector size: 512 bytes |
||
| 45 | Physical Sector size: 512 bytes |
||
| 46 | Logical Sector-0 offset: 0 bytes |
||
| 47 | device size with M = 1024*1024: 114473 MBytes |
||
| 48 | device size with M = 1000*1000: 120034 MBytes (120 GB) |
||
| 49 | cache/buffer size = unknown |
||
| 50 | Nominal Media Rotation Rate: Solid State Device |
||
| 51 | Capabilities: |
||
| 52 | LBA, IORDY(can be disabled) |
||
| 53 | Queue depth: 32 |
||
| 54 | Standby timer values: spec'd by Standard, no device specific minimum |
||
| 55 | R/W multiple sector transfer: Max = 16 Current = 16 |
||
| 56 | Advanced power management level: 254 |
||
| 57 | Recommended acoustic management value: 0, current value: 254 |
||
| 58 | DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6 |
||
| 59 | Cycle time: min=120ns recommended=120ns |
||
| 60 | PIO: pio0 pio1 pio2 pio3 pio4 |
||
| 61 | Cycle time: no flow control=120ns IORDY flow control=120ns |
||
| 62 | Commands/features: |
||
| 63 | Enabled Supported: |
||
| 64 | * SMART feature set |
||
| 65 | Security Mode feature set |
||
| 66 | * Power Management feature set |
||
| 67 | * Write cache |
||
| 68 | Look-ahead |
||
| 69 | * Host Protected Area feature set |
||
| 70 | * WRITE_BUFFER command |
||
| 71 | * READ_BUFFER command |
||
| 72 | * NOP cmd |
||
| 73 | * DOWNLOAD_MICROCODE |
||
| 74 | * Advanced Power Management feature set |
||
| 75 | Power-Up In Standby feature set |
||
| 76 | * SET_FEATURES required to spinup after power up |
||
| 77 | * 48-bit Address feature set |
||
| 78 | * Mandatory FLUSH_CACHE |
||
| 79 | * FLUSH_CACHE_EXT |
||
| 80 | * SMART error logging |
||
| 81 | * SMART self-test |
||
| 82 | * General Purpose Logging feature set |
||
| 83 | * WRITE_{DMA|MULTIPLE}_FUA_EXT |
||
| 84 | * 64-bit World wide name |
||
| 85 | * IDLE_IMMEDIATE with UNLOAD |
||
| 86 | Write-Read-Verify feature set |
||
| 87 | * {READ,WRITE}_DMA_EXT_GPL commands |
||
| 88 | * Segmented DOWNLOAD_MICROCODE |
||
| 89 | * Gen1 signaling speed (1.5Gb/s) |
||
| 90 | * Gen2 signaling speed (3.0Gb/s) |
||
| 91 | * Gen3 signaling speed (6.0Gb/s) |
||
| 92 | * Native Command Queueing (NCQ) |
||
| 93 | * Host-initiated interface power management |
||
| 94 | * Phy event counters |
||
| 95 | * Device automatic Partial to Slumber transitions |
||
| 96 | * READ_LOG_DMA_EXT equivalent to READ_LOG_EXT |
||
| 97 | * DMA Setup Auto-Activate optimization |
||
| 98 | Device-initiated interface power management |
||
| 99 | * Software settings preservation |
||
| 100 | * SMART Command Transport (SCT) feature set |
||
| 101 | * SCT Data Tables (AC5) |
||
| 102 | * SET MAX SETPASSWORD/UNLOCK DMA commands |
||
| 103 | * Data Set Management TRIM supported (limit 1 block) |
||
| 104 | * Deterministic read data after TRIM |
||
| 105 | Security: |
||
| 106 | Master password revision code = 65534 |
||
| 107 | supported |
||
| 108 | not enabled |
||
| 109 | not locked |
||
| 110 | not frozen |
||
| 111 | not expired: security count |
||
| 112 | not supported: enhanced erase |
||
| 113 | 2min for SECURITY ERASE UNIT. |
||
| 114 | Logical Unit WWN Device Identifier: 5e83a97e2d4e3c1f |
||
| 115 | NAA : 5 |
||
| 116 | IEEE OUI : e83a97 |
||
| 117 | Unique ID : e2d4e3c1f |
||
| 118 | Checksum: correct |
||
| 119 | </pre> |
||
| 120 | }} |
||
| 121 | |||
| 122 | 2 | Андрей Волков | <pre> |
| 123 | * Data Set Management TRIM supported (limit 1 block) |
||
| 124 | * Deterministic read data after TRIM |
||
| 125 | </pre> |
||
| 126 | |||
| 127 | |||
| 128 | Начальная поддержка discard появилась в ядре 2.6.28 |
||
| 129 | Поддержка discard для swap появилась в ядре 2.6.29 |
||
| 130 | Поддержка discard для btrfs появилась в ядре 2.6.32 |
||
| 131 | Поддержка discard в libata (SATA driver library) появилась в ядре 2.6.33 |
||
| 132 | Поддержка discard для ext4 появилась в ядре 2.6.33 |
||
| 133 | Поддержка discard для vfat появилась в ядре 2.6.33 |
||
| 134 | Поддержка discard для device-mapper (delay, linear, mpath, stripe) появилась в ядре 2.6.36 |
||
| 135 | Поддержка discard для ext4(без журнала) появилась в ядре 2.6.36 |
||
| 136 | Поддержка secure discard (1) появилась в ядре 2.6.36 |
||
| 137 | Поддержка batched discard (2) для ext4 появилась в ядре 2.6.37 |
||
| 138 | Поддержка batched discard (2) для ext3 появилась в ядре 2.6.38 |
||
| 139 | Поддержка discard для dm-mirror появилась в ядре 2.6.38 |
||
| 140 | Поддержка batched discard (2) для xfs появилась в ядре 2.6.38 |
||
| 141 | Поддержка discard на уровне блочного устройства появилась в ядре 3.0 |
||
| 142 | Поддержка discard для xfs появилась в ядре 3.0 |
||
| 143 | Поддержка discard для loop устройств появилась в ядре 3.2 |
||
| 144 | Поддержка discard для dm-thin устройств появилась в ядре 3.4 |
||
| 145 | Поддержка подключения discard на лету для ext4(без журнала) появилась в ядре 3.7 |
||
| 146 | Поддержка async discard для swap появилась в ядре 3.12 |
||
| 147 | Поддержка discard для dm-raid (1,10,4,5,6) появилась в ядре 3.18 |
||
| 148 | Поддержка batched discard (2) для f2fs появилась в ядре 3.18 |
||
| 149 | Ускорение discard для dm-cache и dm-thin появилось в ядре 3.19 |
||
| 150 | |||
| 151 | Источники: |
||
| 152 | https://clusterbuffer.wordpress.com/2011/10/02/how-do-you-know-trim-is-working-with-your-ssd-in-your-system/ |
||
| 153 | http://kernelnewbies.org/LinuxVersions |
||
| 154 | |||
| 155 | (1) - фича диска, позволяющая гарантированно удалить все копии discard блока (реализуется прошивкой диска) |
||
| 156 | (2) - discard выполняется одним ioctl() вызовом возвращая размер высвобожденного места. |
||
| 157 | |||
| 158 | 1 | Андрей Волков | LVM 2.02.85 |
| 159 | |||
| 160 | Утилита fstrim |
||
| 161 | util-linux 2.19 |
||
| 162 | |||
| 163 | Утилита blkdiscard |
||
| 164 | util-linux 2.23 |