自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一種引發(fā)固態(tài)硬盤(pán)映射表不正確的情境

存儲(chǔ) 存儲(chǔ)設(shè)備
基于用閃存為儲(chǔ)存的固態(tài)硬盤(pán)(Solid State Drive,SSD),與基于用磁性盤(pán)片為儲(chǔ)存的傳統(tǒng)硬盤(pán)(Hard Disk Drive,HDD)相比較,固態(tài)硬盤(pán)具有:(1)無(wú)噪音(2)耐震動(dòng)(3)數(shù)據(jù)讀寫(xiě)速度快(4)低耗電等等的優(yōu)勢(shì)。又隨著各家閃存制造商陸續(xù)推出更多更便宜且高容量的閃存內(nèi)存,在未來(lái)傳統(tǒng)硬盤(pán)被固態(tài)硬盤(pán)所取代將是趨勢(shì)。

基于用閃存為儲(chǔ)存的固態(tài)硬盤(pán)(Solid State Drive,SSD),與基于用磁性盤(pán)片為儲(chǔ)存的傳統(tǒng)硬盤(pán)(Hard Disk Drive,HDD)相比較,固態(tài)硬盤(pán)具有:(1)無(wú)噪音(2)耐震動(dòng)(3)數(shù)據(jù)讀寫(xiě)速度快(4)低耗電等等的優(yōu)勢(shì)。又隨著各家閃存制造商陸續(xù)推出更多更便宜且高容量的閃存內(nèi)存,在未來(lái)傳統(tǒng)硬盤(pán)被固態(tài)硬盤(pán)所取代將是趨勢(shì)。

然因閃存內(nèi)存不像磁性盤(pán)片具有可重復(fù)覆寫(xiě)的好處,因此固態(tài)硬盤(pán)裝置內(nèi)都需要執(zhí)行一個(gè)所謂的FTL(Flash Translation Layer)程序,以維持隨時(shí)都有閑置的區(qū)塊(free blocks)可以?xún)?chǔ)存新寫(xiě)入的數(shù)據(jù)。而在一個(gè)閑置區(qū)塊被用于儲(chǔ)存客戶(hù)端的寫(xiě)入數(shù)據(jù)時(shí),又必須檢查閑置區(qū)塊數(shù)量是否足夠。如果不足,則又需要進(jìn)行所謂的垃圾回收(Garbage Collection,GC)讓閑置區(qū)塊個(gè)數(shù),得以足夠以應(yīng)付未來(lái)從客戶(hù)端寫(xiě)入的新數(shù)據(jù)。

[[225279]]

我們知道,較早期的計(jì)算機(jī)文件系統(tǒng)(File System)對(duì)于被刪除的文件之處理,僅僅在文件配制表(File Allocation Table)上,將被刪除文件所使用的叢集(cluster),標(biāo)示成「未使用狀態(tài)」,這些叢集所相對(duì)應(yīng)的邏輯區(qū)塊地址(Logic Block Address,LBA)上所儲(chǔ)存之?dāng)?shù)據(jù)并未被移除,這樣的操作方式對(duì)可重復(fù)覆寫(xiě)的傳統(tǒng)硬盤(pán)而言是合理適當(dāng)?shù)?,但?duì)不可重復(fù)覆寫(xiě)固態(tài)硬盤(pán)而言卻是不適當(dāng)?shù)?,而且?huì)需要垃圾回收之處理。因此在較新ATAPI(ATA Packet Interface)命令規(guī)范標(biāo)準(zhǔn),或是NVMe(NVM express)規(guī)范標(biāo)準(zhǔn)里,都加入了數(shù)據(jù)集管理(Dataset Management)命令,讓較先進(jìn)的計(jì)算機(jī)文件系統(tǒng),可以對(duì)固態(tài)硬盤(pán)下達(dá)「將某些邏輯區(qū)塊地址上的數(shù)據(jù)丟棄」,以減少固態(tài)硬盤(pán)垃圾回收的處理。不但如此,數(shù)據(jù)集管理命令也降低了固態(tài)硬盤(pán)的寫(xiě)入放大值(Write Amplification Index),使得固態(tài)硬盤(pán)的使用壽命得以延長(zhǎng)。

然則,數(shù)據(jù)集管理命令為固態(tài)硬盤(pán)帶來(lái)了好處,但也帶來(lái)了不易被察覺(jué)的嚴(yán)重問(wèn)題-邏輯物理塊映射表不正確!底下讓我們來(lái)描述邏輯物理塊映射表不正確的問(wèn)題,是如何發(fā)生及問(wèn)題發(fā)生時(shí)的癥狀。

為了簡(jiǎn)化問(wèn)題的描述,我們假設(shè)

1 一個(gè)物理塊區(qū)塊擁有4個(gè)頁(yè)面

2 邏輯區(qū)塊地址(LBA) 和物理區(qū)塊地址(PBA) 的映射表,內(nèi)容為一個(gè)數(shù)對(duì),分別代表物理區(qū)塊碼(block number)與頁(yè)碼(page number),數(shù)對(duì)(0,0)則代表無(wú)數(shù)據(jù)

3 固態(tài)硬盤(pán)有16個(gè)邏輯區(qū)塊地址

因?yàn)殚W存內(nèi)存不具有「重復(fù)覆寫(xiě)」的特性,一個(gè)邏輯區(qū)塊地址的數(shù)據(jù),存放在閃存內(nèi)存的哪個(gè)位置是不固定的,因此固態(tài)硬盤(pán)里,皆存在著邏輯物理映射表(L2P Table)。這個(gè)映像表的功能,是讓FTL程序查出某個(gè)邏輯區(qū)塊地址之?dāng)?shù)據(jù)被儲(chǔ)存在閃存的哪個(gè)位置(包含閃存物理區(qū)塊碼(block number)、頁(yè)碼(page number)、偏移量(offset)等)。這一個(gè)映像表需要儲(chǔ)存一份在閃存內(nèi)存里,讓固態(tài)硬盤(pán)在斷電后再次供電運(yùn)作時(shí),才能得知***數(shù)據(jù)在哪里。對(duì)讀寫(xiě)速度要求高的固態(tài)硬盤(pán),會(huì)配置足夠的動(dòng)態(tài)隨機(jī)存取內(nèi)存(Dynamic Random Access Memory,DRAM)存放這個(gè)映像表,讓FTL程序可以更快速查詢(xún)或更新映射表。因此固態(tài)硬盤(pán)在開(kāi)始供電當(dāng)下,會(huì)將儲(chǔ)存在閃存內(nèi)存里的邏輯物理映射表讀到DRAM,如 Fig. 1 所示。(圖中,頁(yè)面標(biāo)示為 FFFFFFFF代表此頁(yè)面處于抹除狀態(tài);頁(yè)面標(biāo)示為 XXXXXXXX 代表此頁(yè)面曾經(jīng)被寫(xiě)入數(shù)據(jù)但事后被其他實(shí)體地址數(shù)據(jù)所取代或被數(shù)據(jù)集管理指令所丟棄而成為無(wú)效數(shù)據(jù))

接下來(lái),客戶(hù)端刪除文件,下達(dá)了數(shù)據(jù)集管理指令給固態(tài)硬盤(pán),指示將 LBA1~2的數(shù)據(jù)刪除,并且又下了寫(xiě)LBA13的指令。一般做法,固態(tài)硬盤(pán)將會(huì)執(zhí)行下列步驟(Fig. 2、Fig. 3 圖示說(shuō)明):

1. 將LBA1、2 在映射表 (DRAM) 里更新為 (0,0)

2. 要求一個(gè)閑置的物理塊區(qū)塊,假設(shè)取物理區(qū)塊4, 將LBA13的數(shù)據(jù)寫(xiě)入物理塊區(qū)4,更新LBA13的邏輯物理塊映像表格。

3. 發(fā)現(xiàn)閑置的物理塊區(qū)塊個(gè)數(shù)不足(少于3),啟動(dòng)垃圾回收,將物理區(qū)塊3上的有效數(shù)據(jù)(LBA3 數(shù)據(jù))寫(xiě)至物理區(qū)塊4,更新LBA3的邏輯物理塊映像表格,并將物理區(qū)塊3 回收為閑置塊(Free Block)。

如果在固態(tài)硬盤(pán)執(zhí)行垃圾回收之后,計(jì)算機(jī)系統(tǒng)出現(xiàn)不穩(wěn)狀況突然間失去電源供應(yīng),固態(tài)硬盤(pán)將在下次電源恢復(fù)時(shí),執(zhí)行下列步驟(Fig. 4、Fig. 5 圖式說(shuō)明):

1. 將儲(chǔ)存在閃存內(nèi)存里的邏輯物理塊映射表讀到DRAM。

2. 讀取區(qū)塊4每一頁(yè)面內(nèi)容,并根據(jù)頁(yè)面內(nèi)容所紀(jì)錄對(duì)應(yīng)的邏輯區(qū)塊地址,更改DRAM上的邏輯物理塊映射表。

比較 Fig. 5 與Fig. 3 映射表(DRAM) 的內(nèi)容會(huì)發(fā)現(xiàn),邏輯區(qū)塊地址1、2上的物理塊對(duì)應(yīng)地址有差異。也就是邏輯物理塊映射表的正確性以經(jīng)有錯(cuò)誤了(Fig. 5標(biāo)示為紅色部分)!

Fig. 5 的邏輯物理塊映射表顯示,邏輯區(qū)塊地址1、2數(shù)據(jù)存在于物理塊區(qū)塊3。實(shí)際上物理區(qū)塊3已經(jīng)是一個(gè)閑置區(qū)塊,不存在任何數(shù)據(jù)。這樣子的錯(cuò)誤映像對(duì)FTL程序而言是一種嚴(yán)重的錯(cuò)誤。事后,如果固態(tài)硬盤(pán)繼續(xù)使用下去,當(dāng)別的邏輯區(qū)塊數(shù)據(jù)寫(xiě)入物理區(qū)塊3之后,讀取邏輯區(qū)塊地址1、2會(huì)讀到別的邏輯區(qū)塊地址之?dāng)?shù)據(jù)。隨著時(shí)間的經(jīng)過(guò),不同時(shí)間讀又會(huì)有不同數(shù)據(jù)寫(xiě)入物理區(qū)塊3,讀取邏輯區(qū)塊地址1、2數(shù)據(jù)還會(huì)隨著時(shí)間的不同而改變?;蛟S讀者會(huì)問(wèn),既然邏輯區(qū)塊地址1、2的數(shù)據(jù)已經(jīng)被客戶(hù)端下達(dá)數(shù)據(jù)集管理指令刪除了,讀到甚么數(shù)據(jù)并不重要。但讀者要知道,一個(gè)儲(chǔ)存裝置必須要有數(shù)據(jù)完整(data integrity)的特性,讀取的數(shù)據(jù)如果會(huì)隨著時(shí)間的變動(dòng)而變動(dòng),該裝置就稱(chēng)不上擁有數(shù)據(jù)完整的特性。讀者也許還會(huì)續(xù)問(wèn),既然邏輯區(qū)塊地址1、2的數(shù)據(jù)已經(jīng)被客戶(hù)端下達(dá)數(shù)據(jù)集管理指令給刪除了,客戶(hù)端就不會(huì)再去讀取這些地址的數(shù)據(jù)了。要知道,客戶(hù)端系統(tǒng)不勝枚舉,客戶(hù)端的程序不會(huì)再去讀取這些地址的數(shù)據(jù)是無(wú)法保證的。例如儲(chǔ)存裝置被用于組成獨(dú)立硬盤(pán)冗余陣列(Redundant Array of Independent Disks, RAID), 其中一個(gè)硬盤(pán)發(fā)生了我們所描述的問(wèn)題,這些被數(shù)據(jù)集管理指令刪除的數(shù)據(jù)就會(huì)被讀取.

邏輯物理塊映射表與數(shù)據(jù)的一致性一直都是固態(tài)硬盤(pán)設(shè)計(jì)上存在的問(wèn)題。市場(chǎng)上充斥著成千成百的固態(tài)硬盤(pán)產(chǎn)品,對(duì)那些不曾思考過(guò)這個(gè)問(wèn)題的設(shè)計(jì)商,質(zhì)量堪憂。一般的固態(tài)硬盤(pán)買(mǎi)家多以訪問(wèn)速度快慢做為購(gòu)買(mǎi)的考慮因素。但聰明的讀者在選購(gòu)固態(tài)硬盤(pán)時(shí)應(yīng)該花點(diǎn)時(shí)間了解該產(chǎn)品的設(shè)計(jì)商,是否如大心電子,有固態(tài)硬盤(pán)領(lǐng)先的技術(shù)質(zhì)量。

責(zé)任編輯:武曉燕 來(lái)源: ssdfans
相關(guān)推薦

2013-09-09 10:51:07

CSSIE瀏覽器

2023-03-16 23:54:19

服務(wù)器vmtoolsd組件

2012-10-15 18:19:25

打印機(jī)打印機(jī)安裝

2011-08-17 13:18:39

Oracle 10g配SID

2020-12-23 10:10:23

Pythonweb代碼

2022-06-22 09:44:41

Python文件代碼

2022-07-07 10:33:27

Python姿勢(shì)代碼

2020-12-09 10:15:34

Pythonweb代碼

2018-09-05 12:10:07

固態(tài)硬盤(pán)SSD

2021-03-18 16:05:20

SSD存儲(chǔ)故障

2018-01-12 08:13:19

固態(tài)硬盤(pán)機(jī)械

2024-09-09 09:32:18

2023-03-28 07:55:22

固態(tài)硬盤(pán)機(jī)械硬盤(pán)芯片

2016-01-06 10:06:17

編程語(yǔ)言工作選擇

2023-12-29 15:28:18

磁盤(pán)固態(tài)硬盤(pán)

2013-05-24 10:13:42

大數(shù)據(jù)IBM

2009-02-06 10:02:18

固態(tài)硬盤(pán)SSDIntel

2017-10-16 14:30:01

固態(tài)硬盤(pán)機(jī)械

2017-01-22 16:35:02

iOSBlockCallback

2012-01-17 11:02:39

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)