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