手機(jī)訪問asp網(wǎng)站福州百度代理
什么是Trim?
Trim又叫 Disable Delete Notify。當(dāng)系統(tǒng)刪除某個文件時(shí)候,它只是簡單的在邏輯數(shù)據(jù)表內(nèi)把存儲要刪除的數(shù)據(jù)的位置標(biāo)記為可用而已。使用機(jī)械硬盤的系統(tǒng)根本就不需要向存儲設(shè)備發(fā)送任何有關(guān)文件刪除的消息,因?yàn)樵趯?#xff0c;系統(tǒng)可以隨時(shí)把新數(shù)據(jù)直接覆蓋到無用的數(shù)據(jù)上。固態(tài)硬盤的情況就不同,當(dāng)系統(tǒng)準(zhǔn)備把新數(shù)據(jù)要寫入那個位置的時(shí)候,固態(tài)硬盤才意識到原來這寫數(shù)據(jù)已經(jīng)被刪除了!(無用數(shù)據(jù))。
當(dāng)Windows識別到SSD并確認(rèn)SSD支持Trim后,在刪除數(shù)據(jù)時(shí),會不向硬盤通知刪除指令,只使用Volume Bitmap來記住這里的數(shù)據(jù)已經(jīng)刪除。 Volume Bitmap只是一個磁盤快照,其建立速度比直接讀寫硬盤去標(biāo)記刪除區(qū)域要快得多。這一步就已經(jīng)省下一大筆時(shí)間了。然后再是寫入數(shù)據(jù)的時(shí)候,由于NAND閃存保存數(shù)據(jù)是純粹的數(shù)字形式,因此可以直接根據(jù)Volume Bitmap的情況,向快照中已刪除的區(qū)塊寫入新的數(shù)據(jù),而不用花時(shí)間去擦除原本的數(shù)據(jù)。以上就是Trim的原理以及真正作用。
在新一代操作系統(tǒng)中,例如Windows 7/Windows Server 2008 R2/Linux 2.6.33/FreeBSD 8.2/Open Solaris/Mac OS X Lion,它們都加入對Trim指令的支持。這可以讓操作系統(tǒng)在刪除邏輯表中刪除邏輯扇區(qū)地址的同時(shí)通知固態(tài)硬盤某些數(shù)據(jù)已經(jīng)無用了。
TRIM的先進(jìn)性在于它可以讓固態(tài)硬盤在進(jìn)行垃圾回收的時(shí)候跳過移動無用數(shù)據(jù)的過程,從而不再用重新寫入這些無用的數(shù)據(jù),達(dá)到節(jié)省時(shí)間的目的 。 這也會減少閃存刪除數(shù)據(jù)的次數(shù),從而在寫入過程中實(shí)現(xiàn)高性能。固態(tài)硬盤也不需要立即刪除或者“垃圾回收”這些TRIM指令告知的位置了,它只是先標(biāo)記這些位置的數(shù)據(jù)為“無用”即可。
支持TRIM的系統(tǒng),在用戶寫入數(shù)據(jù)時(shí)并沒有不同。但是當(dāng)用戶刪除文件C的時(shí)候,因?yàn)橄到y(tǒng)支持了TRIM指令,固態(tài)硬盤立刻就把數(shù)據(jù)標(biāo)記為“無用”,從而為接下來的垃圾回收做準(zhǔn)備。原來存放文件C的空間,固態(tài)硬盤把其看做是可用空間。“動態(tài)預(yù)留空間”意味著固態(tài)硬盤在執(zhí)行垃圾回收的過程中擁有更多的可用空間,從而整體提高性能。
在第三列中,用戶寫入新的文件E。盡管現(xiàn)在固態(tài)硬盤與不支持TRIM的硬盤閑置空間相同。區(qū)別就在于:TRIM支持的固態(tài)硬盤知道哪些數(shù)據(jù)是無用的,在垃圾回收的時(shí)候,這些無用數(shù)據(jù)可以被看成是空閑空間,從而避免把無用數(shù)據(jù)移動到其他塊中。
下面是不支持TRIM指令SSD的工作過程
可以看到當(dāng)向上面復(fù)寫E的時(shí)候,SSD才會知道C需要刪除(而不是在OS刪除C的時(shí)候)。所以在此之前如果發(fā)生GC的話,C還是需要被移動的。雖然C對OS來說已經(jīng)是無用的,可是SSD設(shè)備本身卻不知道。如果支持TRIM指令的話(如下圖),OS就可以標(biāo)記C刪除,并且通知SSD設(shè)備C已經(jīng)刪除,這樣每次GC就就不用在移動C,減少數(shù)據(jù)寫入量。
這將會產(chǎn)生三大優(yōu)點(diǎn): 1.?降低寫入放大。更少的數(shù)據(jù)被重寫,更多的空閑空間為垃圾回收所利用。更多的空間可用也意味著不需要重新寫入更多的數(shù)據(jù)。
2.?更高的吞吐量。支持了TRIM指令,就意味著在垃圾回收階段需要移動的數(shù)據(jù)表少,固態(tài)硬盤性能就會提升。固態(tài)硬盤吞吐量的瓶頸在于閃存。固態(tài)硬盤的最快寫入速度就是閃存所能支持的最快寫入速度。在執(zhí)行垃圾回收過程中,由于涉及到數(shù)據(jù)的移動和寫入,固態(tài)硬盤不得不要停止一些主控的數(shù)據(jù)傳輸。這也是為什么固態(tài)硬盤知道無用數(shù)據(jù)的優(yōu)點(diǎn)所在,至少在垃圾回收階段,它這些數(shù)據(jù)不在需要移動,從而節(jié)省帶寬。
3.?改善耐用性。由于不在需要重新寫入無用數(shù)據(jù),這樣可以減少固態(tài)硬盤的實(shí)際寫入次數(shù)。
注意:目前TRIM并不能正常工作在RAID環(huán)境中。這是因?yàn)槟壳癛AID驅(qū)動一般都不支持TRIM。當(dāng)更多的RAID廠商開始支持RAID TRIM,我們期待TRIM無亂在RAID還是正常環(huán)境下都能夠?yàn)橛脩魩硪嫣?
如何知道您的電腦里是否已開啟Trim:●點(diǎn)擊開始菜單,在搜索欄中輸入CMD
●在搜索結(jié)果的圖標(biāo)上右鍵單擊,選擇以管理員權(quán)限運(yùn)行
●輸入“fsutil behavior query DisableDeleteNotify”
●如果返回值是0,則代表您的TRIM處于開啟狀態(tài)
●如果返回值是1,則代表您的TRIM處于關(guān)閉狀態(tài)
當(dāng)Windows識別到SSD并確認(rèn)SSD支持Trim后,在刪除數(shù)據(jù)時(shí),會不向硬盤通知刪除指令,只使用Volume Bitmap來記住這里的數(shù)據(jù)已經(jīng)刪除。 Volume Bitmap只是一個磁盤快照,其建立速度比直接讀寫硬盤去標(biāo)記刪除區(qū)域要快得多。這一步就已經(jīng)省下一大筆時(shí)間了。然后再是寫入數(shù)據(jù)的時(shí)候,由于NAND閃存保存數(shù)據(jù)是純粹的數(shù)字形式,因此可以直接根據(jù)Volume Bitmap的情況,向快照中已刪除的區(qū)塊寫入新的數(shù)據(jù),而不用花時(shí)間去擦除原本的數(shù)據(jù)。以上就是Trim的原理以及真正作用。
在新一代操作系統(tǒng)中,例如Windows 7/Windows Server 2008 R2/Linux 2.6.33/FreeBSD 8.2/Open Solaris/Mac OS X Lion,它們都加入對Trim指令的支持。這可以讓操作系統(tǒng)在刪除邏輯表中刪除邏輯扇區(qū)地址的同時(shí)通知固態(tài)硬盤某些數(shù)據(jù)已經(jīng)無用了。
TRIM的先進(jìn)性在于它可以讓固態(tài)硬盤在進(jìn)行垃圾回收的時(shí)候跳過移動無用數(shù)據(jù)的過程,從而不再用重新寫入這些無用的數(shù)據(jù),達(dá)到節(jié)省時(shí)間的目的 。 這也會減少閃存刪除數(shù)據(jù)的次數(shù),從而在寫入過程中實(shí)現(xiàn)高性能。固態(tài)硬盤也不需要立即刪除或者“垃圾回收”這些TRIM指令告知的位置了,它只是先標(biāo)記這些位置的數(shù)據(jù)為“無用”即可。
支持TRIM的系統(tǒng),在用戶寫入數(shù)據(jù)時(shí)并沒有不同。但是當(dāng)用戶刪除文件C的時(shí)候,因?yàn)橄到y(tǒng)支持了TRIM指令,固態(tài)硬盤立刻就把數(shù)據(jù)標(biāo)記為“無用”,從而為接下來的垃圾回收做準(zhǔn)備。原來存放文件C的空間,固態(tài)硬盤把其看做是可用空間。“動態(tài)預(yù)留空間”意味著固態(tài)硬盤在執(zhí)行垃圾回收的過程中擁有更多的可用空間,從而整體提高性能。
在第三列中,用戶寫入新的文件E。盡管現(xiàn)在固態(tài)硬盤與不支持TRIM的硬盤閑置空間相同。區(qū)別就在于:TRIM支持的固態(tài)硬盤知道哪些數(shù)據(jù)是無用的,在垃圾回收的時(shí)候,這些無用數(shù)據(jù)可以被看成是空閑空間,從而避免把無用數(shù)據(jù)移動到其他塊中。
下面是不支持TRIM指令SSD的工作過程

可以看到當(dāng)向上面復(fù)寫E的時(shí)候,SSD才會知道C需要刪除(而不是在OS刪除C的時(shí)候)。所以在此之前如果發(fā)生GC的話,C還是需要被移動的。雖然C對OS來說已經(jīng)是無用的,可是SSD設(shè)備本身卻不知道。如果支持TRIM指令的話(如下圖),OS就可以標(biāo)記C刪除,并且通知SSD設(shè)備C已經(jīng)刪除,這樣每次GC就就不用在移動C,減少數(shù)據(jù)寫入量。

這將會產(chǎn)生三大優(yōu)點(diǎn): 1.?降低寫入放大。更少的數(shù)據(jù)被重寫,更多的空閑空間為垃圾回收所利用。更多的空間可用也意味著不需要重新寫入更多的數(shù)據(jù)。
2.?更高的吞吐量。支持了TRIM指令,就意味著在垃圾回收階段需要移動的數(shù)據(jù)表少,固態(tài)硬盤性能就會提升。固態(tài)硬盤吞吐量的瓶頸在于閃存。固態(tài)硬盤的最快寫入速度就是閃存所能支持的最快寫入速度。在執(zhí)行垃圾回收過程中,由于涉及到數(shù)據(jù)的移動和寫入,固態(tài)硬盤不得不要停止一些主控的數(shù)據(jù)傳輸。這也是為什么固態(tài)硬盤知道無用數(shù)據(jù)的優(yōu)點(diǎn)所在,至少在垃圾回收階段,它這些數(shù)據(jù)不在需要移動,從而節(jié)省帶寬。
3.?改善耐用性。由于不在需要重新寫入無用數(shù)據(jù),這樣可以減少固態(tài)硬盤的實(shí)際寫入次數(shù)。
注意:目前TRIM并不能正常工作在RAID環(huán)境中。這是因?yàn)槟壳癛AID驅(qū)動一般都不支持TRIM。當(dāng)更多的RAID廠商開始支持RAID TRIM,我們期待TRIM無亂在RAID還是正常環(huán)境下都能夠?yàn)橛脩魩硪嫣?
如何知道您的電腦里是否已開啟Trim:●點(diǎn)擊開始菜單,在搜索欄中輸入CMD
●在搜索結(jié)果的圖標(biāo)上右鍵單擊,選擇以管理員權(quán)限運(yùn)行
●輸入“fsutil behavior query DisableDeleteNotify”
●如果返回值是0,則代表您的TRIM處于開啟狀態(tài)
●如果返回值是1,則代表您的TRIM處于關(guān)閉狀態(tài)
更多精彩內(nèi)容,敬請關(guān)注微信公眾號: 存儲隨筆,Memory-logger.