什么是SSD TRIM (by quqi99)

作者:张华  发表于:2016-03-23

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明

( http://blog.csdn.net/quqi99 )

普通硬盘并不真正从硬盘里删除数据,只是在操作系统标记为删除,下次直接覆盖写;但SSD物理覆盖写却是很慢的(对于SSD,可以以4KB大小的页(128个page组成一个block)来读写数据,但却只能以512KB(128 page)大小来删除。要覆盖写一个4KB page的话,先要把512KB block全部复制到缓存里,然后删除这4kb page并替换成新的写数据,接下来清空SSD的这512KB block区域,并从缓存里把新的数据写回去)。所以当SSD的所有空闲块都被使用后,再有写的操作只能覆盖写到之前被操作系统标记为删除的区域,这也是速度下降的开始。特别是一系列小文件随机写入同时覆盖写很多的块,那样缓存一下子会快速过载而变得非常慢,所以SSD厂商都在新主控制器上加入了越来越大的外置缓存,这虽然可以一定程序上解决随机写入卡的问题,但是却不能解决SSD在覆盖写时速度下降的问题。如果操作系统在删除一个4KB page的时候不仅在操作系统记录里删除也控制SSD主控物理删除它的话,这就是TRIM干的事情,它将写时的延迟移到了删除时。需要内核、固件(SSD厂商在固件里放TRim算法)、驱动(如Intel的AHCI驱动)三者都支持TRIM才行。

可用fstrim命令回收一个已挂载的文件系统上所有未使用的块(sudo fstrim -v);

也可使用smartctl -a /dev/sda 命令检测磁盘是否有错,从结果里找类似"177 Wear_Leveling_Count 0x0013 099 099 000 Pre-fail Always - 9",那个9是SSD厂商估计的寿命,0代表新SSD盘,100代表可能明天就坏了。

下面是smartmontools自检工具的基本使用

1, 安装包

sudo apt-get install smartmontools

2, 查看硬盘是否enable了SMART自检特性,若没enable,可使用命令”sudo smartctl --smart=on --offlineauto=on --saveauto=on /dev/sda“打开。
[email protected]:~$ sudo smartctl -i /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.0-9-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda 7200.14 (AF)
Device Model:     ST2000DM001-9YN164
Serial Number:    W1E0S44Q
LU WWN Device Id: 5 000c50 052bb6b91
Firmware Version: CC4B
User Capacity:    2,000,398,934,016 bytes [2.00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    7200 rpm
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS T13/1699-D revision 4
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Wed Mar 23 14:50:55 2016 CST

==> WARNING: A firmware update for this drive may be available,
see the following Seagate web pages:
http://knowledge.seagate.com/articles/en_US/FAQ/207931en
http://knowledge.seagate.com/articles/en_US/FAQ/223651en

SMART support is: Available - device has SMART capability.
SMART support is: Enabled

3, 检测
[email protected]:~$ sudo smartctl -H /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.0-9-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

4, 详细检测
[email protected]:~$ sudo smartctl -A /dev/sda
smartctl 6.2 2013-07-26 r3841 [x86_64-linux-4.4.0-9-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   117   099   006    Pre-fail  Always       -       141775376
  3 Spin_Up_Time            0x0003   095   094   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       561
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   084   060   030    Pre-fail  Always       -       306606505
  9 Power_On_Hours          0x0032   095   095   000    Old_age   Always       -       5237
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       667
183 Runtime_Bad_Block       0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   099   099   000    Old_age   Always       -       1
188 Command_Timeout         0x0032   100   099   000    Old_age   Always       -       0 0 1
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   067   054   045    Old_age   Always       -       33 (Min/Max 20/36)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       77
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       1907
194 Temperature_Celsius     0x0022   033   046   000    Old_age   Always       -       33 (0 8 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       5111h+51m+54.467s
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       12778926325684
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       42981342412817

时间: 2024-07-28 23:32:18

什么是SSD TRIM (by quqi99)的相关文章

Yosemite 升级后第三方SSD TRIM失败不能进入系统处理

no zuo no die, 这把手欠升级到了Yosemite, 然后发现原来在Mavericks里已经激活的TRIM在这里不行了, 又提示trim enable软件不适于此版本. 然后,悲剧就开始了, 随手找了一个老帖子,按照那个命令把内核文件改了, 也没管适不适用于Yosemite, 然后重启, 就进不去了... 一个禁止的标志横在那, 心哇凉啊, 我都还没做Mavericks的U盘安装盘,想降回去也不行啊. 拿着PC在那狂搜, 看来老外比我早, 有人解决了,遇到这个情况的朋友,输入以下救命

SSD trim及4k对齐

trim可以帮助减小SSD的写放大WA问题,删除文件后不仅仅是将文件标记为删除,而是在SSD空闲的时候统一进行删除. Linux下的trim支持叫discard,修改fstab文件,在挂载参数中加上discard,最好也同时加上noatime,如下 /dev/sda3   /   ext4   noatime,discard  0 1 4k对齐问题在linux中是没有的,win下是需要注意一下的. 早期硬盘每个扇区以512字节为标准,新一代硬盘扇区容量为4096个字节,也就是所说的4k扇区. 硬

使用 CCC(Carbon Copy Cloner)备份、还原OS X 10.10 Yosemite(优胜美地)系统

帖子简述 目的(原因):以前安装的60GSSD已经满了,需要增加容量.但不想重装系统和软件,于是就有了Clone的想法.不得不说,OS X + CCC克隆,能做到100%的完美移植[自家移植到自家].简单,易操作.但过程中可能会出现一些问题,这些问题对小白来说可能是致命的.下面先讲一下正常的操作,后面再贴可能错误及排除[本人亲测]. 给谁看? 想备份OS X系统的人 想升级SSD的人 MAC控 自己 使用软件 磁盘工具,Carbon Copy Clone,TRIM ENABLER 你需要的技能

Linux系统中的硬件问题如何排查?(2)

Linux系统中的硬件问题如何排查?(2) 2013-03-27 10:32 核子可乐译 51CTO.com 字号:T | T 在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工作,即使是经验相当丰富的用户有时也会遇上自己搞不定的状况,本文分享一些实用的技巧与处理方法,希望有助于读者朋友理解.查明并最终搞定硬件难题. AD:2014WOT全球软件技术峰会北京站 课程视频发布 硬件分析 由于在追踪硬件问题.尝试加以解决方面存在数以百计的处理方案,因此在实际操作中感到迷茫或是淹

CentOS7 vs centos6

The CentOS Project has announced general availability of CentOS-7, the first release of the free Linux distro based on the source code for Red Hat Enterprise Linux (RHEL) 7. It's also the first major CentOS release to ship since the CentOS Project en

RH442 1

hardware profiling RH442 Getting to know your hardware Hardware profiling Before tuning the performance, it's important to understand the capabilities of your system CPU 内部寄存器:硬件,时钟周期一致.1级缓存:静态内存,2级缓存:动态高速内存 Memory 相对缓存更慢 Storage 更慢 到磁盘,终止. Farthe fr

mac mini 制作fusion drive 的方法

下载yosemite,格式化磁盘,运行如下命令,制作os x 启动盘 sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/Untitled --applicationpath /Applications/Install\ OS\ X\ Yosemite.app --nointeraction 制作fusion drive 的方法. 从u盘启动

(WIP)SSD上的I/O电梯算法与HugePage设置可能导致的Crash(by quqi99)

作者:张华  发表于:2016-03-24版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明( http://blog.csdn.net/quqi99 ) 问题 虚机里的某个进程Hang住了,使用"cat /proc/diskstats"命令查看一个SSD硬盘上有很多请求列队. hung_task_timeout_secs参数与D状态 进程等待IO时如果处于D状态,即TASK_UNINTERRUPTIBLE状态,处于这种状态的进程不处理信号,所以ki

SSD固态硬盘的GC与Trim

操作系统:其实并没有删除数据 - "事实上,它只是在硬盘前的索引区里标记这块文件占用的区域为可覆盖的,所以下次数据将要再次写入的时候,可以覆盖写入这块被标记的区域.这也就是为啥那 些所谓的文件恢复软件能恢复的道理.(数据依然存在)." 固态硬盘:在固态硬盘闪存内,数据存储一般是以page(页)为最小单位存储的(典型的为4KB),而128个page组成了一个block(块),数据可以以 4KB大小的页来读取和写入,但却只能以512KB(128 page)的块大小来删除.当读取数据或者写入