成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

ssd存儲原理是什么

這篇文章主要介紹“ssd存儲原理是什么”,在日常操作中,相信很多人在ssd存儲原理是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”ssd存儲原理是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

10年積累的網(wǎng)站制作、成都網(wǎng)站設計經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有迪慶州免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

眾所周知SSD的讀寫速度遠比hdd磁盤要快,理解ssd的工作原理使我們開發(fā)處高效儲存方案。
 

linux 相關指令

fstrim --fstab --verbose ## 回收(discard)文件系統(tǒng)上對應磁盤未使用的塊
blkdiscard /dev/nvme1n1  ## 回收并擦除(discard)整個SSD塊設備
wipefs -a /dev/nvme1n1   ## 擦除(erase)文件系統(tǒng)的簽名

fstrim

fstrim命令實際可以視為手動對SSD磁盤下發(fā)TRIM指令。使用-v參數(shù)可以直接查看TRIM回收擦除空間的大小。fstrim是針對已掛載的文件系統(tǒng)的SSD分區(qū)

root@xxxx:~# fstrim --help

Usage:
 fstrim [options] <mount point>Discard unused blocks on a mounted filesystem.

Options:
 -a, --all           trim all supported mounted filesystems
 -A, --fstab         trim all supported mounted filesystems from /etc/fstab
 -o, --offset <num>  the offset in bytes to start discarding from
 -l, --length <num>  the number of bytes to discard
 -m, --minimum <num> the minimum extent length to discard
 -v, --verbose       print number of discarded bytes
 -n, --dry-run       does everything, but trim

 -h, --help          display this help
 -V, --version       display version

For more details see fstrim(8).

以下是執(zhí)行后返回的結果,以NVMe 為列

/home: 32.5 GiB (313011310592 bytes) trimmed on /dev/mapper/gat204--vg-root
/boot/efi: 102.2 MiB (607301632 bytes) trimmed on /dev/nvme1n1p1
/boot: 732.5 MiB (825778176 bytes) trimmed on /dev/nvme1n1p2
/: 60.7 GiB (65154805760 bytes) trimmed on /dev/mapper/gat204--vg-swap_1

ubuntu與debian的systemd 服務可以定時執(zhí)行fstrim,省去手寫crontab腳本工作。

systemctl status fstrim.timer ##查詢服務狀態(tài)
systemctl enable fstrim.timer ##開啟定時TRIM功能

blkdiscard

blkdiscard用于擦除(discard)SSD設備扇區(qū),和fstrim不同這條命令直接用在塊設備上,默認擦除整個塊設備的所有扇區(qū)。

root@xxxx:~# blkdiscard -help

Usage:
 blkdiscard [options] <device>Discard the content of sectors on a device.

Options:
 -o, --offset <num>  offset in bytes to discard from
 -l, --length <num>  length of bytes to discard from the offset
 -p, --step <num>    size of the discard iterations within the offset
 -s, --secure        perform secure discard
 -z, --zeroout       zero-fill rather than discard
 -v, --verbose       print aligned length and offset

 -h, --help          display this help
 -V, --version       display version

For more details see blkdiscard(8).
root@ECSab169d:~# man blkdiscard

擦除(discard)成功后,沒有返回結果

root@xxxx:~# blkdiscard /dev/nvme1n1
root@xxxx:~#

wipefs

wipefs是linux自帶的程序,用來擦除(erase)文件系統(tǒng)的簽名,不會清空文件系統(tǒng)或設備中的任何其他數(shù)據(jù)。默認情況下, wipefs 不會擦除非整個磁盤設備上的嵌套分區(qū)表。為此,需要—force選項。

root@gat204:~# wipefs --help

Usage:
 wipefs [options] <device>Wipe signatures from a device.

Options:
 -a, --all           wipe all magic strings (BE CAREFUL!)
 -b, --backup        create a signature backup in $HOME
 -f, --force         force erasure
 -i, --noheadings    don't print headings
 -J, --json          use JSON output format
 -n, --no-act        do everything except the actual write() call
 -o, --offset <num>  offset to erase, in bytes
 -O, --output <list> COLUMNS to display (see below)
 -p, --parsable      print out in parsable instead of printable format
 -q, --quiet         suppress output messages
 -t, --types <list>  limit the set of filesystem, RAIDs or partition tables
 -h, --help          display this help
 -V, --version       display version

Available output columns:
     UUID  partition/filesystem UUID
    LABEL  filesystem LABEL
   LENGTH  magic string length
     TYPE  superblok type
   OFFSET  magic string offset
    USAGE  type description
   DEVICE  block device name

For more details see wipefs(8).

檢查SSD是否支持TRIM

##可以通過 /sys/block 下的信息來判斷 SSD 支持 TRIM, discard_granularity 非 0 表示支持。
# cat /sys/block/sda/queue/discard_granularity
0
# cat /sys/block/nvme0n1/queue/discard_granularity
512

存儲元器件(閃存顆粒類別)

SSD的儲存是NAND-Flash閃存顆粒,分為SLC、MLC和QLC四種??梢源致缘匕验W存顆粒理解成是一個電容加上電壓計的組合。一個電容能存放一個比特的數(shù)據(jù),電壓計使電容能區(qū)分不同電壓,不同的電壓能存放更多的比特數(shù)據(jù)。

ssd存儲原理是什么
 

SLC(Single-Level Cell): 每個Cell單元存儲1bit信息,也就是只有0、1兩種電壓變化,結構簡單,電壓控制也快速,反映出來的特點就是壽命長,性能強,P/E壽命在1萬到10萬次之間,但缺點就是容量低而成本高.

MLC(Multi-Level Cell): 每個cell單元存儲2bit信息,需要更復雜的電壓控制,有00,01,10,11四種變化,這也意味著寫入性能、可靠性能降低了。其P/E壽命根據(jù)不同制程在3000-5000次不等.

TLC(Triple-Level Cell):每個cell單元存儲3bit信息,電壓從000到001有8種變化,容量比MLC再次增加1/3,成本更低,但是架構更復雜,P/E編程時間長,寫入速度慢,P/E壽命也降至1000-3000次,部分情況會更低.壽命短只是相對而言的,通常來講,經(jīng)過重度測試的TLC顆粒正常使用5年以上是沒有問題的.

QLC(Quad-Level Cell):QLC或者可以叫4bit MLC,電壓有16種變化,但是容量能增加33%,就是寫入性能、P/E壽命與TLC相比會進一步降低。具體的性能測試上,美光有做過實驗。讀取速度方面,SATA接口中的二者都可以達到540MB/S,QLC表現(xiàn)差在寫入速度上,因為其P/E編程時間就比MLC、TLC更長,速度更慢,連續(xù)寫入速度從520MB/s降至360MB/s,隨機性能更是從9500 IOPS降至5000 IOPS,損失將近一半.
ssd存儲原理是什么

這四類當中,SLC的性能最優(yōu),價格超高;MLC性能夠用,價格適中為消費級SSD應用主流;TLC綜合性能最低,價格最便宜,但可以通過高性能主控、主控算法來彌補、提高TLC閃存的性能;QLC出現(xiàn)的時間很早,價格便宜,容量大。

P/E以及其SSD底層儲存結構

P指的是Program(編程),E指的是Erease (擦除), 閃存完全擦寫一次可以稱為1次P/E,因此閃存的壽命以P/E為單位。和HDD機械硬盤不同,HDD的數(shù)據(jù)是可以覆寫的(Overwrite),而SSD在寫入數(shù)據(jù)前必須先進行擦除(erase),一般在格式化文件系統(tǒng)步驟或者SSD出廠配置的過程中,SSD已進行了全盤擦除(erase),因此SSD的首次寫入數(shù)據(jù)是直接編程。

SSD 在閃存單元中存取數(shù)據(jù)時有 pageblock的概念。SSD 被劃分成很多 block, 而 block 被劃分成很多 page。

ssd存儲原理是什么

NAND-Flash讀寫流程

Page是NAND-Flash單次讀寫單位,大小一般為4K或者4K字節(jié)的倍數(shù),寫操作只能寫到空的 page,而清除數(shù)據(jù)(Erase) 是以 塊(block) 為單位的。塊的擦除次數(shù)有壽命限制,超限制就會變成壞塊。

ssd存儲原理是什么

用戶對SSD的寫入數(shù)據(jù)操作可以分為兩種類型

1.原來SSD磁盤上沒有數(shù)據(jù),寫入數(shù)據(jù)。

2.SSD磁盤上有數(shù)據(jù),對該數(shù)據(jù)進行修改(包括刪除)。

前者只需把數(shù)據(jù)直接寫入到空白頁即可,后者則是read-modify-write方式操作,讀取原有page的內容到緩存中并進行更新,最后寫入到其他空的page,原有的page置為無效頁。

可以想象對文件的持續(xù)反復的修改,將會產(chǎn)生大量的無效頁,這就需要“垃圾回收”(Garbage Collection-gc)機制來回收這些無效頁,否則可以寫入空間越來越小。

FTL 和磨損均衡

SSD的主控執(zhí)行磨損均衡(Wear-Leveling)策略,使SSD磁盤各個塊的擦除次數(shù)均勻分攤到各個塊上。就像內存MMU一樣,SSD內部使用閃存轉換層(FTL)存放了邏輯塊地址(Logical Block Address,簡稱 LBA)到物理塊地址(Physical Block Address,簡稱 PBA)的映射。操作系統(tǒng)訪問的硬盤地址,其實都是邏輯地址。只有通過 FTL 轉換之后,才會變成實際的物理地址,找到對應的塊進行訪問。操作系統(tǒng)本身,不需要去考慮塊的磨損程度,只要和操作機械硬盤一樣來讀寫數(shù)據(jù)就好了。

ssd存儲原理是什么

“垃圾回收”機制

寫入放大(write amplification)

上文提及過數(shù)據(jù)的反復修改會產(chǎn)生大量的無效頁,一旦整個塊(block)的空間不足以寫入數(shù)據(jù),SSD會將這個塊(block)的數(shù)據(jù)讀入到緩存中,擦除這個塊(block)所中的頁,然后再把緩存中已更新的數(shù)據(jù)寫入進去。這種read-erase-modify-write過程,就好比寫入的數(shù)據(jù)可能只有一個頁4KB,但實際要擦除并且寫N個頁,稱之為寫入放大。

寫入放大的倍數(shù)越大,寫入的速度就越慢。

ssd存儲原理是什么

TRIM指令
TRIM是SSD的ATA-8指令,解決寫入放大的關鍵。

文件系統(tǒng)在修改或者刪除過程中,發(fā)送給通知給SSD記錄產(chǎn)生的無效頁,間隔一定時間再統(tǒng)一回收擦除所有無效頁,擦除更新無效頁所在的塊(block)。

一方面預留足夠多的空間,避免因空間不足產(chǎn)生寫入放大的情況。另一方面,使用TRIM,在IO閑時回收擦除無效頁,這樣有效保證SSD的性能以及提高壽命。

discard與TRIM的區(qū)別

在linux術語中,discard指的就是TRIM

不建議使用linux系統(tǒng)默認的TRIM功能

TRIM功能有兩種方式啟動,一種是連續(xù)TRIM,就是直接在文件系統(tǒng)回收塊的時候直接發(fā)TRIM命令,這種方式對性能影響比較大,在fstab掛載的時候把default修改成discard。另外一種是定期執(zhí)行fstrim批量進行TRIM操作,這樣避免平時的性能影響,不過fstrim的執(zhí)行時機要選好,畢竟批量TRIM的時候會對其它任務性能影響較大。

根據(jù)文章《Ubuntu Doesn’t TRIM SSDs By Default: Why Not and How To Enable It Yourself》提及到

“The kernel implementation of realtime trim in 11.2, 11.3, and 11.4 is not optimized. The spec. calls for trim supporting a vectorized list of trim ranges, but as of kernel 3.0 trim is only invoked by the kernel with a single discard / trim range and with current mid 2011 SSDs this has proven to cause a performance degradation instead of a performance increase. There are few reasons to use the kernels realtime discard support with pre-3.1 kernels. It is not known when the kernels discard functionality will be optimized to work beneficially with current generation SSDs.” [Source]

利用內核方式的discard 方式無法感知對SSD當前性能的影響。

實踐

使用fio測試nvme裸設備

使用fio對裸設備直接進行randwrite測試,在超過30分鐘速度由400MiB/s降低至80MiB/s 分析原因得出SSD觸發(fā)了放大寫現(xiàn)象,并且由于沒有掛載文件系統(tǒng),無法使用fstrim手動回收空間(可以理解成,在沒有文件系統(tǒng)標記下,SSD也不知道哪些是無效頁),再次進行fio測試速度依然是80MiB/s。使用blkdiscard進行全盤擦除后,速度恢復正常。

參考文獻

《Trim命令》 wiki百科

《淺談分布式存儲之SSD基本原理》滴滴云

《Linux 下啟用 SSD TRIM 功能》Louis

結束語

當使用fio直接ssd磁盤進行寫入測試后,對磁盤使用blkdiscard可恢復原來的速度。

到此,關于“ssd存儲原理是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

名稱欄目:ssd存儲原理是什么
文章源于:http://jinyejixie.com/article24/pgseje.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)App開發(fā)、服務器托管、網(wǎng)站導航網(wǎng)站策劃、網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
贵阳市| 敦化市| 老河口市| 宁德市| 佛坪县| 城步| 基隆市| 青浦区| 泊头市| 延安市| 从化市| 无锡市| 钦州市| 博兴县| 石泉县| 朝阳市| 镇原县| 太仆寺旗| 日喀则市| 依安县| 娄底市| 灵石县| 盱眙县| 丽水市| 乐陵市| 福安市| 蒙城县| 伊春市| 阿巴嘎旗| 铁岭市| 东宁县| 肥城市| 永胜县| 宾阳县| 繁昌县| 辽中县| 广河县| 河源市| 穆棱市| 麟游县| 上林县|