SSD如何设置预留空间OP(Over-Provision)

时间:2024-02-18 08:11:19

Over-Provision操作指南

SSD OP全称是(Over-Provision), 中文名预留空间, 指用户不可操作的容量,大小为SSD实际容量减去用户可用容量。简单来说over-provision可以提高ssd的wear-leveling,减少写放大,提高随机写的性能, 提高ssd的使用寿命. 关于预留空间OP(Over-Provision)作用和性能分析这里就不在多说,网上很多文章有讲, 但设置ssd op的方法, 网上找到的帖子很少, 最后在intel的一个pdf上找到了, 也解了心中的疑惑, 现在分享下:)
想看原文的可以goto

首先ssd的op必须实在一个完全clean的ssd上分配, 所以你拿到一个ssd在设置op之前,要确保它是刚从包装盒里拿出来的, 否则你需要先secrue erase.
有三种给ssd预留的方式:

  1. 分区时剩余一部分空间不使用

Limiting the logical volume capacity during partitioning in OS(user will see full capacity in Disk Manager or fdisk)

  1. 限制应用只使用一定范围的LBA, 但你不能在一个完整的LBA上创建文件系统, 这样op会失效.

Limiting an applation to use only a certain LBA range. Please note it will not work for the scenario in which the filesystem is deployed on full LBA range

  1. 从驱动层限制最大的LBA, 这样在os层面上, user看不到这部分容量

Limiting the Maximum LBA on the drive level, so that in OS, it will appear as a lower-capacity drive

方法1原文没有给出方法, 我理解就是对ssd secure erase[label: trim ssd], 然后分区剩余一部分空间就可以了, 有人说预留25%性能最好, 这个也得参考下性价比.

#sudo hdparm --user-master u --security-set-pass 123 /dev/sdx
#sudo hdparm --security-erase 123 /dev/sdl
#parted /dev/sdx mklabel gpt mkpart op 0% 75%

方法3对于intel的ssd可以使用内部工具isdct(Intel SSDs Data Center Tool) 和第三方工具.
isdct工具
isdct工具同时支持SATA 和 NVMe Intel SSD, 详细操作请见官方资料:
isdct连接 && 使用指导

第三方工具
SATA ssd推荐使用hdparm:

在使用之前首先要secure erase[label: trim ssd]

#sudo hdparm --user-master u --security-set-pass 123 /dev/sdx
#sudo hdparm --security-erase 123 /dev/sdl

接着设置op

#sudo hdparm -N /dev/sdx
(查找对打的sector count)
#sudo hdparm -NpXXXXXX -yes-i-known-what-i-am-doing /dev/sdx
(这个就是设置host-protected area, 用户可见的sector紧跟着Np)

NVMe SSD推荐使用nvme-cli 开源工具, 使用方法参见man pages