使用hdparm命令发送ATA“Secure Erase”指令恢复SSD硬盘的写性能

SSD硬盘随着使用会产生很碎片,随着碎片的增加性能会大大降低。如果硬盘上的数据可以备份到别外,然后就可以用hdparm发送ATA “Secure Erase”指令去清空SSD硬盘中的数据的方法,把硬盘的写性能恢复到没有碎片时的状态。
注意: 这个操作会删除硬盘上所有的数据,而且这些数据不能被恢复。 
注意:如果你不幸碰到了的操作系统内核bugs或SSD硬盘的fireware bugs,可能会硬盘不可写或操作系统crash。
发送 ATA Security Erase指令时需要先给硬盘设置一个密码,当然后面我们再发ATA Security Erase指令后这个密码会被删除掉的。
 
操作步骤:
第一步:
先查看硬盘的状态,X代表sda,sdb,sdc等具体你要操作的硬盘:
hdparm -I /dev/X
主要看输出中的Security部分,如果结果中出现“not frozen”,那么这个硬盘是可以用ATA Security Erase命令去清除硬盘碎片的,
Security: 
        Master password revision code = 65534
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
如果结果是“frozen”的,有可能是主机的BIOS禁止发送ATA Security Erase指令,这需要找到BIOS中打开这个限制。

第二步:设置一个密码

hdparm --user-master u --security-set-pass user123 /dev/X

user123是设置的一个密码.

hdparm --user-master u --security-set-pass user123 /dev/sde

security_password="user123"

/dev/sde:
 Issuing SECURITY_SET_PASS command, password="user123", user=user, mode=high
SECURITY_SET_PASS: Invalid exchange

结果可能是“SECURITY_SET_PASS: Invalid exchange”,但密码也可能是设置上了,可以使用hdparm -I /dev/X检查是否设置上了,输出结果应该是“enabled”:

Security: 
       Master password revision code = 65534
               supported
               enabled
       not     locked
       not     frozen
       not     expired: security count

第三步:执行删除操作

hdparm --user-master u --security-erase user123 /dev/X

hdparm --user-master u --security-erase user123 /dev/sde   

security_password="user123"

/dev/sde:
 Issuing SECURITY_ERASE command, password="user123", user=user
SECURITY_ERASE: Invalid exchange 

然后再检查Security被禁止了:

使用hdparm -I /dev/X检查是否设置上了,输出结果应该是“not enabled”:

Security: 
       Master password revision code = 65534
               supported
       not     enabled
       not     locked
       not     frozen
       not     expired: security count