在Mac OS上为SSD固态硬盘开启Trim指令的教程
发布时间:2022-03-26 02:55:32
这篇文章主要介绍了在Mac OS上为SSD固态硬盘开启Trim指令的教程,Trim能够回收闲置的SSD数据块,减少SSD的写入负担,需要的朋友可以参考下
固态硬盘(SSD)突破了传统硬盘的速度瓶颈,并且工作稳定、无噪音、耗电少,随着成本的下降,大有取代传统硬盘的势头。使用SSD的人大多听说过TRIM,操作系统一定要支持TRIM才能让SSD的性能实现最优化,那么TRIM到底是什么东西,为什么SSD需要TRIM而传统硬盘却不需要呢?
TRIM的出现,实际上是由于SSD在执行数据删除、覆盖操作时和传统硬盘在原理上的差异所造成的。我们知道,存储设备(无论是SSD还是传统硬盘)只负责最底层的物理存储,并不知道所存储的数据到底有什么意义,反正操作系统让我读或写什么数据我照办就可以了,而将物理设备中的数据组织成目录、文件并赋予它们意义的,是文件系统(File System)负责的工作。文件系统是操作系统的一部分,由操作系统负责管理,不同的操作系统支持的文件系统不一样,例如较古老的FAT16/32、Windows的NTFS、OS X的HFS+、Linux的ext(ext2/3/4)等等。
那么为什么说问题出在数据的删除和覆盖上面呢?我们来看一下删除文件的时候操作系统是如何处理的吧。首先,一个文件在物理设备上是存放在多个数据块中的,这些块可以是不连续的,文件系统中会有一张表(例如FAT中的文件分配表)来管理每个文件的数据所对应的存储位置。那么,在删除的文件的时候,操作系统只要将该文件所对应的数据块在文件系统中标记为“空闲”就可以了,根本不需要实际去清除数据块中存放的数据。
结果:存储设备只知道哪些地方存了数据,但不知道这个数据到底还有没有用(因为文件删除之后,数据实际上可能还留在数据块中),数据有没有用只有操作系统才知道。
当我们需要存放新文件时,那些已经标记为“空闲”的数据块就会被当作空的数据块来使用(尽管里面实际上不是空的),对于操作系统来说,它们和原本就没有内容的空数据块是完全一样的。但这样的设计必须建立在一个前提下:
对于物理存储设备来说,“写入空白数据块”和“覆盖已有内容的数据块”所需要的操作是完全相同的。
上述前提对于传统硬盘来说是完全成立的,传统硬盘的工作方式跟磁带差不多,数据的记录是根据介质上某个记录单元的磁化方向来完成的。也就是说,在写入数据时,磁头只要将指定的记录单元(扇区)磁化为所需的状态即可,完全不必关心这个单元原本是怎样的状态。
然而,上述前提在SSD上却是不能成立的!为什么呢?因为在SSD中,只有空数据块才能直接执行写入操作;而对于非空数据块,需要先执行擦除操作之后才能进行写入。
乍看之下,SSD和传统硬盘的区别仅仅是多了一步擦除操作而已,但实际上并非如此,更要命的还在后头。在SSD中,数据存储的最小单位是页面(page),一个页面的大小一般是4KB,若干个页面又被组合成块(block),一个块的大小一般是512KB。由于硬件方面的限制,SSD单独对某个页面进行读/写的操作,但擦除操作却只能对整个块进行,也就是说,一旦擦除就必须一次性擦除整个块。想想看,如果操作系统要让SSD改写某个页面的数据,SSD需要执行怎样的操作呢:
将要改写的目标页面所在的整个块的数据读取到缓存。
在缓存中修改目标页面的数据。
对整个块执行擦除操作。
将缓存中的数据重新写入整个块中。
这就意味着,如果我要修改某个4KB大小的页面,就必须把512KB大小的整个块都折腾一遍,大家应该可以想象出这将带来何等巨大的性能和寿命上的损失。
正是出于上述原因,SSD中提供了一个TRIM命令,操作系统在删除文件时可以通过向SSD发送TRIM命令告诉它哪些数据块中的数据已经不再使用了。SSD在收到TRIM命令后,通常会在定期的垃圾收集操作中重新组织这些区块,为将来写入数据做好准备,不过每一款SSD在底层对TRIM命令的执行机制都不尽相同,但无论如何,通过TRIM能够显著改善SSD的性能和寿命。当然,大家可能已经发现了,有了TRIM,删除的文件数据会被SSD自动回收,这意味着以往在传统硬盘上能够使用的一些数据恢复(反删除)软件,在SSD上可能就不再管用了。
既然TRIM如此重要,我应该如何启用呢?一般来说,只要你所使用的操作系统支持TRIM,就无需额外的操作。支持TRIM的操作系统:Windows 7及后续版本、OS X 10.6.8及后续版本、Linux内核版本2.6.33及后续版本。
下面我们就来看一下Mac OS上用命令行开启SSD trim的方法,非常简单:
在终端里面运行下面四条命令。
1.
复制代码代码如下:
sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.bak
2.
复制代码代码如下:
sudo perl -pi -e 's|\x00\x41\x50\x50\x4c\x45\x20\x53\x53\x44\x00|\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
3.
复制代码代码如下:
sudo touch /System/Library/Extensions
4.
复制代码代码如下:
sudo kextcache -prelinked-kernel /System/Library/Caches/com.apple.kext.cache/Startup/kernelcache -K /System/Library/Kernels/kernel /System/Library/Extensions


猜你喜欢
- Studio One是一款非常热门的音频工作站软件,为了大家能够更好的使用这款软件,这篇文章向大家介绍一下Studio One的效果器。软件
- 当我们想要将制定文档分享给多人查看时,就需要运用到团队文档了,那么如何在WPS当中创建团队,上传文档呢,今天我们就来教大家这个小技巧,具体怎
- 人们的生活和工作都离不开电脑,而电脑的操作离不开操作系统,win7系统启动后黑屏,只有一个鼠标指针,win7桌面黑屏只有鼠标怎么办?小编分享
- HBuilderX是全新推出的一款HTML5的Web开发工具。很多人在使用HBuilderX的时候,不知道怎么卸载内置浏览器,那么我们应该怎
- Excel中的公式默认只显示结果,如果需要设置显示公式具体该如何操作呢?接下来是小编为大家带来的excel设置显示公式的方法,供大家参考。e
- 在wps中,有个图章生成器,对于大多数人来说,可能不知道如何使用该生成器,下面就让小编告诉大家如何使用wps图章生成器。使用wps图章生成器
- 在上一个版本发布短短三天之后,苹果就推送了iOS 10.3 Beta 7 Public测试版,更新速度之快令人咂舌。以iPhone 6s为例
- 1、单击插入形状----基本形状----左大括号(或右大括号);2、在页面上拖动鼠标,即可绘制一个大括号。
- 在Word 2016中编辑好文件后按保存键保存时,默认存储格式为Docx。但是很多场合,比如机关事业单位的申报填表、文件材料等等,都是以Do
- 升级win10后除了edge其他浏览器都不能上网怎么办?很多用户在升级win10之后,都反映出现这个问题,但又不知道怎么解决?下面小编就为大
- 在我们使用excel制作表格的时候,通常都需要进行合并和拆分单元格,拆分单元格该如何操作呢?下面随小编一起看看吧。excel表格拆分单元格的
- PPT怎么给文字添加聚光灯封面?ppt中想要制作聚光灯效果,该怎么制作呢?下面我们就来看看ppt制作聚光灯的教程,需要的朋友可以参考下PPT
- Win11系统作为微软最新发布的系统,还没有经过长久的检验,所以在用户使用的时候不可避免的会出现很多问题和无法解决的问题。很多用户都知道如果
- Windows 10的强制更新机制已经受到很多用户的诟病,突然的重新启动有时会打断用户正在进行的工作,而在重新启动之后,用户就不得不重新开始
- 我们在excel中工作时,如果懂得运用宏的话,可以让我们在工作中省很多的时间,Excel中的宏具体该如何编写呢?接下来是小编为大家带来的ex
- win7系统是一款非常优秀的高性能系统,最近一段时间里有很多win7系统的小伙伴们都在找win7怎么初始化网络设置的方法,今天小编为大家带来
- 微软官方的最新数据显示,已经有3千万用户升级了Win10。但是有不少用户升级Win10系统过程中遇到了屏幕闪烁的问题,升级Win10后屏幕闪
- 电脑使用久了就会变得迟钝而且卡,这个时候就需要清理一下C盘来使其加速,那么怎么才能把c盘清理的最干净呢,下面就和大家一起来看看具体该怎么操作
- Adobe Flash Player是一种广泛使用的多媒体程序播放器,很多用户都会使用的一款播放器,但是也有win10系统用户不习惯使用,一
- 微软面向所有Win10功能更新获得新一轮累积更新,但是v1903版本除外,从本次发布的更新日志来看,修复的内容非常多,此前版本中存在的很多问