【存储知识学习】第三章磁盘原理与技术3.10 固态存储介质和固态硬盘-《大话存储》阅读笔记
3.10 固態存儲介質和固態硬盤
3.10.1 SSD固態硬盤的硬件組成
SSD是一種利用Flash芯片或者DRAM芯片作為數據永久存儲的硬盤。
磁盤使用磁粒子區域來保存1或者0,芯片用電荷來表示。充滿電表示0,放電后表示1。浮動門(Floating Gate ,FG)的名稱也由此而來,Cell是利用FG中的電勢值來與閥值對比從而判斷其表示1或者0的。每個Cell串是由多個Cell串聯而成的,每個Cell串每次只能讀寫其中一個Cell,多個串是由多個Cell串聯而成的,每個Cell串每次只能讀寫其中一個Cell,多個Cell串并聯則可以并行讀寫多位數據。通常一個Page中的所有位中的每個位均位于一個Cell串相同的位置上,那么對于一個使用2122B/page的芯片來講,就需要16896個cell串,需要16896條串聯導線。字線和串線組成二維矩陣。
如下圖所示,為一片16GB容量的Flash黁嗎的邏輯方框圖。每4314x8=34512個cell邏輯上形成一個Page,每個Page中可以存放4KB的內容和218B的ECC校驗數據,Page也是Flash芯片IO的最小單位,每128個Page組成一個Block,每2048個Block組成一個區域(Plane),一整片Flash芯片由兩個區域組成,一個區域存儲奇數序號的Block,另一個則存儲偶數序號的Block。兩個Palne也可以并行操作。
3.10.2 從Flash芯片讀取數據的過程
SSD的IO最小單位為1個Page。所以,對于NAND Flash,通過"強行導通所有未被選中的Cel
l" AND "檢測位線的通斷狀態" = "被選中的Cell的通斷狀態" NOT 被選中的Cell的通斷狀態 = "位線的1、0值" 把整個Page的1或者0傳輸到芯片外部,放置于SSD 的RAM Buffre中保存,這就完成了一個Page內容的讀出。
3.10.3?從Flash芯片寫入數據的過程
對Flash芯片的寫入由一些特殊的步驟。Flash芯片遙控器再修改一個Cell中的位的時候,在修改之前,必須線擦除掉這個Cell。這個擦除動作就是將一大片的連續的Cell一下子全部放電,這一片連續的Cell就是一個Block。每次只能擦除一整個Block或者多個Block,將其中所有的Cell變為1狀態。卻不能擦除某個或者某段Page,或者單個或者多個Cell。這一點是造成后面將要敘述的SSD的致命缺點的一個根本原因。Erase完成后,待寫入數據恰好為1時,不做操作。,待寫入數據為0時,對Cell中的FG進行充電,充電之后,Cell的狀態從1變為0.完成寫入。這個寫0動作又叫做Programm。SSD會以Page為單位進行寫入操作,寫完一個Page,再寫下一個Page。
3.10.4 Flash 芯片的通病
1.Erase Befor Overwrite
如果僅僅需要更改某個Block中的某個Page,那么就需要Erase整個Block,增大了寫開銷,這是緩存很大的原因。
2.Wear Off?
Cell 容易損壞,損壞的Cell將拖累這個Cell所在的整個Page,因為SSD尋址和IO的最小單位為Page,損壞的Page對應的邏輯地址將被重定向映射到其他完好的預留Page
3.10.5 NAND與NOR
NAND 表示 非與,NOR 表示非或
3.10.6 SSD五劑良藥
1.透支體力,拆東墻補西墻
每次寫,都寫到SSD中的Free Space中。SSD將寫操作,平衡到所有可能的Block中,降低單位時間內每個Block的擦寫次數。避免Wear Off過快的算法稱為Wear Leveling,損耗平衡算法。
2.定期清除垃圾
從文件系統層面掃描垃圾,SSD廠商提供一個Wiper工具,這個工具掃描文件系統內不用的邏輯地址。
3.持續清除垃圾
TRIM是ATA指令標準中的一個功能指令,可以讓文件系統在刪除某個文件之后,實時通知SSD回收對應空間。
4.精神修煉提升內功
Delay Write 對于針對同一個地址的IO,直接將后者的寫覆蓋前者,當然要保證這兩個寫操作之間沒有讀。
Combine Write整合小IO合并為大IO
5.救命稻草有備無患
為了防止文件系統將數據寫滿的極端情況,SSD干脆預留一部分備用空間用于重定向寫,這部分空間并不告訴操作系統
?
?
?
?
?
總結
以上是生活随笔為你收集整理的【存储知识学习】第三章磁盘原理与技术3.10 固态存储介质和固态硬盘-《大话存储》阅读笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ceph知识树
- 下一篇: 分布式存储的集群可靠性计算(ceph)