本文主要介紹硬盤的意思是指啥(硬盤是什么東東),下面一起看看硬盤的意思是指啥(硬盤是什么東東)相關(guān)資訊。
不得不說,網(wǎng)上有很多關(guān)于磁盤各種概念的說法,看了半天差點(diǎn)暈倒。最后是總結(jié)總結(jié),基于我的認(rèn)知基本理順了。
順序和隨機(jī)
磁盤的順序訪問和隨機(jī)訪問是如何定義的?如果一次io操作開始時(shí)的邏輯塊地址(lba)緊挨著最后一次io操作結(jié)束時(shí)的lba,則為順序訪問,否則為隨機(jī)訪問。
下圖更生動(dòng)( . wikipedia . org/wiki/iops)。
邏輯地址是程序中識別的塊地址,編號順序是遞增的。除了lba,還有pba(物理塊地址),一般邏輯和物理地址會(huì)有對應(yīng)關(guān)系。物理地址是數(shù)據(jù)在磁盤上的實(shí)際地址。
throughput
吞吐量是指從磁盤順序讀取數(shù)據(jù)時(shí)所能達(dá)到的最大傳輸速度,通常以mb/s為單位,吞吐量基本上是用來衡量大量數(shù)據(jù)的傳輸效率。這應(yīng)該是單線程統(tǒng)計(jì)。
latency
它是一個(gè)耗時(shí)的操作,一般指的是從發(fā)送請求到返回結(jié)果的時(shí)間。從磁盤的角度來看,不僅包括定位數(shù)據(jù),還包括數(shù)據(jù)傳輸時(shí)間。延遲本身并不指定要訪問多少數(shù)據(jù)。
iops
iops是每秒執(zhí)行的操作數(shù),通常用來衡量隨機(jī)訪問。各種硬盤廠商都宣稱硬盤的iops相當(dāng)高,但實(shí)際使用中并非如此。因?yàn)檫@個(gè)東西取決于延遲和工作負(fù)載,比如一個(gè)操作訪問的數(shù)據(jù)量,
等待隊(duì)列中的讀寫請求數(shù)量等。1998年,英特爾發(fā)布了一款名為iometer的開源iops測量工具,稱你應(yīng)該停止自己玩。我們都用過這個(gè)比較,也就是我們定了一個(gè)基準(zhǔn),現(xiàn)在一般都用這個(gè)衡量。
hdd
hdd就是硬盤驅(qū)動(dòng)器,硬盤驅(qū)動(dòng)器,也就是普通的機(jī)械硬盤,通過磁頭讀寫數(shù)據(jù)。硬盤的隨機(jī)存取和順序存取是有區(qū)別的。
把磁盤想象成一個(gè)光盤,上面有一個(gè)磁頭用來寫東西,就像筆頭一樣。要在一個(gè)位置寫,你需要先把磁頭移到那個(gè)位置。這個(gè)操作叫做seek(旋轉(zhuǎn)查找),然后按順序?qū)懭霐?shù)據(jù)。
寫完數(shù)據(jù)后,磁頭自動(dòng)向后移動(dòng),如果繼續(xù)在旁邊寫,就不需要seek了。
比如以一個(gè)漢字為單位,然后依次寫一句“你好,小朋友”只需要把頭seek移動(dòng)到要寫一次“小”的位置,然后再寫“小”。
接下來,只需要在后面一個(gè)個(gè)寫上“你好,我的孩子”。這些單詞都存在于磁盤上。隨機(jī)書寫意味著將這些單詞分開存儲,而不是緊挨著存儲。則需要6次尋道和6次寫入。
順序?qū)懭肟偸潜入S機(jī)寫入好,因?yàn)殡S機(jī)寫入需要多五倍的尋道時(shí)間。
一塊hdd的尋道耗時(shí)是10ms,吞吐量是100mb/s,即每秒可以寫入100mb的數(shù)據(jù)。那么以1kb為單位,純寫的1kb數(shù)據(jù)只需要10us。
是seek的1/1000。你可以看到seek非常不友好。
因?yàn)閔dd可以覆蓋,lba和pba是一一對應(yīng)的,連續(xù)的邏輯地址也對應(yīng)連續(xù)的物理地址,所以隨機(jī)存取和順序存取是有區(qū)別的。
ssd
ssd 是固態(tài)硬盤,solide-state drive,超快的那種。
下圖是intel 給出的一款ssd 的性能指標(biāo)(
順序訪問和隨機(jī)訪問本來就沒啥可比性,取決于每次隨機(jī)訪問的數(shù)據(jù)量大小。所以他這也沒用同一個(gè)單位。
為啥寫的慢呢,得看ssd 的結(jié)構(gòu)了,ssd 是個(gè)三層次,最高層是nand flash,每個(gè)nand flash 里有多個(gè)block ,block 里又包括很多page,
ssd 的特點(diǎn)就是讀和寫都要以page 為單位,最少一個(gè)page。通常一個(gè)page 是4k 或8k。不能覆蓋寫page,要覆蓋必須清空那個(gè)page 所在的block。
亦或者要先將這個(gè)page 所在塊的數(shù)據(jù)移動(dòng)到另一個(gè)被擦除的block里。所以寫比較麻煩。
因?yàn)檫@些結(jié)構(gòu)的設(shè)計(jì),ssd 上連續(xù)的一段lba 不一定對應(yīng)連續(xù)的pba ,ssd 用一個(gè)閃存轉(zhuǎn)換層flash translation layer(ftl)將這個(gè)映射管理起來了。所以,
ssd 的順序?qū)懞碗S機(jī)寫沒有區(qū)別??梢援?dāng)成ssd 都是隨機(jī)訪問數(shù)據(jù)的。