新聞中心
Linux系統(tǒng)是世界上使用最廣泛的操作系統(tǒng)之一,它在服務(wù)器系統(tǒng)和超級計算機上表現(xiàn)出色。在Linux系統(tǒng)中,使用IOPS(每秒IO操作數(shù))來衡量硬盤性能。了解IOPS是評估系統(tǒng)性能的重要指標(biāo)。在本文中,我們將介紹一些簡單易懂的Linux系統(tǒng)IOPS查看方法。

1. 使用iostat命令
iostat命令是用于觀察系統(tǒng)的輸入 / 輸出統(tǒng)計信息的工具。通過iostat命令,您可以檢查哪些設(shè)備正在運行,IOPS數(shù)量以及設(shè)備的讀寫響應(yīng)時間??梢允褂靡韵旅顖?zhí)行iostat:
“`
iostat -xmtc 5 3
“`
這個命令的意思是每隔5秒執(zhí)行一次iostat,連續(xù)執(zhí)行3次。
結(jié)果將包括以下列:
– 設(shè)備(設(shè)備的名稱)
– rrqm/s(每秒鐘進行的讀操作的合并請求數(shù))
– wrqm/s(每秒鐘進行的寫操作的合并請求數(shù))
– r/s(每秒鐘的讀請求次數(shù))
– w/s(每秒鐘的寫請求次數(shù))
– rkB/s(每秒鐘的讀取數(shù)據(jù)量,單位KB)
– wkB/s(每秒鐘的寫入數(shù)據(jù)量,單位KB)
– avgrq-sz(每個請求的平均扇區(qū)數(shù))
– avgqu-sz(平均I / O請求數(shù)量)
– awt(平均處理時間)
– svctm(平均服務(wù)時間)
– %util(每秒已使用磁盤時間的百分比)
2. 使用dstat命令
dstat是一個系統(tǒng)資源統(tǒng)計工具,它能輕松監(jiān)視系統(tǒng)的IOPS。它還可以報告CPU使用率、內(nèi)存和磁盤使用率等更多指標(biāo)。想要使用dstat,請使用以下命令:
“`
dstat -cdD total –disk-util –disk-tps –top-io-adv
“`
此命令將顯示包括卷IOPS、磁盤使用率和IOPS排名在內(nèi)的IOPS信息。
3. 使用ioping命令
ioping命令是一種I / O延遲測量工具,它可以讓用戶更好地了解系統(tǒng)中磁盤執(zhí)行I / O請求的速度。需要使用以下命令運行ioping:
“`
ioping -c 10 /
“`
此命令對根目錄執(zhí)行10個IO請求。 這將輸出10個請求的響應(yīng)時間、IOPS以及延遲標(biāo)準(zhǔn)差。
4. 使用fio命令
fio是一種強大的IOPS基準(zhǔn)測試工具,它是一種多線程的IO引擎。使用fio命令需要編寫一個I / O測試腳本,并以此方式運行fio。
示例腳本:
“`
[global]
ioengine=rw
rw=rw
iodepth=16
numjobs=16
bs=4k
direct=1
runtime=30
[workload]
directory=/tmp/test
size=10G
“`
該腳本將在/tmp/test目錄下為10G文件執(zhí)行IOPS測試。 請先確保該目錄不存在。
然后在命令行中使用fio命令,如下所示:
“`
fio job.fio
“`
這將運行以job.fio命名的I / O測試腳本并生成測試結(jié)果。
注意事項:
– 確保您已經(jīng)安裝了所需的軟件包。
– 這些命令可以與其他命令一起使用,以了解更多有關(guān)性能和IOPS的信息。
– 記住,許多因素都會影響IOPS,包括磁盤類型、RD級別、文件系統(tǒng)大小等。
結(jié)論:
以上就是一些簡單易懂的Linux系統(tǒng)IOPS查看方法。監(jiān)視和了解系統(tǒng)IOPS是在服務(wù)器和計算機系統(tǒng)中維護性能的關(guān)鍵。使用以上命令和工具,用戶可以在Linux中輕松監(jiān)視IOPS并進行接下來的優(yōu)化。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
面試 linux 文件系統(tǒng)怎樣io到底層
前言:本文主要講解LinuxIO調(diào)度層的三種模式:cfp、deadline和noop,并給出各自的優(yōu)化和適用場景建議。IO調(diào)度發(fā)生在Linux內(nèi)核的IO調(diào)度層。這個層次是針對Linux的整體IO層次體系來說的。從read()或者write()系統(tǒng)調(diào)用的角度來說,Linux整體IO體系可以分為七層,它們分別是:VFS層:虛擬文件系統(tǒng)層。由于內(nèi)核要跟多種文件系統(tǒng)打交道,而每一種文件系統(tǒng)所實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)和相關(guān)方法都可能不盡相同,所以,內(nèi)核抽象了這一層,專門用來適配各種文件系統(tǒng),并對外提供統(tǒng)一操作接口。文件系統(tǒng)層:不同的文件系統(tǒng)實現(xiàn)自己的操作過程,提供自己特有的特征,具體不多說了,大家愿意的話自己去看代碼即可。頁緩存層:負(fù)責(zé)真對page的緩存。通用塊層:由于絕大多數(shù)情況的io操作是跟塊設(shè)備打交道,所以Linux在此提供了一個類似vfs層的塊設(shè)備操作抽象層。下層對接各種不同屬性的塊設(shè)備,對上提供統(tǒng)一的BlockIO請求標(biāo)準(zhǔn)。IO調(diào)度層:因為絕大多數(shù)的塊設(shè)備都是類似磁盤這樣的設(shè)判型搜備,所以有必要根據(jù)這類設(shè)備的特點以及應(yīng)用的不同特點來設(shè)置一些不同的調(diào)度算法和隊列。以便在不同的應(yīng)用環(huán)境下有針對性的提高磁盤的讀寫效率,這里就是大名鼎鼎的Linux電梯所起作用的地方。針對機械硬盤的各種調(diào)度方法就是在這實現(xiàn)的。塊設(shè)備驅(qū)動層:驅(qū)動層對外提供相對比較高級的設(shè)備操作接口,往往是C語言的,而下層對接設(shè)備本身的操作方法和規(guī)范。塊設(shè)備層:這層就是具體的物理設(shè)備了,定義了各種真對設(shè)備操作方法和規(guī)范。有一個已經(jīng)整理好的,非常經(jīng)典,一圖勝千言:我們今天要研究的內(nèi)容主要在IO調(diào)度這一層。它要解決的核心問題是,如何提高塊設(shè)備IO的整體性能?這一層也主要是針對機械硬盤結(jié)構(gòu)而設(shè)計的。眾所周知,機械硬盤的存儲介質(zhì)是磁盤,磁頭在盤片上移動進行磁道尋址,行為類似播放一張唱片。這種結(jié)構(gòu)的特點是,順序訪問時吞吐量較高,但是如果一旦對盤片有隨機訪問,那么大量的時間都會浪費在磁頭的移動上,這時候就會導(dǎo)致每次IO的響應(yīng)時間變長,極大的降低IO的響應(yīng)速度。磁頭在盤片上尋道的操作,類似電梯調(diào)度,實際上在最開始的時期,Linux把這個算法命名為Linux電梯算法,即:如果在尋道的過程中,能把順序路過的相關(guān)磁道的數(shù)據(jù)請求都“順便”處理掉,那么就可以在比較小影響響應(yīng)速度的前提下,提高整體IO的吞吐量。這就是我們?yōu)槭裁匆O(shè)計IO調(diào)度算法的原因。目前在內(nèi)核中默認(rèn)開啟了三種算法/模式:noop,cfq和deadline。嚴(yán)格算應(yīng)該是兩種:因為之一種叫做noop,就是空操作調(diào)度算法,也就是沒有任何調(diào)度操作,并不對io請求進行排序,僅僅做適當(dāng)?shù)膇o合并的一個fifo隊列。目前內(nèi)核中默認(rèn)的調(diào)度算法應(yīng)該是cfq,叫做完全公平隊列調(diào)度。這個調(diào)度算法人如其名,它試圖給所有進程提供一個完全公平的IO操作環(huán)境。注:請大家一定記住這個詞語,cfq,完全公平隊列調(diào)度,不然下文就沒法看了。cfq為每個進程創(chuàng)建一個同步IO調(diào)度隊列,并默認(rèn)以時間片和請求數(shù)限定的方式分配IO資源,以此保證每個進程的IO資源占用是公平的,cfq還實現(xiàn)了針對進程租檔級別的優(yōu)先級調(diào)度,這個我們后面會詳細(xì)解釋。查看和修改IO調(diào)度算法的方法是:cfq是通用服務(wù)器比較好的IO調(diào)度算法選擇,對桌面用戶也是比較好的選擇。但是對于很多IO壓力較大的場景就并不是很適應(yīng),尤其是IO壓力集中在某些進程上的場景。因為這種場景我們需要的滿足某個或者某幾個進程的IO響應(yīng)速度,而不是讓所有的進程公平的使用IO,比如數(shù)據(jù)庫應(yīng)用。deadline調(diào)度(最終期限調(diào)度)就是更適合上述場景的解決方案。deadline實現(xiàn)了四個隊列:其中兩個分別處理正常read和write,按扇區(qū)號排序,進行正常io的合并處理以提高吞吐量。因為IO請求可能會集中在某些磁盤位置,這樣會導(dǎo)致新來的請求一直被合并,可能會有其他磁盤位置的io請求被餓死。另外兩個處理超時read和write的隊列,按請求創(chuàng)建時間排序,如果有超時的請求出現(xiàn),就放進這兩個隊列,調(diào)度算法保證超時(達(dá)到最終期限時間)的隊列中的請求會優(yōu)先被處理,防止掘歷請求被餓死。不久前,內(nèi)核還是默認(rèn)標(biāo)配四種算法,還有一種叫做as的算法(Anticipatoryscheduler),預(yù)測調(diào)度算法。一個高大上的名字,搞得我一度認(rèn)為Linux內(nèi)核都會算命了。結(jié)果發(fā)現(xiàn),無非是在基于deadline算法做io調(diào)度的之前等一小會時間,如果這段時間內(nèi)有可以合并的io請求到來,就可以合并處理,提高deadline調(diào)度的在順序讀寫情況下的數(shù)據(jù)吞吐量。其實這根本不是啥預(yù)測,我覺得不如叫撞大運調(diào)度算法,當(dāng)然這種策略在某些特定場景差效果不錯。但是在大多數(shù)場景下,這個調(diào)度不僅沒有提高吞吐量,還降低了響應(yīng)速度,所以內(nèi)核干脆把它從默認(rèn)配置里刪除了。畢竟Linux的宗旨是實用,而我們也就不再這個調(diào)度算法上多費口舌了。1、cfq:完全公平隊列調(diào)度cfq是內(nèi)核默認(rèn)選擇的IO調(diào)度隊列,它在桌面應(yīng)用場景以及大多數(shù)常見應(yīng)用場景下都是很好的選擇。如何實現(xiàn)一個所謂的完全公平隊列(CompletelyFairQueueing)?首先我們要理解所謂的公平是對誰的公平?從操作系統(tǒng)的角度來說,產(chǎn)生操作行為的主體都是進程,所以這里的公平是針對每個進程而言的,我們要試圖讓進程可以公平的占用IO資源。那么如何讓進程公平的占用IO資源?我們需要先理解什么是IO資源。當(dāng)我們衡量一個IO資源的時候,一般喜歡用的是兩個單位,一個是數(shù)據(jù)讀寫的帶寬,另一個是數(shù)據(jù)讀寫的IOPS。帶寬就是以時間為單位的讀寫數(shù)據(jù)量,比如,100Mbyte/s。而IOPS是以時間為單位的讀寫次數(shù)。在不同的讀寫情境下,這兩個單位的表現(xiàn)可能不一樣,但是可以確定的是,兩個單位的任何一個達(dá)到了性能上限,都會成為IO的瓶頸。從機械硬盤的結(jié)構(gòu)考慮,如果讀寫是順序讀寫,那么IO的表現(xiàn)是可以通過比較少的IOPS達(dá)到較大的帶寬,因為可以合并很多IO,也可以通過預(yù)讀等方式加速數(shù)據(jù)讀取效率。當(dāng)IO的表現(xiàn)是偏向于隨機讀寫的時候,那么IOPS就會變得更大,IO的請求的合并可能性下降,當(dāng)每次io請求數(shù)據(jù)越少的時候,帶寬表現(xiàn)就會越低。從這里我們可以理解,針對進程的IO資源的主要表現(xiàn)形式有兩個:進程在單位時間內(nèi)提交的IO請求個數(shù)和進程占用IO的帶寬。其實無論哪個,都是跟進程分配的IO處理時間長度緊密相關(guān)的。有時業(yè)務(wù)可以在較少IOPS的情況下占用較大帶寬,另外一些則可能在較大IOPS的情況下占用較少帶寬,所以對進程占用IO的時間進行調(diào)度才是相對最公平的。即,我不管你是IOPS高還是帶寬占用高,到了時間咱就換下一個進程處理,你愛咋樣咋樣。所以,cfq就是試圖給所有進程分配等同的塊設(shè)備使用的時間片,進程在時間片內(nèi),可以將產(chǎn)生的IO請求提交給塊設(shè)備進行處理,時間片結(jié)束,進程的請求將排進它自己的隊列,等待下次調(diào)度的時候進行處理。這就是cfq的基本原理。當(dāng)然,現(xiàn)實生活中不可能有真正的“公平”,常見的應(yīng)用場景下,我們很肯能需要人為的對進程的IO占用進行人為指定優(yōu)先級,這就像對進程的CPU占用設(shè)置優(yōu)先級的概念一樣。所以,除了針對時間片進行公平隊列調(diào)度外,cfq還提供了優(yōu)先級支持。每個進程都可以設(shè)置一個IO優(yōu)先級,cfq會根據(jù)這個優(yōu)先級的設(shè)置情況作為調(diào)度時的重要參考因素。優(yōu)先級首先分成三大類:RT、BE、IDLE,它們分別是實時(RealTime)、更佳效果(BestTry)和閑置(Idle)三個類別,對每個類別的IO,cfq都使用不同的策略進行處理。另外,RT和BE類別中,分別又再劃分了8個子優(yōu)先級實現(xiàn)更細(xì)節(jié)的QOS需求,而IDLE只有一個子優(yōu)先級。另外,我們都知道內(nèi)核默認(rèn)對存儲的讀寫都是經(jīng)過緩存(buffer/cache)的,在這種情況下,cfq是無法區(qū)分當(dāng)前處理的請求是來自哪一個進程的。只有在進程使用同步方式(syncread或者syncwirte)或者直接IO(DirectIO)方式進行讀寫的時候,cfq才能區(qū)分出IO請求來自哪個進程。所以,除了針對每個進程實現(xiàn)的IO隊列以外,還實現(xiàn)了一個公共的隊列用來處理異步請求。當(dāng)前內(nèi)核已經(jīng)實現(xiàn)了針對IO資源的cgroup資源隔離,所以在以上體系的基礎(chǔ)上,cfq也實現(xiàn)了針對cgroup的調(diào)度支持。總的來說,cfq用了一系列的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)了以上所有復(fù)雜功能的支持,大家可以通過源代碼看到其相關(guān)實現(xiàn),文件在源代碼目錄下的block/cfq-iosched.c。1.1cfq設(shè)計原理在此,我們對整體數(shù)據(jù)結(jié)構(gòu)做一個簡要描述:首先,cfq通過一個叫做cfq_data的數(shù)據(jù)結(jié)構(gòu)維護了整個調(diào)度器流程。在一個支持了cgroup功能的cfq中,全部進程被分成了若干個contralgroup進行管理。每個cgroup在cfq中都有一個cfq_group的結(jié)構(gòu)進行描述,所有的cgroup都被作為一個調(diào)度對象放進一個紅黑樹中,并以vdisktime為key進行排序。vdisktime這個時間紀(jì)錄的是當(dāng)前cgroup所占用的io時間,每次對cgroup進行調(diào)度時,總是通過紅黑樹選擇當(dāng)前vdisktime時間最少的cgroup進行處理,以保證所有cgroups之間的IO資源占用“公平”。當(dāng)然我們知道,cgroup是可以對blkio進行資源比例分配的,其作用原理就是,分配比例大的cgroup占用vdisktime時間增長較慢,分配比例小的vdisktime時間增長較快,快慢與分配比例成正比。這樣就做到了不同的cgroup分配的IO比例不一樣,并且在cfq的角度看來依然是“公平“的。選擇好了需要處理的cgroup(cfq_group)之后,調(diào)度器需要決策選擇下一步的service_tree。service_tree這個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的都是一系列的紅黑樹,主要目的是用來實現(xiàn)請求優(yōu)先級分類的,就是RT、BE、IDLE的分類。每一個cfq_group都維護了7個service_trees,其定義如下:其中service_tree_idle就是用來給IDLE類型的請求進行排隊用的紅黑樹。而上面二維數(shù)組,首先之一個維度針對RT和BE分別各實現(xiàn)了一個數(shù)組,每一個數(shù)組中都維護了三個紅黑樹,分別對應(yīng)三種不同子類型的請求,分別是:SYNC、SYNC_NOIDLE以及ASYNC。我們可以認(rèn)為SYNC相當(dāng)于SYNC_IDLE并與SYNC_NOIDLE對應(yīng)。idling是cfq在設(shè)計上為了盡量合并連續(xù)的IO請求以達(dá)到提高吞吐量的目的而加入的機制,我們可以理解為是一種“空轉(zhuǎn)”等待機制。空轉(zhuǎn)是指,當(dāng)一個隊列處理一個請求結(jié)束后,會在發(fā)生調(diào)度之前空等一小會時間,如果下一個請求到來,則可以減少磁頭尋址,繼續(xù)處理順序的IO請求。為了實現(xiàn)這個功能,cfq在service_tree這層數(shù)據(jù)結(jié)構(gòu)這實現(xiàn)了SYNC隊列,如果請求是同步順序請求,就入隊這個servicetree,如果請求是同步隨機請求,則入隊SYNC_NOIDLE隊列,以判斷下一個請求是否是順序請求。所有的異步寫操作請求將入隊ASYNC的servicetree,并且針對這個隊列沒有空轉(zhuǎn)等待機制。此外,cfq還對SSD這樣的硬盤有特殊調(diào)整,當(dāng)cfq發(fā)現(xiàn)存儲設(shè)備是一個ssd硬盤這樣的隊列深度更大的設(shè)備時,所有針對單獨隊列的空轉(zhuǎn)都將不生效,所有的IO請求都將入隊SYNC_NOIDLE這個servicetree。每一個servicetree都對應(yīng)了若干個cfq_queue隊列,每個cfq_queue隊列對應(yīng)一個進程,這個我們后續(xù)再詳細(xì)說明。cfq_group還維護了一個在cgroup內(nèi)部所有進程公用的異步IO請求隊列,其結(jié)構(gòu)如下:異步請求也分成了RT、BE、IDLE這三類進行處理,每一類對應(yīng)一個cfq_queue進行排隊。BE和RT也實現(xiàn)了優(yōu)先級的支持,每一個類型有IOPRIO_BE_NR這么多個優(yōu)先級,這個值定義為8,數(shù)組下標(biāo)為0-7。我們目前分析的內(nèi)核代碼版本為Linux4.4,可以看出,從cfq的角度來說,已經(jīng)可以實現(xiàn)異步IO的cgroup支持了,我們需要定義一下這里所謂異步IO的含義,它僅僅表示從內(nèi)存的buffer/cache中的數(shù)據(jù)同步到硬盤的IO請求,而不是aio(man7aio)或者linux的native異步io以及l(fā)ibaio機制,實際上這些所謂的“異步”IO機制,在內(nèi)核中都是同步實現(xiàn)的(本質(zhì)上馮諾伊曼計算機沒有真正的“異步”機制)。我們在上面已經(jīng)說明過,由于進程正常情況下都是將數(shù)據(jù)先寫入buffer/cache,所以這種異步IO都是統(tǒng)一由cfq_group中的async請求隊列處理的。那么為什么在上面的service_tree中還要實現(xiàn)和一個ASYNC的類型呢?這當(dāng)然是為了支持區(qū)分進程的異步IO并使之可以“完全公平”做準(zhǔn)備嘍。實際上在最新的cgroupv2的blkio體系中,內(nèi)核已經(jīng)支持了針對bufferIO的cgroup限速支持,而以上這些可能容易混淆的一堆類型,都是在新的體系下需要用到的類型標(biāo)記。新體系的復(fù)雜度更高了,功能也更加強大,但是大家先不要著急,正式的cgroupv2體系,在Linux4.5發(fā)布的時候會正式跟大家見面。我們繼續(xù)選擇service_tree的過程,三種優(yōu)先級類型的service_tree的選擇就是根據(jù)類型的優(yōu)先級來做選擇的,RT優(yōu)先級更高,BE其次,IDLE更低。就是說,RT里有,就會一直處理RT,RT沒了再處理BE。每個service_tree對應(yīng)一個元素為cfq_queue排隊的紅黑樹,而每個cfq_queue就是內(nèi)核為進程(線程)創(chuàng)建的請求隊列。每一個cfq_queue都會維護一個rb_key的變量,這個變量實際上就是這個隊列的IO服務(wù)時間(servicetime)。這里還是通過紅黑樹找到servicetime時間最短的那個cfq_queue進行服務(wù),以保證“完全公平”。選擇好了cfq_queue之后,就要開始處理這個隊列里的IO請求了。這里的調(diào)度方式基本跟deadline類似。cfq_queue會對進入隊列的每一個請求進行兩次入隊,一個放進fifo中,另一個放進按訪問扇區(qū)順序作為key的紅黑樹中。默認(rèn)從紅黑樹中取請求進行處理,當(dāng)請求的延時時間達(dá)到deadline時,就從紅黑樹中取等待時間最長的進行處理,以保證請求不被餓死。這就是整個cfq的調(diào)度流程,當(dāng)然其中還有很多細(xì)枝末節(jié)沒有交代,比如合并處理以及順序處理等等。1.2cfq的參數(shù)調(diào)整理解整個調(diào)度流程有助于我們決策如何調(diào)整cfq的相關(guān)參數(shù)。所有cfq的可調(diào)參數(shù)都可以在/sys/class/block/sda/queue/iosched/目錄下找到,當(dāng)然,在你的系統(tǒng)上,請將sda替換為相應(yīng)的磁盤名稱。我們來看一下都有什么:這些參數(shù)部分是跟機械硬盤磁頭尋道方式有關(guān)的,如果其說明你看不懂,請先補充相關(guān)知識:back_seek_max:磁頭可以向后尋址的更大范圍,默認(rèn)值為16M。back_seek_penalty:向后尋址的懲罰系數(shù)。這個值是跟向前尋址進行比較的。以上兩個是為了防止磁頭尋道發(fā)生抖動而導(dǎo)致尋址過慢而設(shè)置的?;舅悸肥沁@樣,一個io請求到來的時候,cfq會根據(jù)其尋址位置預(yù)估一下其磁頭尋道成本。設(shè)置一個更大值back_seek_max,對于請求所訪問的扇區(qū)號在磁頭后方的請求,只要尋址范圍沒有超過這個值,cfq會像向前尋址的請求一樣處理它。再設(shè)置一個評估成本的系數(shù)back_seek_penalty,相對于磁頭向前尋址,向后尋址的距離為1/2(1/back_seek_penalty)時,cfq認(rèn)為這兩個請求尋址的代價是相同。這兩個參數(shù)實際上是cfq判斷請求合并處理的條件限制,凡事復(fù)合這個條件的請求,都會盡量在本次請求處理的時候一起合并處理。fifo_expire_async:設(shè)置異步請求的超時時間。同步請求和異步請求是區(qū)分不同隊列處理的,cfq在調(diào)度的時候一般情況都會優(yōu)先處理同步請求,之后再處理異步請求,除非異步請求符合上述合并處理的條件限制范圍內(nèi)。當(dāng)本進程的隊列被調(diào)度時,cfq會優(yōu)先檢查是否有異步請求超時,就是超過fifo_expire_async參數(shù)的限制。如果有,則優(yōu)先發(fā)送一個超時的請求,其余請求仍然按照優(yōu)先級以及扇區(qū)編號大小來處理。fifo_expire_sync:這個參數(shù)跟上面的類似,區(qū)別是用來設(shè)置同步請求的超時時間。slice_idle:參數(shù)設(shè)置了一個等待時間。這讓cfq在切換cfq_queue或servicetree的時候等待一段時間,目的是提高機械硬盤的吞吐量。一般情況下,來自同一個cfq_queue或者servicetree的IO請求的尋址局部性更好,所以這樣可以減少磁盤的尋址次數(shù)。這個值在機械硬盤上默認(rèn)為非零。當(dāng)然在固態(tài)硬盤或者硬RAID設(shè)備上設(shè)置這個值為非零會降低存儲的效率,因為固態(tài)硬盤沒有磁頭尋址這個概念,所以在這樣的設(shè)備上應(yīng)該設(shè)置為0,關(guān)閉此功能。group_idle:這個參數(shù)也跟上一個參數(shù)類似,區(qū)別是當(dāng)cfq要切換cfq_group的時候會等待一段時間。在cgroup的場景下,如果我們沿用slice_idle的方式,那么空轉(zhuǎn)等待可能會在cgroup組內(nèi)每個進程的cfq_queue切換時發(fā)生。這樣會如果這個進程一直有請求要處理的話,那么直到這個cgroup的配額被耗盡,同組中的其它進程也可能無法被調(diào)度到。這樣會導(dǎo)致同組中的其它進程餓死而產(chǎn)生IO性能瓶頸。在這種情況下,我們可以將slice_idle=0而group_idle=8。這樣空轉(zhuǎn)等待就是以cgroup為單位進行的,而不是以cfq_queue的進程為單位進行,以防止上述問題產(chǎn)生。low_latency:這個是用來開啟或關(guān)閉cfq的低延時(lowlatency)模式的開關(guān)。當(dāng)這個開關(guān)打開時,cfq將會根據(jù)target_latency的參數(shù)設(shè)置來對每一個進程的分片時間(slicetime)進行重新計算。這將有利于對吞吐量的公平(默認(rèn)是對時間片分配的公平)。關(guān)閉這個參數(shù)(設(shè)置為0)將忽略target_latency的值。這將使系統(tǒng)中的進程完全按照時間片方式進行IO資源分配。這個開關(guān)默認(rèn)是打開的。我們已經(jīng)知道cfq設(shè)計上有“空轉(zhuǎn)”(idling)這個概念,目的是為了可以讓連續(xù)的讀寫操作盡可能多的合并處理,減少磁頭的尋址操作以便增大吞吐量。如果有進程總是很快的進行順序讀寫,那么它將因為cfq的空轉(zhuǎn)等待命中率很高而導(dǎo)致其它需要處理IO的進程響應(yīng)速度下降,如果另一個需要調(diào)度的進程不會發(fā)出大量順序IO行為的話,系統(tǒng)中不同進程IO吞吐量的表現(xiàn)就會很不均衡。就比如,系統(tǒng)內(nèi)存的cache中有很多臟頁要寫回時,桌面又要打開一個瀏覽器進行操作,這時臟頁寫回的后臺行為就很可能會大量命中空轉(zhuǎn)時間,而導(dǎo)致瀏覽器的小量IO一直等待,讓用戶感覺瀏覽器運行響應(yīng)速度變慢。這個low_latency主要是對這種情況進行優(yōu)化的選項,當(dāng)其打開時,系統(tǒng)會根據(jù)target_latency的配置對因為命中空轉(zhuǎn)而大量占用IO吞吐量的進程進行限制,以達(dá)到不同進程IO占用的吞吐量的相對均衡。這個開關(guān)比較合適在類似桌面應(yīng)用的場景下打開。target_latency:當(dāng)low_latency的值為開啟狀態(tài)時,cfq將根據(jù)這個值重新計算每個進程分配的IO時間片長度。quantum:這個參數(shù)用來設(shè)置每次從cfq_queue中處理多少個IO請求。在一個隊列處理事件周期中,超過這個數(shù)字的IO請求將不會被處理。這個參數(shù)只對同步的請求有效。slice_sync:當(dāng)一個cfq_queue隊列被調(diào)度處理時,它可以被分配的處理總時間是通過這個值來作為一個計算參數(shù)指定的。公式為:time_slice=slice_sync+(slice_sync/5*(4-prio))。這個參數(shù)對同步請求有效。slice_async:這個值跟上一個類似,區(qū)別是對異步請求有效。slice_async_rq:這個參數(shù)用來限制在一個slice的時間范圍內(nèi),一個隊列最多可以處理的異步請求個數(shù)。請求被處理的更大個數(shù)還跟相關(guān)進程被設(shè)置的io優(yōu)先級有關(guān)。1.3cfq的IOPS模式我們已經(jīng)知道,默認(rèn)情況下cfq是以時間片方式支持的帶優(yōu)先級的調(diào)度來保證IO資源占用的公平。高優(yōu)先級的進程將得到的時間片長度,而低優(yōu)先級的進程時間片相對較小。當(dāng)我們的存儲是一個高速并且支持NCQ(原生指令隊列)的設(shè)備的時候,我們更好可以讓其可以從多個cfq隊列中處理多路的請求,以便提升NCQ的利用率。此時使用時間片的分配方式分配資源就顯得不合時宜了,因為基于時間片的分配,同一時刻最多能處理的請求隊列只有一個。這時,我們需要切換cfq的模式為IOPS模式。切換方式很簡單,就是將slice_idle=0即可。內(nèi)核會自動檢測你的存儲設(shè)備是否支持NCQ,如果支持的話cfq會自動切換為IOPS模式。另外,在默認(rèn)的基于優(yōu)先級的時間片方式下,我們可以使用ionice命令來調(diào)整進程的IO優(yōu)先級。進程默認(rèn)分配的IO優(yōu)先級是根據(jù)進程的nice值計算而來的,計算方法可以在manionice中看到,這里不再廢話。2、deadline:最終期限調(diào)度deadline調(diào)度算法相對cfq要簡單很多。其設(shè)計目標(biāo)是:在保證請求按照設(shè)備扇區(qū)的順序進行訪問的同時,兼顧其它請求不被餓死,要在一個最終期限前被調(diào)度到。我們知道磁頭對磁盤的尋道是可以進行順序訪問和隨機訪問的,因為尋道延時時間的關(guān)系,順序訪問時IO的吞吐量更大,隨機訪問的吞吐量小。如果我們想為一個機械硬盤進行吞吐量優(yōu)化的話,那么就可以讓調(diào)度器按照盡量復(fù)合順序訪問的IO請求進行排序,之后請求以這樣的順序發(fā)送給硬盤,就可以使IO的吞吐量更大。但是這樣做也有另一個問題,就是如果此時出現(xiàn)了一個請求,它要訪問的磁道離目前磁頭所在磁道很遠(yuǎn),應(yīng)用的請求又大量集中在目前磁道附近。導(dǎo)致大量請求一直會被合并和插隊處理,而那個要訪問比較遠(yuǎn)磁道的請求將因為一直不能被調(diào)度而餓死。deadline就是這樣一種調(diào)度器,能在保證IO更大吞吐量的情況下,盡量使遠(yuǎn)端請求在一個期限內(nèi)被調(diào)度而不被餓死的調(diào)度器。
simple類型的邏輯磁盤是提升性能還是提升數(shù)據(jù)可靠性
作用: 用來存放數(shù)罩判據(jù)(二進制方式來管理數(shù)據(jù))分類機械硬盤固態(tài)硬盤機械硬盤組成盤片: 上面布滿磁性顆粒,保存寫入數(shù)據(jù)主軸: 帶動盤片轉(zhuǎn)動,轉(zhuǎn)到磁頭的下方讀/寫磁頭: 負(fù)責(zé)數(shù)據(jù)的讀寫磁頭臂: 帶動磁頭,將磁頭移動到指定位置控制電路: 控制硬盤的速度,磁頭臂的移動等等機械磁盤的屬性磁道: 盤片圍繞在主軸周圍的同心環(huán),編號由外至內(nèi)從0累加扇區(qū): 磁道上被分成的更小的單位,也是磁盤中保存數(shù)據(jù)最小的存儲單元,一般大小為512k,也有更大的扇區(qū)4K柱面: 在同一個磁盤中,所有盤片相同位置編號的磁道形成的一個圓柱機械磁盤工作方式主軸帶動盤片做圓周運動,磁頭臂帶動磁頭直徑運動5838c4c164f3c12023a5f1eb3c51bb20.png機械硬盤常用總線協(xié)議/磁盤類型SCSI協(xié)議SCSI(Small Computer System Interface,小型計算機系統(tǒng)接口)最初是一種為了小型機研制的接口技術(shù),用于主機與外部設(shè)備之間的連接(最多可以連接16個設(shè)備)SCSI 協(xié)議是主機與存儲磁盤通信的基本協(xié)議DAS 使用SCSI 協(xié)議實現(xiàn)主機服務(wù)器與存儲設(shè)備的互連5924aad5e3f1e60e60c51bdccd8c1a38.png并行SCSI 的演變(1981年)最初由 Shugart Associates、 NCR開發(fā),名字為SASIANSI 承認(rèn)其為工業(yè)標(biāo)準(zhǔn)SCSI 的版本SCSI-1定義了線纜長度,信號特征,命令和傳輸模式使用8 位窄總線,更大傳輸率為 5MB/sSCSI-2定義了通用命令集(Common Command Set, 簡稱CCS)提高了性能,可靠性,新增了一些特性SCSI-3SCSI最新版本由多個相關(guān)的標(biāo)準(zhǔn)組成,不再是一個大文件SCSI-3 架構(gòu)f06acbc904d372c38694d0c9c.pngSCSI命令協(xié)議(應(yīng)用層)各類型設(shè)備通用的主要命令傳輸層協(xié)議設(shè)備間互連和信息共享的標(biāo)準(zhǔn)規(guī)則,scsi-3、fc等等物理層互連接口細(xì)節(jié): 比如電信號傳輸方法和數(shù)據(jù)傳輸模式SCSI 協(xié)議模型主機到存儲磁盤間的通信由啟動器發(fā)起,由目標(biāo)器接收和處理c34ab2de157b29cb979e9392b1a5263f.pngSCSI 協(xié)議尋址總線號: 區(qū)分不同的SCSI 總線設(shè)備ID: 區(qū)分SCSI 總線上不同的設(shè)備邏輯單元號: 區(qū)分SCSI 設(shè)備中的子設(shè)備ATA 和 SATA高級技術(shù)附件(Advanced Technology Attachment)是上世紀(jì)90 年代桌面機標(biāo)準(zhǔn)采用可編程IO 技術(shù),速度和智能性不高SATA(Serial Advanced Technology Attachment)是ATA 技術(shù)的升級版本,曾是桌面電腦ATA 接口硬盤的主要替代技術(shù)因凱戚容量大,價格便宜,在企業(yè)級服務(wù)器和存儲系統(tǒng)中曾廣泛的被使用現(xiàn)在多被更加智能的NL-SAS 接口的硬盤替代Serial Attached SCSI(串行 SCSI 協(xié)議)在企業(yè)級存儲系統(tǒng)中,SAS(Serial Attached SCSI)接口已經(jīng)取代并行連接SCSI 和 SATA 接口特點采用點對點連接方式高帶寬(300M/s,600M/s)效率高支持熱插拔I/O(Input/Ouput)操作單個IO操作系統(tǒng)內(nèi)核發(fā)出一個讀IO命令,當(dāng)控制磁盤的控制器接到這個指令后,控制器會給磁盤發(fā)送一個讀數(shù)據(jù)的指令,并盯悶陵同時將要讀取數(shù)據(jù)塊的地址傳送給磁盤,然后硬盤讀取數(shù)據(jù)傳送給控制器,并由控制器返回給操作系統(tǒng),完成一個IO操作讀寫IO寫磁盤為寫IO,讀數(shù)據(jù)為讀IO隨機訪問(Random Access) 與連續(xù)訪問(Sequential Access): 由當(dāng)此IO 給出的扇區(qū)地址與上次IO 結(jié)束的扇區(qū)地址相差得是否較大決定順序IO模式(Queue Mode)/并發(fā)IO模式(Burst Mode): 由磁盤組一次能執(zhí)行的IO 命令個數(shù)決定完整的IO操作當(dāng)控制器對硬盤發(fā)出一個IO操作指令的時候,磁盤的磁頭臂帶動讀寫磁頭離開著陸區(qū),然后移動到要操作初始數(shù)據(jù)塊所在的磁道正上方,此過程為尋道,消耗的時間為尋道時間磁頭等到盤片旋轉(zhuǎn)到初始數(shù)據(jù)塊所在扇區(qū)的正上方,此時才能進行數(shù)據(jù)的讀取,這個過程稱之為旋轉(zhuǎn)時間然后讀取相應(yīng)數(shù)據(jù),直到完成這次IO所操作的全部數(shù)據(jù),這個過程所花費的時間稱之為數(shù)據(jù)傳送時間尋道時間全程尋道時間: 磁頭橫跨整個磁盤的寬度所用的時間(著陸區(qū) –> 最外層0磁道)平均尋道時間: 一般為全程尋道時間的1/3道間尋道時間: 磁頭在相鄰磁道之間所用的時間旋轉(zhuǎn)時延決定于主軸的轉(zhuǎn)動速度平均旋轉(zhuǎn)動延遲: 完全旋轉(zhuǎn)用時的一半5400 rpm的磁盤平均旋轉(zhuǎn)時延: 5.5ms15000 rpm的磁盤的平均旋轉(zhuǎn)時延: 2.0ms數(shù)據(jù)傳輸時延數(shù)據(jù)傳輸時延決定于數(shù)據(jù)傳輸速度,即單位時間內(nèi)傳輸?shù)臄?shù)據(jù)量內(nèi)部傳輸速度: 數(shù)據(jù)從盤片扇區(qū)上傳送到硬盤上的內(nèi)部緩存的速度外部傳輸速度: 接口的標(biāo)稱速度IOPSIOPS是IO系統(tǒng)每秒所執(zhí)行IO操作的次數(shù),是一個重要的用來衡量系統(tǒng)IO能力的參數(shù),對于單個磁盤,計算其完成一次IO所需要的時間來推算其IOPSIOTime = 尋道時間 + 60s/轉(zhuǎn)速/2 + IOChunkSize/傳輸速度IOPS = 1/IOTime = 1 / (尋道時間 + 60s/轉(zhuǎn)速/2 + IOChunkSize/傳輸速度)單個IO大小尋道時間(ms)旋轉(zhuǎn)延遲(ms)c傳輸時延(ms)IO服務(wù)時間(ms)IOPS4K524K/40MB = 0.17.11408K528K/40MB = 0.27.213916K5216K/40MB = 0.47.413532K5232K/40MB = 0.87.8128當(dāng)單次IO越小的時候,單次IO所耗費的時間也越少,相應(yīng)的IOPS也就越大帶寬(Throughput)帶寬是指磁盤在實際使用的時候從磁盤系統(tǒng)總線上流過的數(shù)據(jù)量,也稱為磁盤的實際傳輸速率帶寬 = IOPS * IO大小利用率和響應(yīng)時間20b1915f5c8217bb33d202306f6dcb71.png固態(tài)硬盤價格逐漸下降,容量越來越大,固態(tài)硬盤(SSD)變得越來越流行SSD原理使用flash 技術(shù)存儲信息內(nèi)部沒有機械結(jié)構(gòu)耗電量更小散熱小噪音小基于SSD的使用頻率,其使用壽命有限SSD的3中主要的類型SLC(Single Level Cell): 單層式存儲單元MLC(Multi Level Cell): 多層式存儲單元TLC(Triple Levle Cell): 三層式存儲單元SLC-MLC-TLC4cf9876db5183c80ae7ded9281bd15a1.png在SLC 中,每個存儲單元(cell)只存1bit數(shù)據(jù): 0或1在MLC 中,每個存儲單元(cell)可存2bit數(shù)據(jù): 00, 01, 10, 11在TLC 中,每個存儲單元(cell)可存3bit數(shù)據(jù): 000, 001, 010, 011, 100, 101, 110, 111固態(tài)硬盤的磨損對SSD 盤的可靠性影響更大的其抗磨損能力,即其cell能被擦寫的次數(shù)企業(yè)級的SCL、MLC和TLC 在抗磨損方面的區(qū)別明顯類型容量可擦寫次數(shù)單位容量價格SLC小約100,000高eMLC(企業(yè)級別)中等約30,000中等cMLC(消費者)中等5000~10,000低TLC大500~1,000很低固態(tài)硬盤結(jié)構(gòu)13fcdb2965c3cbd48cd5359bac30447e.png無高速旋轉(zhuǎn)部件,性能高、功耗低多通道并發(fā),通道內(nèi)Flash顆粒復(fù)用時許支持TCQ/NCQ,一次響應(yīng)多個IO請求典型響應(yīng)時間低于0.1msSDD 性能優(yōu)勢響應(yīng)時間短機械硬盤的機械特性導(dǎo)致大部分時間浪費在尋道和機械延遲上,數(shù)據(jù)傳輸效率收到嚴(yán)重制約讀寫效率高機械硬盤在進行隨機讀寫曹祖時,磁頭不停的移動,導(dǎo)致讀寫效率低下而SSD 通過內(nèi)部控制器計算出數(shù)據(jù)的存放位置,直接進行存取操作,故效率高SSD 功耗優(yōu)勢162cec988a5abe41aef68791a5dea675.png文章知識點與官方知識檔案匹配CS入門技能樹Linux入門初識Linux21547 人正在系統(tǒng)學(xué)習(xí)中點擊閱讀全文打開CSDN APP,看更多技術(shù)內(nèi)容參與評論 請先 登錄 后發(fā)表或查看評論操作系統(tǒng)讀寫者問題實驗報告_Linux操作系統(tǒng)存儲子系統(tǒng)核心技術(shù)之硬盤與RAIDLinux操作系統(tǒng)的存儲子系統(tǒng)應(yīng)該是Linux中最為復(fù)雜的子系統(tǒng)了。其實很多子系統(tǒng)都認(rèn)為自己是最復(fù)雜的子系統(tǒng),比如內(nèi)存子系統(tǒng)和網(wǎng)絡(luò)子系統(tǒng)也這么說。無論如何,存儲子系統(tǒng)在Linux中是比較復(fù)雜的。今天我們就介紹一下Linux的存儲子系統(tǒng)中的硬盤與RAID的相關(guān)內(nèi)容,后面再寫一篇關(guān)于LVM與文件系統(tǒng)的內(nèi)容。硬盤在Linux的存儲子系統(tǒng)中,更底層的就是硬盤了。這里的硬盤并不是指我們看到的硬盤硬件,而是指…繼續(xù)訪問最新發(fā)布 Linux磁盤邏輯卷Linux邏輯卷的創(chuàng)建,添加繼續(xù)訪問LVM和磁盤配額 讓我們一起來看下吧LVM和磁盤配額 前言 許多Linux使用者在安裝操作系統(tǒng)時都會遇到這樣的困境;如何精確評估和分配各個硬盤分區(qū)的容量,如果當(dāng)初估計不準(zhǔn)確,一旦系統(tǒng)分區(qū)不夠用時可能不得不備份、刪除相關(guān)數(shù)據(jù),甚至被迫重新規(guī)劃分區(qū)并重裝操作系統(tǒng),以滿足應(yīng)用系統(tǒng)的需要。 LVM概述 Logical Volume Manager,邏輯卷管理 動態(tài)調(diào)整磁盤容量,從而提高磁盤管理的靈活性 /boot分區(qū)用于存放引導(dǎo)文件,不能基于LVM創(chuàng)建 圖形界面管理工具 system-config-lvm LVM 是 Linux 操作系統(tǒng)中對磁盤分區(qū)繼續(xù)訪問linux 磁盤控制器,linux – 戴爾R710上的PERC 6 / i RAID:單個控制器上的慢速磁盤…… RAID10?…這里有多個問題 – 但它從這開始:我們在RAID10配置中安裝了帶有PERC 6 / i RAID控制器(或控制器)的Dell PowerEdge R710.系統(tǒng)運行Ubuntu Server 10.04 LTS,MySQL執(zhí)行讀取密集型工作負(fù)載.我使用blockdev –setra ### / dev / sda增加了readahead以增加readahead(讀取至少在理論上是順序讀取).這似…繼續(xù)訪問IO系統(tǒng)性能之一:衡量性能的幾個指標(biāo)
幾個基本的概念 在研究磁盤性能之前我們必須先了解磁盤的結(jié)構(gòu),以及工作原理。不過在這里就不再重復(fù)說明了,關(guān)系硬盤結(jié)構(gòu)和工作原理的信息可以參考上面的相關(guān)詞條——Hard disk drive(英文)和硬盤驅(qū)動器(中文)。 讀寫IO(Read/Write IO繼續(xù)訪問如何添加windows 系統(tǒng)的邏輯磁盤并設(shè)置盤符在虛擬化及云計算平臺中經(jīng)常涉及動態(tài)添加磁盤,比如之前分配系統(tǒng)為一個100G的磁盤,隨著業(yè)務(wù)的需要,新增一個300G的業(yè)務(wù)磁盤,在虛擬化后臺添加完畢之后,如何在虛擬機添加邏輯磁盤并設(shè)置盤符呢?本文將介紹如何添加windows 系統(tǒng)的邏輯磁盤并設(shè)置盤符的方法。實驗環(huán)境:OS:windows server 2023目標(biāo):新增一個300G的磁盤,并設(shè)置為E盤。操作方法如下:…繼續(xù)訪問linux下磁盤控制器無法驅(qū)動,Linux eMMC子系統(tǒng)之主機控制器驅(qū)動(host conntroller driver)…1. 前言本文是Linux MMC framework的第二篇,將從驅(qū)動工程師的角度,介紹MMC host controller driver有關(guān)的知識,學(xué)習(xí)并掌握如何在MMC framework的框架下,編寫MMC控制器的驅(qū)動程序。同時,通過本篇文章,我們會進一步的理解MMC、SD、SDIO等有關(guān)的基礎(chǔ)知識。2. MMC host驅(qū)動介紹MMC的host driver,是用于驅(qū)動MMC host…繼續(xù)訪問Linux系統(tǒng)之磁盤管理一磁盤管理,固態(tài)硬盤,機械硬盤繼續(xù)訪問Linux系統(tǒng)的磁盤管理磁盤管理 文章目錄磁盤管理1磁盤結(jié)構(gòu)1.1硬盤的物理結(jié)構(gòu)1.2硬盤的數(shù)據(jù)結(jié)構(gòu)1.3硬盤存儲容量1.4 硬盤接口的類型2MBR與磁盤分區(qū)2.1 為什么分區(qū)2.2硬盤分區(qū)3.文件系統(tǒng)3.1 文件系統(tǒng):3.1.1 **XFS**3.1.2 swap3.1.3FAT16、FAT32、3.1.4NTFS(xfs)3.1.5EXT43.1.6 JFS4.分區(qū)工具4.1 fdisk4.2 blkid4.3mkfs4.4 mkswap5.掛載與解掛載5.1mount5.2 df 1磁盤結(jié)構(gòu) 1.1硬盤的物理結(jié)構(gòu)
作用: 用來存放數(shù)據(jù)(二進制方式來管理數(shù)據(jù))
分類
機械硬盤
固態(tài)硬盤
機械硬盤組成
盤片: 上面布滿磁性顆粒,保存寫入數(shù)據(jù)
主軸: 帶動盤片轉(zhuǎn)動,轉(zhuǎn)到磁頭的下方
讀/寫磁頭: 負(fù)責(zé)數(shù)據(jù)的讀寫
磁頭臂: 帶動磁頭咐塌,將磁頭移動到指定位置
控制電路: 控制硬盤的速度,磁頭臂的移動等等
機械磁盤的屬性
磁道: 盤片圍繞在主軸周圍的同心環(huán),編號由外至內(nèi)從0累加
扇區(qū): 磁道上被分成的更小的單位,也是磁盤中保存數(shù)據(jù)最小的存儲單元,一般大小為512k,也有更大的扇區(qū)4K
柱面: 在同一個磁盤中,所有盤片相同位置編號的磁道形成的一個圓柱
機械磁盤工作方式
主軸帶動盤帆槐片做圓周運動,磁頭臂帶動磁頭直徑運動
5838c4c164f3c12023a5f1eb3c51bb20.png
機械硬盤
常用總線協(xié)議/磁盤類型
SCSI協(xié)議
SCSI(Small Computer System Interface,小型計算機系統(tǒng)接口)最初是一種為了小型機研制的接口技術(shù),用于主機與外部設(shè)備態(tài)簡友之間的連接(最多可以連接16個設(shè)備)
SCSI 協(xié)議是主機與存儲磁盤通信的基本協(xié)議
DAS 使用SCSI 協(xié)議實現(xiàn)主機服務(wù)器與存儲設(shè)備的互連
5924aad5e3f1e60e60c51bdccd8c1a38.png
并行SCSI 的演變
(1981年)最初由 Shugart Associates、 NCR開發(fā),名字為SASI
ANSI 承認(rèn)其為工業(yè)標(biāo)準(zhǔn)
SCSI 的版本
SCSI-1
定義了線纜長度,信號特征,命令和傳輸模式
使用8 位窄總線,更大傳輸率為 5MB/s
SCSI-2
定義了通用命令集(Common Command Set, 簡稱CCS)
提高了性能,可靠性,新增了一些特性
SCSI-3
SCSI最新版本
由多個相關(guān)的標(biāo)準(zhǔn)組成,不再是一個大文件
SCSI-3 架構(gòu)
f06acbc904d372c38694d0c9c.png
SCSI命令協(xié)議(應(yīng)用層)
各類型設(shè)備通用的主要命令
傳輸層協(xié)議
設(shè)備間互連和信息共享的標(biāo)準(zhǔn)規(guī)則,scsi-3、fc等等
物理層互連
接口細(xì)節(jié): 比如電信號傳輸方法和數(shù)據(jù)傳輸模式
SCSI 協(xié)議模型
主機到存儲磁盤間的通信由啟動器發(fā)起,由目標(biāo)器接收和處理
c34ab2de157b29cb979e9392b1a5263f.png
SCSI 協(xié)議尋址
總線號: 區(qū)分不同的SCSI 總線
設(shè)備ID: 區(qū)分SCSI 總線上不同的設(shè)備
邏輯單元號: 區(qū)分SCSI 設(shè)備中的子設(shè)備
ATA 和 SATA
高級技術(shù)附件(Advanced Technology Attachment)是上世紀(jì)90 年代桌面機標(biāo)準(zhǔn)
采用可編程IO 技術(shù),速度和智能性不高
SATA(Serial Advanced Technology Attachment)是ATA 技術(shù)的升級版本,曾是桌面電腦ATA 接口硬盤的主要替代技術(shù)
因容量大,價格便宜,在企業(yè)級服務(wù)器和存儲系統(tǒng)中曾廣泛的被使用
現(xiàn)在多被更加智能的NL-SAS 接口的硬盤替代
Serial Attached SCSI(串行 SCSI 協(xié)議)
在企業(yè)級存儲系統(tǒng)中,SAS(Serial Attached SCSI)接口已經(jīng)取代并行連接SCSI 和 SATA 接口
特點
采用點對點連接方式
高帶寬(300M/s,600M/s)
效率高
支持熱插拔
I/O(Input/Ouput)操作
單個IO
操作系統(tǒng)內(nèi)核發(fā)出一個讀IO命令,當(dāng)控制磁盤的控制器接到這個指令后,控制器會給磁盤發(fā)送一個讀數(shù)據(jù)的指令,并同時將要讀取數(shù)據(jù)塊的地址傳送給磁盤,然后硬盤讀取數(shù)據(jù)傳送給控制器,并由控制器返回給操作系統(tǒng),完成一個IO操作
讀寫IO
寫磁盤為寫IO,讀數(shù)據(jù)為讀IO
隨機訪問(Random Access) 與連續(xù)訪問(Sequential Access): 由當(dāng)此IO 給出的扇區(qū)地址與上次IO 結(jié)束的扇區(qū)地址相差得是否較大決定
順序IO模式(Queue Mode)/并發(fā)IO模式(Burst Mode): 由磁盤組一次能執(zhí)行的IO 命令個數(shù)決定
完整的IO操作
當(dāng)控制器對硬盤發(fā)出一個IO操作指令的時候,磁盤的磁頭臂帶動讀寫磁頭離開著陸區(qū),然后移動到要操作初始數(shù)據(jù)塊所在的磁道正上方,此過程為尋道,消耗的時間為尋道時間
磁頭等到盤片旋轉(zhuǎn)到初始數(shù)據(jù)塊所在扇區(qū)的正上方,此時才能進行數(shù)據(jù)的讀取,這個過程稱之為旋轉(zhuǎn)時間
然后讀取相應(yīng)數(shù)據(jù),直到完成這次IO所操作的全部數(shù)據(jù),這個過程所花費的時間稱之為數(shù)據(jù)傳送時間
尋道時間
全程尋道時間: 磁頭橫跨整個磁盤的寬度所用的時間(著陸區(qū) –> 最外層0磁道)
平均尋道時間: 一般為全程尋道時間的1/3
道間尋道時間: 磁頭在相鄰磁道之間所用的時間
旋轉(zhuǎn)時延
決定于主軸的轉(zhuǎn)動速度
平均旋轉(zhuǎn)動延遲: 完全旋轉(zhuǎn)用時的一半
5400 rpm的磁盤平均旋轉(zhuǎn)時延: 5.5ms
15000 rpm的磁盤的平均旋轉(zhuǎn)時延: 2.0ms
數(shù)據(jù)傳輸時延
數(shù)據(jù)傳輸時延決定于數(shù)據(jù)傳輸速度,即單位時間內(nèi)傳輸?shù)臄?shù)據(jù)量
內(nèi)部傳輸速度: 數(shù)據(jù)從盤片扇區(qū)上傳送到硬盤上的內(nèi)部緩存的速度
外部傳輸速度: 接口的標(biāo)稱速度
IOPS
IOPS是IO系統(tǒng)每秒所執(zhí)行IO操作的次數(shù),是一個重要的用來衡量系統(tǒng)IO能力的參數(shù),對于單個磁盤,計算其完成一次IO所需要的時間來推算其IOPS
IOTime = 尋道時間 + 60s/轉(zhuǎn)速/2 + IOChunkSize/傳輸速度
IOPS = 1/IOTime = 1 / (尋道時間 + 60s/轉(zhuǎn)速/2 + IOChunkSize/傳輸速度)
單個IO大小
尋道時間(ms)
旋轉(zhuǎn)延遲(ms)
c傳輸時延(ms)
IO服務(wù)時間(ms)
IOPS
4K
4K/40MB = 0.1
7.1
140
8K
8K/40MB = 0.2
7.2
139
16K
16K/40MB = 0.4
7.4
135
32K
32K/40MB = 0.8
7.8
128
當(dāng)單次IO越小的時候,單次IO所耗費的時間也越少,相應(yīng)的IOPS也就越大
帶寬(Throughput)
帶寬是指磁盤在實際使用的時候從磁盤系統(tǒng)總線上流過的數(shù)據(jù)量,也稱為磁盤的實際傳輸速率
帶寬 = IOPS * IO大小
利用率和響應(yīng)時間
20b1915f5c8217bb33d202306f6dcb71.png
固態(tài)硬盤
價格逐漸下降,容量越來越大,固態(tài)硬盤(SSD)變得越來越流行
SSD原理
使用flash 技術(shù)存儲信息
內(nèi)部沒有機械結(jié)構(gòu)
耗電量更小
散熱小
噪音小
基于SSD的使用頻率,其使用壽命有限
SSD的3中主要的類型
SLC(Single Level Cell): 單層式存儲單元
MLC(Multi Level Cell): 多層式存儲單元
TLC(Triple Levle Cell): 三層式存儲單元
SLC-MLC-TLC
4cf9876db5183c80ae7ded9281bd15a1.png
在SLC 中,每個存儲單元(cell)只存1bit數(shù)據(jù): 0或1
在MLC 中,每個存儲單元(cell)可存2bit數(shù)據(jù): 00, 01, 10, 11
在TLC 中,每個存儲單元(cell)可存3bit數(shù)據(jù): 000, 001, 010, 011, 100, 101, 110, 111
固態(tài)硬盤的磨損
對SSD 盤的可靠性影響更大的其抗磨損能力,即其cell能被擦寫的次數(shù)
企業(yè)級的SCL、MLC和TLC 在抗磨損方面的區(qū)別明顯
類型
容量
可擦寫次數(shù)
單位容量價格
SLC
小
約100,000
高
eMLC(企業(yè)級別)
中等
約30,000
中等
cMLC(消費者)
中等
5000~10,000
低
TLC
大
500~1,000
很低
固態(tài)硬盤結(jié)構(gòu)
13fcdb2965c3cbd48cd5359bac30447e.png
無高速旋轉(zhuǎn)部件,性能高、功耗低
多通道并發(fā),通道內(nèi)Flash顆粒復(fù)用時許
支持TCQ/NCQ,一次響應(yīng)多個IO請求
典型響應(yīng)時間低于0.1ms
SDD 性能優(yōu)勢
響應(yīng)時間短
機械硬盤的機械特性導(dǎo)致大部分時間浪費在尋道和機械延遲上,數(shù)據(jù)傳輸效率收到嚴(yán)重制約
讀寫效率高
機械硬盤在進行隨機讀寫曹祖時,磁頭不停的移動,導(dǎo)致讀寫效率低下
而SSD 通過內(nèi)部控制器計算出數(shù)據(jù)的存放位置,直接進行存取操作,故效率高
SSD 功耗優(yōu)勢
162cec988a5abe41aef68791a5dea675.png
文章知識點與官方知識檔案匹配
CS入門技能樹Linux入門初識Linux
21547 人正在系統(tǒng)學(xué)習(xí)中
點擊閱讀全文
打開CSDN APP,看更多技術(shù)內(nèi)容
參與評論 請先 登錄 后發(fā)表或查看評論
操作系統(tǒng)讀寫者問題實驗報告_Linux操作系統(tǒng)存儲子系統(tǒng)核心技術(shù)之硬盤與RAID
Linux操作系統(tǒng)的存儲子系統(tǒng)應(yīng)該是Linux中最為復(fù)雜的子系統(tǒng)了。其實很多子系統(tǒng)都認(rèn)為自己是最復(fù)雜的子系統(tǒng),比如內(nèi)存子系統(tǒng)和網(wǎng)絡(luò)子系統(tǒng)也這么說。無論如何,存儲子系統(tǒng)在Linux中是比較復(fù)雜的。今天我們就介紹一下Linux的存儲子系統(tǒng)中的硬盤與RAID的相關(guān)內(nèi)容,后面再寫一篇關(guān)于LVM與文件系統(tǒng)的內(nèi)容。硬盤在Linux的存儲子系統(tǒng)中,更底層的就是硬盤了。這里的硬盤并不是指我們看到的硬盤硬件,而是指…
繼續(xù)訪問
最新發(fā)布 Linux磁盤邏輯卷
Linux邏輯卷的創(chuàng)建,添加
繼續(xù)訪問
LVM和磁盤配額 讓我們一起來看下吧
LVM和磁盤配額 前言 許多Linux使用者在安裝操作系統(tǒng)時都會遇到這樣的困境;如何精確評估和分配各個硬盤分區(qū)的容量,如果當(dāng)初估計不準(zhǔn)確,一旦系統(tǒng)分區(qū)不夠用時可能不得不備份、刪除相關(guān)數(shù)據(jù),甚至被迫重新規(guī)劃分區(qū)并重裝操作系統(tǒng),以滿足應(yīng)用系統(tǒng)的需要。 LVM概述 Logical Volume Manager,邏輯卷管理 動態(tài)調(diào)整磁盤容量,從而提高磁盤管理的靈活性 /boot分區(qū)用于存放引導(dǎo)文件,不能基于LVM創(chuàng)建 圖形界面管理工具 system-config-lvm LVM 是 Linux 操作系統(tǒng)中對磁盤分區(qū)
繼續(xù)訪問
linux 磁盤控制器,linux – 戴爾R710上的PERC 6 / i RAID:單個控制器上的慢速磁盤…… RAID10?…
這里有多個問題 – 但它從這開始:我們在RAID10配置中安裝了帶有PERC 6 / i RAID控制器(或控制器)的Dell PowerEdge R710.系統(tǒng)運行Ubuntu Server 10.04 LTS,MySQL執(zhí)行讀取密集型工作負(fù)載.我使用blockdev –setra ### / dev / sda增加了readahead以增加readahead(讀取至少在理論上是順序讀取).這似…
繼續(xù)訪問
IO系統(tǒng)性能之一:衡量性能的幾個指標(biāo)
幾個基本的概念 在研究磁盤性能之前我們必須先了解磁盤的結(jié)構(gòu),以及工作原理。不過在這里就不再重復(fù)說明了,關(guān)系硬盤結(jié)構(gòu)和工作原理的信息可以參考上面的相關(guān)詞條——Hard disk drive(英文)和硬盤驅(qū)動器(中文)。 讀寫IO(Read/Write IO
繼續(xù)訪問
如何添加windows 系統(tǒng)的邏輯磁盤并設(shè)置盤符
在虛擬化及云計算平臺中經(jīng)常涉及動態(tài)添加磁盤,比如之前分配系統(tǒng)為一個100G的磁盤,隨著業(yè)務(wù)的需要,新增一個300G的業(yè)務(wù)磁盤,在虛擬化后臺添加完畢之后,如何在虛擬機添加邏輯磁盤并設(shè)置盤符呢?本文將介紹如何添加windows 系統(tǒng)的邏輯磁盤并設(shè)置盤符的方法。實驗環(huán)境:OS:windows server 2023目標(biāo):新增一個300G的磁盤,并設(shè)置為E盤。操作方法如下:…
繼續(xù)訪問
linux下磁盤控制器無法驅(qū)動,Linux eMMC子系統(tǒng)之主機控制器驅(qū)動(host conntroller driver)…
1. 前言本文是Linux MMC framework的第二篇,將從驅(qū)動工程師的角度,介紹MMC host controller driver有關(guān)的知識,學(xué)習(xí)并掌握如何在MMC framework的框架下,編寫MMC控制器的驅(qū)動程序。同時,通過本篇文章,我們會進一步的理解MMC、SD、SDIO等有關(guān)的基礎(chǔ)知識。2. MMC host驅(qū)動介紹MMC的host driver,是用于驅(qū)動MMC host…
繼續(xù)訪問
Linux系統(tǒng)之磁盤管理一
磁盤管理,固態(tài)硬盤,機械硬盤
繼續(xù)訪問
Linux系統(tǒng)的磁盤管理
磁盤管理 文章目錄磁盤管理1磁盤結(jié)構(gòu)1.1硬盤的物理結(jié)構(gòu)1.2硬盤的數(shù)據(jù)結(jié)構(gòu)1.3硬盤存儲容量1.4 硬盤接口的類型2MBR與磁盤分區(qū)2.1 為什么分區(qū)2.2硬盤分區(qū)3.文件系統(tǒng)3.1 文件系統(tǒng):3.1.1 **XFS**3.1.2 swap3.1.3FAT16、FAT32、3.1.4NTFS(xfs)3.1.5EXT43.1.6 JFS4.分區(qū)工具4.1 fdisk4.2 blkid4.3mkfs4.4 mkswap5.掛載與解掛載5.1mount5.2 df 1磁盤結(jié)構(gòu) 1.1硬盤的物理結(jié)構(gòu)
繼續(xù)訪問
linux硬盤設(shè)置成AHCI,Linux下設(shè)置ICH7-M的磁盤控制器為AHCI模式
轉(zhuǎn)載請注明原文出處!【聲明】使用本文提供的方法設(shè)置ACHI而對硬件造成的損失,本人不承擔(dān)任何責(zé)任?。?理論上是沒什么問題的,還是聲明下的好:-|)===============================================================================================================================…
繼續(xù)訪問
linux物理分區(qū)與邏輯分區(qū)
前言 當(dāng)有一塊新的硬盤添加至Linux后需要在Linux下進行一定的操作后才能正常時候,其大概流程為: 先對磁盤進行分區(qū)(或者不進行),再將分區(qū)設(shè)置為物理卷,將設(shè)置好的物理卷添加到現(xiàn)有某一卷組下或創(chuàng)建一個新卷組,再將卷組內(nèi)的多余空間分配至原有的邏輯卷內(nèi)或者建立新的邏輯卷。如果是分配到新的邏輯卷,需要重新分配文件系統(tǒng)的大小;如果建立新的物理卷,則需要格式化后,再掛載到某一目錄下進行使用。 之一步:對…
繼續(xù)訪問
Linux 主分區(qū),擴展分區(qū)和邏輯分區(qū)
硬盤分區(qū)有三種,主磁盤分區(qū)、擴展磁盤分區(qū)、邏輯分區(qū)。一個硬盤主分區(qū)至少有1個,最多4個,擴展分區(qū)可以沒有,最多1個。且主分區(qū)+擴展分區(qū)總共不能超過4個。邏輯分區(qū)可以有若干個。在windows下激活的主分區(qū)是硬盤的啟動分區(qū),他是獨立的,也是硬盤的之一個分區(qū),正常分的話就是C區(qū)。 在linux下主分區(qū)和邏輯分區(qū)都可以用來放系統(tǒng),引導(dǎo)os開機,grub會兼容windows系統(tǒng)開機啟動。分出主分區(qū)后,其余
繼續(xù)訪問
Linux的主分區(qū)、擴展分區(qū)和邏輯分區(qū)
Linux中主分區(qū)、擴展分區(qū)和邏輯分區(qū)和Windows的概念差不多,這里來類比著介紹一下Linux中的概念。 【磁盤命名】 在Linux中,若干個IDE設(shè)備(如:硬盤,光盤)的命名規(guī)則如下:每個設(shè)備映射的文件名稱都有一個hd前綴,按字母表排序命名,從之一個往后依次為:hda,hdb,hdc……。要注意的是USB磁盤通常會被識別為SCSI設(shè)備,命名依次為:sda,sdb,sdc…。 【概要】 在Li…
繼續(xù)訪問
Linux-磁盤分區(qū)
磁盤分區(qū): 說明: 磁盤的分區(qū)主要分為基本分區(qū)(primary partion)和擴充分區(qū)(extension partion)兩種,基本分區(qū)和擴充分區(qū)的數(shù)目之和不能大于四個。且基本分區(qū)可以馬上被使用但不能再分區(qū)。擴充分區(qū)必須再進行分區(qū)后才能使用,也就是說它必須還要進行二次分區(qū)。那么由擴充分區(qū)…
繼續(xù)訪問
linux主分區(qū)和邏輯分區(qū)
1. 主分區(qū): linux下磁盤分區(qū)分為主分區(qū)和擴展分區(qū)兩種。且主分區(qū)和擴展分區(qū)數(shù)目只和不能大于四。主分區(qū)一經(jīng)創(chuàng)建,格式化后可立即使用擴展分區(qū)創(chuàng)建之后,無法直接格式化使用,必須進行二次邏輯分區(qū)且格式化后才能使用。邏輯分區(qū)沒有數(shù)量限制!2. linux下分區(qū)和命名方案: linux下通過字母和數(shù)字組合來表示磁盤分區(qū):/dev/sda1 /dev/sda2 ….. /dev:…
繼續(xù)訪問
Linux主分區(qū),擴展分區(qū),邏輯分區(qū)的聯(lián)系和區(qū)別
言歸正傳,在安裝CentOS5.3的過程中,會遇到磁盤分區(qū)的界面,下拉式菜單中有4個選項,這時你不要選擇默認(rèn),打開下拉式菜單,選擇最后一項(翻譯成中文意思是:建立自定義的分割模式)。然后選擇右下角的確認(rèn),在下一個對話界面里依序建立/、/home 及 swap ,完成后如圖。確認(rèn)設(shè)置后的分割區(qū)。
為強調(diào)重點,把圖中重要內(nèi)容,再寫一遍。
/根目錄ext3
繼續(xù)訪問
linux磁盤做邏輯卷步驟
查看當(dāng)前掛載使用的磁盤信息 # df -h 文件系統(tǒng) 容量 已用 可用 已用% 掛載點 /dev/mapper/centos_linux–template-root 90G 1.6G 89G 2% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs
繼續(xù)訪問
熱門推薦 Linux主分區(qū)、擴展分區(qū)、邏輯分區(qū)
在Linux系統(tǒng)下(其他操作系統(tǒng)也有類似的規(guī)定),磁盤的分區(qū)大致可以分為三類,分別為主分區(qū)、擴展分區(qū)和邏輯分區(qū)等等。Linux系統(tǒng)管理員在部署系統(tǒng)時,必須要對這三個分區(qū)進行一個合理的規(guī)劃,否則的話會浪費寶貴的硬盤空間。通常情況下,一個硬盤中最多能夠分割四個主分區(qū)。因為硬盤中分區(qū)表的大小只有64Bytes,而分割一個分區(qū)就需要利用16Bytes空間來存儲這個分…
繼續(xù)訪問
Linux邏輯卷分區(qū)大小調(diào)整
背景: 當(dāng)我們在安裝系統(tǒng)的時候,由于沒有合理的分區(qū),在后續(xù)使用過程中,發(fā)現(xiàn)在操作的時候,系統(tǒng)提示”No space left” = “硬盤空間不足” 1)了解linux文件系統(tǒng),linux文件系統(tǒng)分為ext2/3/4和xfs,針對不同的文件系統(tǒng),linux進行分區(qū)調(diào)整有不同的命令; 2)ext2/ext3/ext4調(diào)整分區(qū)大小的命令: lvextend -L +100G /dev/mappe…
繼續(xù)訪問
linux邏輯磁盤管理器
寫評論
評論
收藏
點贊
踩
分享
機械硬盤組成
盤片: 上面布滿磁性顆粒,保存寫入數(shù)據(jù)
主軸: 帶動盤片轉(zhuǎn)動,轉(zhuǎn)到磁頭的下方
讀/寫磁頭: 負(fù)責(zé)數(shù)據(jù)的讀寫
磁頭臂: 帶動磁頭,將磁頭移動到指定位置
控制電路: 控制硬盤的速度,磁頭臂的移動等等
機械磁盤的屬性
磁道: 盤片圍繞在主軸周圍的同心環(huán),編號由外至內(nèi)從0累加
扇區(qū): 磁道上被分成的更小的單位,也是磁盤中保存數(shù)據(jù)最小的存儲單元,一般大小為512k,也有更大的扇區(qū)4K
柱面: 在同一個磁盤中,所有盤片相同位置編號的磁道形成的一個圓柱
機械銀跡磁盤工作方式
主軸帶動盤片做圓周運動,磁頭臂帶動磁頭直徑運動
5838c4c164f3c12023a5f1eb3c51bb20.png
機械硬盤
常用總線協(xié)議/磁盤類型
SCSI協(xié)議
SCSI(Small Computer System Interface,碰搏改小型計算機系統(tǒng)接口)最初是一種為了小型機研制的接口技術(shù),用于主機與外部設(shè)備之間的連接(最多可以連接16個設(shè)備)
SCSI 協(xié)議是主機與存儲磁盤通信的基本協(xié)議
DAS 使用SCSI 協(xié)議實現(xiàn)主機服務(wù)器與存儲設(shè)備的互連
5924aad5e3f1e60e60c51bdccd8c1a38.png
并行SCSI 的演變
(1981年)最初由 Shugart Associates、 NCR開發(fā),名字為SASI
ANSI 承認(rèn)其為工業(yè)標(biāo)準(zhǔn)
SCSI 的版本
SCSI-1
定義了線纜長度,信號特征,命令和傳輸模式
使用8 位窄總線,更大傳輸率為 5MB/s
SCSI-2
定義了通用命令集(Common Command Set, 簡稱CCS)
提高了性能,可靠性,新增了一些特性
SCSI-3
SCSI最新版本
由多個相關(guān)的標(biāo)準(zhǔn)組成,不再是一個大文件
SCSI-3 架構(gòu)
f06acbc904d372c38694d0c9c.png
SCSI命令協(xié)議(應(yīng)用層)
各類型設(shè)備通用的主要命令
傳輸層協(xié)議
設(shè)備間互連和信息共享的標(biāo)準(zhǔn)規(guī)則,scsi-3、fc等等
物理層互連
接口細(xì)節(jié): 比如電信號傳輸方法和數(shù)據(jù)傳輸模式
SCSI 協(xié)議模型
主機到存儲磁盤間的通信由啟動器發(fā)起,由目標(biāo)器接收和處理
c34ab2de157b29cb979e9392b1a5263f.png
SCSI 協(xié)議尋址
總線號: 區(qū)分不同的SCSI 總線
設(shè)備ID: 區(qū)分SCSI 總線上不同的設(shè)備
邏輯單元號: 區(qū)分SCSI 設(shè)備中的子設(shè)備
ATA 和 SATA
高級技術(shù)附件(Advanced Technology Attachment)是上世紀(jì)90 年代桌面機標(biāo)準(zhǔn)
采用可編程IO 技術(shù),速度和智能性不高
SATA(Serial Advanced Technology Attachment)是ATA 技術(shù)的升級版本,曾是桌面電腦ATA 接口硬盤的主要替代技術(shù)
因容量大,價格便宜,在企業(yè)級服務(wù)器和存儲系統(tǒng)中曾廣泛的被使用
現(xiàn)在多被更加智能的NL-SAS 接口的硬盤替代
Serial Attached SCSI(串行 SCSI 協(xié)議)
在企業(yè)級存儲系統(tǒng)中,SAS(Serial Attached SCSI)接口已經(jīng)取代并行連接SCSI 和 SATA 接口
特點
采用點對點連接方式
高帶寬(300M/s,600M/s)
效率高
支持熱插拔
I/O(Input/Ouput)操作
單個IO
操作系統(tǒng)內(nèi)核發(fā)出一個讀IO命令,當(dāng)控制磁盤的控制器接到這個指令后,控制器會給磁盤發(fā)送一個讀數(shù)據(jù)的指令,并同時將要讀取數(shù)據(jù)塊的地址傳送給磁盤,然后硬盤讀取數(shù)據(jù)傳送給控制器,并由控制器返回給操作系統(tǒng),完成一個IO操作
讀寫IO
寫磁盤為寫IO,讀數(shù)據(jù)為讀IO
隨機訪問(Random Access) 與連續(xù)訪問(Sequential Access): 由當(dāng)此IO 給出的扇區(qū)地址與上次IO 結(jié)束的扇區(qū)地址相差得是否較大決定
順序IO模式(Queue Mode)/并發(fā)IO模式(Burst Mode): 由磁盤組一次能執(zhí)行的IO 命令個數(shù)決定
完整的IO操作
當(dāng)控制器對硬盤發(fā)出一個IO操作指令的時候,磁盤的磁頭臂帶動讀寫磁頭離開著陸區(qū),然后移笑判動到要操作初始數(shù)據(jù)塊所在的磁道正上方,此過程為尋道,消耗的時間為尋道時間
磁頭等到盤片旋轉(zhuǎn)到初始數(shù)據(jù)塊所在扇區(qū)的正上方,此時才能進行數(shù)據(jù)的讀取,這個過程稱之為旋轉(zhuǎn)時間
然后讀取相應(yīng)數(shù)據(jù),直到完成這次IO所操作的全部數(shù)據(jù),這個過程所花費的時間稱之為數(shù)據(jù)傳送時間
尋道時間
全程尋道時間: 磁頭橫跨整個磁盤的寬度所用的時間(著陸區(qū) –> 最外層0磁道)
平均尋道時間: 一般為全程尋道時間的1/3
道間尋道時間: 磁頭在相鄰磁道之間所用的時間
旋轉(zhuǎn)時延
決定于主軸的轉(zhuǎn)動速度
平均旋轉(zhuǎn)動延遲: 完全旋轉(zhuǎn)用時的一半
5400 rpm的磁盤平均旋轉(zhuǎn)時延: 5.5ms
15000 rpm的磁盤的平均旋轉(zhuǎn)時延: 2.0ms
數(shù)據(jù)傳輸時延
數(shù)據(jù)傳輸時延決定于數(shù)據(jù)傳輸速度,即單位時間內(nèi)傳輸?shù)臄?shù)據(jù)量
內(nèi)部傳輸速度: 數(shù)據(jù)從盤片扇區(qū)上傳送到硬盤上的內(nèi)部緩存的速度
外部傳輸速度: 接口的標(biāo)稱速度
IOPS
IOPS是IO系統(tǒng)每秒所執(zhí)行IO操作的次數(shù),是一個重要的用來衡量系統(tǒng)IO能力的參數(shù),對于單個磁盤,計算其完成一次IO所需要的時間來推算其IOPS
IOTime = 尋道時間 + 60s/轉(zhuǎn)速/2 + IOChunkSize/傳輸速度
IOPS = 1/IOTime = 1 / (尋道時間 + 60s/轉(zhuǎn)速/2 + IOChunkSize/傳輸速度)
單個IO大小
尋道時間(ms)
旋轉(zhuǎn)延遲(ms)
c傳輸時延(ms)
IO服務(wù)時間(ms)
IOPS
4K
4K/40MB = 0.1
7.1
140
8K
8K/40MB = 0.2
7.2
139
16K
16K/40MB = 0.4
7.4
135
32K
32K/40MB = 0.8
7.8
128
當(dāng)單次IO越小的時候,單次IO所耗費的時間也越少,相應(yīng)的IOPS也就越大
帶寬(Throughput)
帶寬是指磁盤在實際使用的時候從磁盤系統(tǒng)總線上流過的數(shù)據(jù)量,也稱為磁盤的實際傳輸速率
帶寬 = IOPS * IO大小
利用率和響應(yīng)時間
固態(tài)硬盤
價格逐漸下降,容量越來越大,固態(tài)硬盤(SSD)變得越來越流行
SSD原理
使用flash 技術(shù)存儲信息
內(nèi)部沒有機械結(jié)構(gòu)
耗電量更小
散熱小
噪音小
基于SSD的使用頻率,其使用壽命有限
SSD的3中主要的類型
SLC(Single Level Cell): 單層式存儲單元
MLC(Multi Level Cell): 多層式存儲單元
TLC(Triple Levle Cell): 三層式存儲單元
SLC-MLC-TLC
在SLC 中,每個存儲單元(cell)只存1bit數(shù)據(jù): 0或1
在MLC 中,每個存儲單元(cell)可存2bit數(shù)據(jù): 00, 01, 10, 11
在TLC 中,每個存儲單元(cell)可存3bit數(shù)據(jù): 000, 001, 010, 011, 100, 101, 110, 111
固態(tài)硬盤的磨損
對SSD 盤的可靠性影響更大的其抗磨損能力,即其cell能被擦寫的次數(shù)
企業(yè)級的SCL、MLC和TLC 在抗磨損方面的區(qū)別明顯
類型
容量
可擦寫次數(shù)
單位容量價格
SLC
小
約100,000
高
eMLC(企業(yè)級別)
中等
約30,000
中等
cMLC(消費者)
中等
5000~10,000
低
TLC
大
500~1,000
很低
固態(tài)硬盤結(jié)構(gòu)
無高速旋轉(zhuǎn)部件,性能高、功耗低
多通道并發(fā),通道內(nèi)Flash顆粒復(fù)用時許
支持TCQ/NCQ,一次響應(yīng)多個IO請求
典型響應(yīng)時間低于0.1ms
SDD 性能優(yōu)勢
響應(yīng)時間短
機械硬盤的機械特性導(dǎo)致大部分時間浪費在尋道和機械延遲上,數(shù)據(jù)傳輸效率收到嚴(yán)重制約
讀寫效率高
機械硬盤在進行隨機讀寫曹祖時,磁頭不停的移動,導(dǎo)致讀寫效率低下
而SSD 通過內(nèi)部控制器計算出數(shù)據(jù)的存放位置,直接進行存取操作,故效率高
SSD 功耗優(yōu)勢
作用: 用來存放數(shù)據(jù)(二進制方式來管理數(shù)據(jù))分類機械硬盤固態(tài)硬盤機械硬盤組成盤片: 上面布滿磁性顆粒,保存寫入數(shù)據(jù)主軸: 帶動盤片轉(zhuǎn)動,轉(zhuǎn)到磁頭的下方讀/寫磁頭: 負(fù)責(zé)數(shù)據(jù)的讀寫磁頭臂: 帶動磁頭,將磁頭移動到指定位置控制電路: 控制硬盤的速度,磁頭臂的移動等等機械磁盤的屬性磁道: 盤片圍繞在主軸周圍的同心環(huán),編號由外至內(nèi)從0累加扇區(qū): 磁道上被分成的更小的單位,也是磁盤中保存數(shù)據(jù)最小的存儲單元,一般大小為512k,也有更大的扇區(qū)4K柱面: 在同一個磁盤中,所有盤片相同位置編號的磁道形成的一個圓柱機械磁盤工作方式主軸帶動盤片做圓周運動,磁頭臂帶動磁頭直徑運動5838c4c164f3c12023a5f1eb3c51bb20.png機械硬盤常用總線協(xié)議/磁盤類型SCSI協(xié)議SCSI(Small Computer System Interface,小型計算
網(wǎng)頁標(biāo)題:簡單易懂的Linux系統(tǒng)IOPS查看方法!(linux系統(tǒng)iops查看)
文章位置:http://fisionsoft.com.cn/article/dphpcop.html


咨詢
建站咨詢
