Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)
SSD写数据会出现什么问题
SSD读写的单位不是位,而是一个块。如果要改变这个块中的一位,首先要将整个块擦写成1,然后再写入更新的数据。
为了解决擦写块的低效,SSD的策略是将需要改写的块,读取出来,进行数据修改,然后写入到新的,已经擦除完的块中。
新的SSD,没用的块很多,无需擦写,直接写入,性能很高。随着使用量增加,当写入时无可用块时,则只能先擦写再写入。此时SSD性能很差。
理论上,SSD内部定期将垃圾块进行回收擦写,但是SSD无法确认哪些数据是需要回收的。
解决问题的思路
针对SSD使用时间越长可用块变少以致于性能变差,可以让SSD“知道”哪些块可以回收,从而提前擦写垃圾块,以提升性能。
那么怎么做呢?解释这个问题需要先了解文件系统是如何“删除文件”的。
文件系统只是将文件头作一个已删除的标记,表明文件被删除了,即没有真正删除文件,只是标识删除。(Linux下真正删除的时机可能是写满、ramdisk、断电等时刻,此处不作深究)
SSD 具有一种称为 TRIM 的功能。从本质上讲,这是一种用于回收设备上未使用的块的方法,该块可能先前已被写入,但不再包含有效数据,因此可以返回到通用存储池以供重用。
TRIM就是这种“告知”SSD:“这些文件(块)已经删除了,你可以提前擦写以提高性能!”
经过众多资料的洗礼,我发现TRIM仿佛并非有想像中那么好,因为开启TRIM功能后,每次删除文件是真正的删除,SSD就可能去回收那些垃圾块,会降低SSD的性能!
解决之法是定时TRIM,而Systemd管理的Linux系统中都有一个命令 fstrim,就是作TRIM操作,可以用于普通SSD与NVMe
一次清理垃圾块的操作:(释放了这么多,难怪满了)
sudo fstrim --fstab --verbose

Systemd管理的系统有一个专用的fstrim服务与定时器,开启定时器方法:
#查看fstrim定时器状态
sudo systemctl status fstrim.timer
#开启fstrim定时器自启
sudo systemctl enable --now fstrim.timer
#列出timer定时器列表
sudo systemctl list-timers --all

以上就是本文内容。
引文:
Linux平台下SSD的TRIM指令的最佳使用方式(不区别对待NVMe)的更多相关文章
- Linux平台下Lotus Domino服务器部署案例
Linux平台下Lotus Domino服务器部署案例 几年前我写了篇<RHAS2.1下安装中文LotusDominoR6.5图解>这篇文档被多个大型网站转载,曾帮助过很多公司系统管理员部 ...
- Linux平台下:块设备、裸设备、ASMlib、Udev相关关系
对磁盘设备(裸分区)的访问方式分为两种:1.字符方式访问(裸设备):2.块方式访问 Solaris平台 : 在Solaris平台下,系统同时提供对磁盘设备的字符.块方式访问.每个磁盘有两个设备文件名: ...
- 在linux平台下,设置core dump文件属性(位置,大小,文件名等)
在linux平台下,设置core dump文件生成的方法: 1) 在终端中输入ulimit -c 如果结果为0,说明当程序崩溃时,系统并不能生成core dump. 2) 使用ulimit -c un ...
- Linux平台下Ntop流量监测安装,并实现Netflow全过程
Linux平台下Ntop流量监测安装,并实现Netflow全过程 更多原创教学视频详见: http://you.video.sina.com.cn/m/1443650204 本文出自 "李晨 ...
- linux平台下Hadoop下载、安装、配置
在这里我使用的linux版本是CentOS 6.4 CentOS-6.4-i386-bin-DVD1.iso 下载地址: http://mirrors.aliyun.com/cen ...
- 利用zabbix监控ogg进程(Linux平台下)
前段时间生产的一个数据库的ogg进程挂了快半个月才被发现,已经起不来了,只有重新初始化再同步.因此很有必要监控下ogg的进程,这里给大家介绍如何使用zabbix监控oracle的ogg的进程.思路就是 ...
- linux平台下server运维问题分析与定位
结合我工作中碰到的运维问题,总结一下Linux下server常见的运维问题以及定位方式.这里的server主要指自主开发的逻辑server,web srv因为通常采用通用的架构所以问题比较少. 逻辑s ...
- 【原创】--linux平台下opencv安装
1.到opencv官网下载源码 也可以下载此链接http://pan.baidu.com/s/1mgId5ZM 2.解压到任意目录 可以使用右键-提取到此处,也可以在命令行中使用指令解压(linux中 ...
- Linux 平台下 YUM 源配置 手册
Redhat/Centos 系的Linux 平台,推荐使用YUM 来安装相关依赖包. 安装方式有两种,一种是使用本地的YUM,一种使用在线的YUM. 1 在线YUM 源 如果操作系统能 ...
随机推荐
- DNS注册信息
DNS注册信息查询可以查到注册时留下的信息,比如姓名,联系邮箱等等. 直接在命令行输入whois sina.com直接就可以看到sina.com的注册信息: Domain Name: SINA.COM ...
- 循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理
在前面随笔<循序渐进VUE+Element 前端应用开发(12)--- 整合ABP框架的前端登录处理>介绍了一个系统最初接触到的前端登录处理的实现,但往往对整个系统来说,一般会有很多业务对 ...
- Angular2-------Error: Unexpected value ‘undefined’ declared by the module ‘模块名
请检查[app.module.ts]文件中的[declarations]模块最后是否多了一个逗号 (完)
- (私人收藏)蓝色夜空背景的通用商务PPT模板
蓝色夜空背景的通用商务PPT模板 https://pan.baidu.com/s/1tsmPEdE5gjDDSxIyMDJGCA0m28
- java语言基础(八)_接口_多态
接口 1. 接口定义的基本格式 接口就是多个类的公共规范,是一种引用数据类型,最重要的内容就是其中的:抽象方法. 如何定义一个接口的格式: public interface 接口名称 { // 接口内 ...
- 解决autocomplete=off在Chrome中不起作用的方法
大家都知道autocomplete属性是表单字段中的HTML5新属性,该属性有两种状态值,分别为"on" 和 "off",该属性可省略:省略属性值后默认值为&q ...
- 简单的JdbcUtil 类
import java.sql.*; /** JDBC工具类 */ public class JdbcUtil { /** * 获取数据库连接对象并返回 * * @return Connection对 ...
- Sightseeing,题解
题目: 题意: 找到从s到t与最短路长度相差少于1的路径总数. 分析: 首先,搞明白题意之后,我们来考虑一下怎么处理这个1,怎样找相差为1的路径呢?我们这样想,如果有相差为1的路径,那么它将会是严格的 ...
- POJ3262贪心
题意:FJ去砍树,然后和平时一样留了 N (2 ≤ N ≤ 100,000)头牛吃草.当他回来的时候,他发现奶牛们正在津津有味地吃着FJ种的美丽的花!为了减少后续伤害,FJ决定立即采取行动:运输每头牛 ...
- lombok使用指南,代码极简工具
我们的项目中会用到各种bean,比如vo,bo,dto等等,bean上的属性我们一般写get(),set()方法,整个java文件看起来很臃肿. 一.简介 我们今天介绍的lombok只用使用注解就可以 ...