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

SSD如何设置预留空间OP(Over-Provision)的更多相关文章

  1. 保护SSD,设置Chrome浏览器临时文件夹到ramdisk分区

    很多用低端/山寨SSD的朋友都用Ramdisk来保护硬盘,一般都把系统temp目录和IE浏览器临时文件夹目录设到Ramdisk分区了.      最近用谷歌的chrome浏览器,发现浏览网页时候硬盘灯 ...

  2. 【转】花开正当时,十四款120/128GB SSD横向评测

    原文地址:http://www.expreview.com/19604-all.html SSD横评是最具消费指导意义的评测文章,也是各类热门SSD固态硬盘的决斗疆场.SSD评测在行业内已经有不少网站 ...

  3. 大数据小视角5:探究SSD写放大的成因与解决思路

    笔者目前开发运维的存储系统的服务器都跑在SSD之上,目前单机服务器最大的SSD容量有4T之多.(公司好有钱,以前在实验室都只有机械硬盘用的~~)但SSD本身的特性与机械硬盘差距较大,虽然说在性能上有诸 ...

  4. 全面理解SSD和NAND Flash

    Flash Memory又叫做闪存,是一种非易失性存储器.非易失性是指断电之后数据不会丢失,这里就涉及到断电保护(后面详细讲解). 总体思路 1.NAND Flash的用途. 2.NAND Flash ...

  5. SSD基本工作原理

    SSD主要由SSD控制器,FLASH存储阵列,板上DRAM(可选),以及跟HOST接口(诸如SATA,SAS, PCIe等)组成. SSD主控通过若干个通道(channel)并行操作多块FLASH颗粒 ...

  6. 为SSD编程(4)——高级功能和内部并行

    原文 http://codecapsule.com/2014/02/12/coding-for-ssds-part-4-advanced-functionalities-and-internal-pa ...

  7. Mware vCenter Server 识别固态硬盘为(非SSD)是什么原因?

    人工定义一下: 用root登录进ESXi控制台:esxcli storage nmp device list #列出储存清单esxcli storage nmp satp rule add -s VM ...

  8. Android 初始化Setup Wizard——Provision

    今天说说Provision这个APK,可能很多朋友都不知道有这个APK存在.Provision的作用很简单,就是一个系统初始化引导程序,原生的Android里面Provision只做了一件事,就是写入 ...

  9. [置顶] Android Provision (Setup Wizard)

    Android中很多框架性的设计都已经存在了,但在市场上的发布版本里却因为没有很好的理解Android的设计意图而进行自己的定制,或者自己又做一 个冗余的实现.Android中的Provision其实 ...

随机推荐

  1. 在vue中设计一个客户签名的功能

    直接贴代码: <template> <div class="hello"> <p>签字:</p> <canvas id=&qu ...

  2. 【记录】eclipse jar包看不了源码

    第一步:下载JAD . jad官方地址的官方下载地址是: http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasem ...

  3. shell PATH示例

  4. Maven Filter与Profile隔离生产环境与开发环境

    Maven Filter与Profile隔离生产环境与开发环境 在不同的开发阶段,我们一般用到不同的环境,开发阶段使用开发环境的一套东西,测试环境使用测试环境的东西,可能有多个测试环境,生产环境使用的 ...

  5. 04.Linux-CentOS系统SSH连接问题

    问题:SSH远程连接时报错 Socket error Event: 32 Error: 10053.Connection closing...Socket close.Connection close ...

  6. python爬虫:抓取下载视频文件,合并ts文件为完整视频

    1.获取m3u8文件 2.代码 """@author :Eric-chen@contact :sygcrjgx@163.com@time :2019/6/16 15:32 ...

  7. Oracle 数据库恢复命令

    前提是oracle服务能正常启动,但是客户端怎么都连接不上. 首先打开命令行,输入:sqlplus / as sysdba; 回车 连上数据库后,屏幕会显示:已连接到空闲例程. 接下来在SQL> ...

  8. Sass--调用混合宏

    在 Sass 中通过 @mixin 关键词声明了一个混合宏,那么在实际调用中,其匹配了一个关键词“@include”来调用声明好的混合宏.例如在你的样式中定义了一个圆角的混合宏“border-radi ...

  9. java ArrayList存储基本类型

    package java06; /* 如果希望像集合ArrayList中存储基本数据类型数据,必须使用基本数据类型对应的“包装类” 基本数据类型 包装类(引用类型,包装类都位于java.lang包下 ...

  10. Flutter-showBottomSheet底部彈出框

    onPressed: () { showModalBottomSheet( context: context, builder: (BuildContext context) { return new ...