在Mac OS上為SSD固態(tài)硬盤開啟Trim指令的教程

固態(tài)硬盤(SSD)突破了傳統(tǒng)硬盤的速度瓶頸,并且工作穩(wěn)定、無噪音、耗電少,隨著成本的下降,大有取代傳統(tǒng)硬盤的勢頭。使用SSD的人大多聽說過TRIM,操作系統(tǒng)一定要支持TRIM才能讓SSD的性能實(shí)現(xiàn)最優(yōu)化,那么TRIM到底是什么東西,為什么SSD需要TRIM而傳統(tǒng)硬盤卻不需要呢?
TRIM的出現(xiàn),實(shí)際上是由于SSD在執(zhí)行數(shù)據(jù)刪除、覆蓋操作時(shí)和傳統(tǒng)硬盤在原理上的差異所造成的。我們知道,存儲(chǔ)設(shè)備(無論是SSD還是傳統(tǒng)硬盤)只負(fù)責(zé)最底層的物理存儲(chǔ),并不知道所存儲(chǔ)的數(shù)據(jù)到底有什么意義,反正操作系統(tǒng)讓我讀或?qū)懯裁磾?shù)據(jù)我照辦就可以了,而將物理設(shè)備中的數(shù)據(jù)組織成目錄、文件并賦予它們意義的,是文件系統(tǒng)(File System)負(fù)責(zé)的工作。文件系統(tǒng)是操作系統(tǒng)的一部分,由操作系統(tǒng)負(fù)責(zé)管理,不同的操作系統(tǒng)支持的文件系統(tǒng)不一樣,例如較古老的FAT16/32、Windows的NTFS、OS X的HFS+、Linux的ext(ext2/3/4)等等。
那么為什么說問題出在數(shù)據(jù)的刪除和覆蓋上面呢?我們來看一下刪除文件的時(shí)候操作系統(tǒng)是如何處理的吧。首先,一個(gè)文件在物理設(shè)備上是存放在多個(gè)數(shù)據(jù)塊中的,這些塊可以是不連續(xù)的,文件系統(tǒng)中會(huì)有一張表(例如FAT中的文件分配表)來管理每個(gè)文件的數(shù)據(jù)所對應(yīng)的存儲(chǔ)位置。那么,在刪除的文件的時(shí)候,操作系統(tǒng)只要將該文件所對應(yīng)的數(shù)據(jù)塊在文件系統(tǒng)中標(biāo)記為“空閑”就可以了,根本不需要實(shí)際去清除數(shù)據(jù)塊中存放的數(shù)據(jù)。
結(jié)果:存儲(chǔ)設(shè)備只知道哪些地方存了數(shù)據(jù),但不知道這個(gè)數(shù)據(jù)到底還有沒有用(因?yàn)槲募h除之后,數(shù)據(jù)實(shí)際上可能還留在數(shù)據(jù)塊中),數(shù)據(jù)有沒有用只有操作系統(tǒng)才知道。
當(dāng)我們需要存放新文件時(shí),那些已經(jīng)標(biāo)記為“空閑”的數(shù)據(jù)塊就會(huì)被當(dāng)作空的數(shù)據(jù)塊來使用(盡管里面實(shí)際上不是空的),對于操作系統(tǒng)來說,它們和原本就沒有內(nèi)容的空數(shù)據(jù)塊是完全一樣的。但這樣的設(shè)計(jì)必須建立在一個(gè)前提下:
對于物理存儲(chǔ)設(shè)備來說,“寫入空白數(shù)據(jù)塊”和“覆蓋已有內(nèi)容的數(shù)據(jù)塊”所需要的操作是完全相同的。
上述前提對于傳統(tǒng)硬盤來說是完全成立的,傳統(tǒng)硬盤的工作方式跟磁帶差不多,數(shù)據(jù)的記錄是根據(jù)介質(zhì)上某個(gè)記錄單元的磁化方向來完成的。也就是說,在寫入數(shù)據(jù)時(shí),磁頭只要將指定的記錄單元(扇區(qū))磁化為所需的狀態(tài)即可,完全不必關(guān)心這個(gè)單元原本是怎樣的狀態(tài)。
然而,上述前提在SSD上卻是不能成立的!為什么呢?因?yàn)樵赟SD中,只有空數(shù)據(jù)塊才能直接執(zhí)行寫入操作;而對于非空數(shù)據(jù)塊,需要先執(zhí)行擦除操作之后才能進(jìn)行寫入。
乍看之下,SSD和傳統(tǒng)硬盤的區(qū)別僅僅是多了一步擦除操作而已,但實(shí)際上并非如此,更要命的還在后頭。在SSD中,數(shù)據(jù)存儲(chǔ)的最小單位是頁面(page),一個(gè)頁面的大小一般是4KB,若干個(gè)頁面又被組合成塊(block),一個(gè)塊的大小一般是512KB。由于硬件方面的限制,SSD單獨(dú)對某個(gè)頁面進(jìn)行讀/寫的操作,但擦除操作卻只能對整個(gè)塊進(jìn)行,也就是說,一旦擦除就必須一次性擦除整個(gè)塊。想想看,如果操作系統(tǒng)要讓SSD改寫某個(gè)頁面的數(shù)據(jù),SSD需要執(zhí)行怎樣的操作呢:
將要改寫的目標(biāo)頁面所在的整個(gè)塊的數(shù)據(jù)讀取到緩存。
在緩存中修改目標(biāo)頁面的數(shù)據(jù)。
對整個(gè)塊執(zhí)行擦除操作。
將緩存中的數(shù)據(jù)重新寫入整個(gè)塊中。
這就意味著,如果我要修改某個(gè)4KB大小的頁面,就必須把512KB大小的整個(gè)塊都折騰一遍,大家應(yīng)該可以想象出這將帶來何等巨大的性能和壽命上的損失。
正是出于上述原因,SSD中提供了一個(gè)TRIM命令,操作系統(tǒng)在刪除文件時(shí)可以通過向SSD發(fā)送TRIM命令告訴它哪些數(shù)據(jù)塊中的數(shù)據(jù)已經(jīng)不再使用了。SSD在收到TRIM命令后,通常會(huì)在定期的垃圾收集操作中重新組織這些區(qū)塊,為將來寫入數(shù)據(jù)做好準(zhǔn)備,不過每一款SSD在底層對TRIM命令的執(zhí)行機(jī)制都不盡相同,但無論如何,通過TRIM能夠顯著改善SSD的性能和壽命。當(dāng)然,大家可能已經(jīng)發(fā)現(xiàn)了,有了TRIM,刪除的文件數(shù)據(jù)會(huì)被SSD自動(dòng)回收,這意味著以往在傳統(tǒng)硬盤上能夠使用的一些數(shù)據(jù)恢復(fù)(反刪除)軟件,在SSD上可能就不再管用了。
既然TRIM如此重要,我應(yīng)該如何啟用呢?一般來說,只要你所使用的操作系統(tǒng)支持TRIM,就無需額外的操作。支持TRIM的操作系統(tǒng):Windows 7及后續(xù)版本、OS X 10.6.8及后續(xù)版本、Linux內(nèi)核版本2.6.33及后續(xù)版本。
下面我們就來看一下Mac OS上用命令行開啟SSD trim的方法,非常簡單:
在終端里面運(yùn)行下面四條命令。
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
相關(guān)文章
蘋果macos怎么建加密文件夾 macos文件夾加密創(chuàng)建圖文教程
可能還有果粉還不會(huì)在mac上加密文件夾,那么蘋果macos怎么建加密文件夾呢?下文小樂哥給大家介紹下2016-12-05mac os x 10.12.2 Beta1怎么升級(jí)?macOS Sierra 10.12.2 Beta升級(jí)圖文
近日蘋果向開發(fā)者用戶們推送了macOS 10.12.2 Beta 1系統(tǒng),廣大網(wǎng)友也接受到了蘋果macOS 系統(tǒng)的推送,那么OS X 10.12.2 Beta 1怎么升級(jí)呢?下面就詳情來看看具體的方法吧2016-11-07蘋果推送OSX10.11.6正式版/macOS Sierra開發(fā)者預(yù)覽版Beta3固件更新
蘋果今天推送了watchOS 3開發(fā)者預(yù)覽版Beta3固件更新,本次更新修復(fù)了許多在Beta2中遇到的bug,同時(shí)蘋果推送OSX10.11.6正式版/macOS Sierra開發(fā)者預(yù)覽版Beta3固件更新,下面2016-07-19macOS Sierra更新了什么?蘋果macOS Sierra新特性匯總
在WWDC 2016上蘋果發(fā)布了全新的macOS Sierra桌面操作系統(tǒng),新版桌面系統(tǒng)增加了多項(xiàng)重要更能,都有哪些更新呢?下面就一起來看看果macOS Sierra新特性一覽吧,希望會(huì)對大家2016-06-14macOS Sierra支持哪些Mac設(shè)備升級(jí)?蘋果macOS Sierra支持設(shè)備列表一覽
6月14日凌晨蘋果在WWDC2016年大會(huì)上蘋果發(fā)布了iOS10、macOS Sierra、 watchOS 3、tvOS四個(gè)系統(tǒng),那么其中macOS Sierra支持哪些Mac設(shè)備升級(jí)呢?一起來看看吧2016-06-14MacOSX 10.10安裝mcrypt詳細(xì)教程分享
mcrypt是使用安全技術(shù)來交換數(shù)據(jù)文件加密方法. 這是必需的,例如一些 Magento 的 Web 應(yīng)用程序,購物車軟件或一個(gè)PHP框架,比如 Laravel. 本教程在 OS X 10.10 Yosemite 經(jīng)2016-05-05macOS 10.12.2下PDF崩潰嚴(yán)重怎么回事 macOS 10.12.2下PDF崩潰的原因以
macOS 10.12.2更新后不少用戶發(fā)現(xiàn)一個(gè)問題,那就是自己更新以后并沒有改善問題,相反的是自己的PDF崩潰問題更加嚴(yán)重2017-01-04