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 |