溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)

發(fā)布時間:2020-06-26 09:46:02 來源:網(wǎng)絡 閱讀:13321 作者:xitaotao 欄目:建站服務器


fio是一種I / O工具,用于基準測試和壓力/硬件驗證。它支持19種不同類型的I / O引擎(sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio等),I / O優(yōu)先級(適用于較新的Linux內(nèi)核) ,評估I / O,分叉或線程作業(yè)等等。它可以在塊設備和文件上工作。fio以簡單易懂的文本格式接受職位描述。包含幾個示例作業(yè)文件。fio顯示各種I / O性能信息,包括完整的IO延遲和百分位數(shù)。Fio在許多地方廣泛使用,用于基準測試,QA和驗證目的。它支持Linux,F(xiàn)reeBSD,NetBSD,OpenBSD,OS X,OpenSolaris,AIX,HP-UX,Android和Windows。
fio 官網(wǎng)地址:http://freshmeat.net/projects/fio/

安裝:  

        yum install fio –y

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)

用法

      fio分順序讀  -rw=read ,隨機讀 -rw=randread,順序?qū)?-rw=write,隨機寫-rw=randwrite ,混合隨機讀寫模式  -rw=randrw

參數(shù):

       filename: 指定文件(設備)的名稱。可以通過冒號分割同時指定多個文件,如filename=/dev/sda:/dev/sdb。

       directory: 設置filename的路徑前綴。在后面的基準測試中,采用這種方式來指定設備。

       name: 指定job的名字,在命令行中表示新啟動一個job。

       direct: bool類型,如果設置成true (1),表示不使用io buffer。

        ioengine: I/O引擎,現(xiàn)在fio支持19種ioengine。默認值是sync同步阻塞I/O,libaio是Linux的native異步I/O。

       iodepth: 如果ioengine采用異步方式,該參數(shù)表示一批提交保持的io單元數(shù)。該參數(shù)可參考文章“Fio壓測工具和io隊列深度理解和誤區(qū)”。

       rw: I/O模式,隨機讀寫,順序讀寫等等。

       bs: I/O block大小,默認是4k。

       size: 指定job處理的文件的大小。

       numjobs: 指定job的克隆數(shù)(線程)。

       time_based: 如果在runtime指定的時間還沒到時文件就被讀寫完成,將繼續(xù)重復知道runtime時間結(jié)束。

       runtime: 指定在多少秒后停止進程。如果未指定該參數(shù),fio將執(zhí)行至指定的文件讀寫完全完成。

       group_reporting: 當同時指定了numjobs了時,輸出結(jié)果按組顯示。

下面是帶數(shù)字的解釋:

   direct=1             #測試過程繞過機器自帶的buffer。使測試結(jié)果更真實
   rw=randwrite         #測試隨機寫的I/O
   rw=randrw            #測試隨機寫和讀的I/O
   bs=16k               #單次io的塊文件大小為16k
   bsrange=512-2048     #同上,提定數(shù)據(jù)塊的大小范圍
   size=5G              #本次的測試文件大小為5g,以每次4k的io進行測試
   numjobs=30           #本次的測試線程為30個
   runtime=1000         #測試時間1000秒,如果不寫則一直將5g文件分4k每次寫完為止
   ioengine=psync       #io引擎使用psync方式
   rwmixwrite=30        #在混合讀寫的模式下,寫占30%
   group_reporting      #關于顯示結(jié)果的,匯總每個進程的信息
   lockmem=1G           #只使用1g內(nèi)存進行測試
   zero_buffers         #用0初始化系統(tǒng)buffer
   nrfiles=8            #每個進程生成文件的數(shù)量

       filename參數(shù)指定某個要測試的裸設備(硬盤或分區(qū)),切勿在系統(tǒng)分區(qū)做測試,會破壞系統(tǒng)分區(qū),而導致系統(tǒng)崩潰。若一定要測試系統(tǒng)分區(qū)較為安全的方法是:在根目錄下創(chuàng)建一個空目錄,在測試命令中使用directory參數(shù)指定該目錄,而不使用filename參數(shù)。

例如:要測試根目錄

               mkdir /test/
               fio -directory=/test/ ……

我建了一個/data

fio -directory=/data/ -name=tempfile.dat -direct=1 -rw=randwrite -bs=4k -size=1M -numjobs=16 -time_based -runtime=100 -group_reporting

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)


看看生成的一堆文件

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)

#復制下面的配置內(nèi)容,將directory=/path/to/test修改為你測試硬盤掛載目錄的地址,并另存為fio.conf

[global]
ioengine=libaio
direct=1
thread=1
norandommap=1
randrepeat=0
runtime=60
ramp_time=6
size=1g
directory=/data
[read4k-rand]
stonewall
group_reporting
bs=4k
rw=randread
numjobs=8
iodepth=32
[read64k-seq]
stonewall
group_reporting
bs=64k
rw=read
numjobs=4
iodepth=8
[write4k-rand]
stonewall
group_reporting
bs=4k
rw=randwrite
numjobs=2
iodepth=4
[write64k-seq]
stonewall
group_reporting
bs=64k
rw=write
numjobs=2
iodepth=4


#測試

fio fio.conf


--------------------- 

怎么跑路的:

    我之前用的dd命令測試的硬盤性能

?使用dd命令來測量服務器的吞吐率(寫速度) dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync

?使用dd命令測量服務器延遲 dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync

?if=/dev/zero (if=/dev/input.file) :用來設置dd命令讀取的輸入文件名。 

?of=/tmp/test1.img (of=/path/to/output.file):dd命令將input.file寫入的輸出文件的名字。 

?bs=1G (bs=block-size) :設置dd命令讀取的塊的大小。例子中為1個G。 

?count=1 (count=number-of-blocks):dd命令讀取的塊的個數(shù)。 

?oflag=dsync (oflag=dsync) :使用同步I/O。不要省略這個選項。這個選項能夠幫助你去除caching的影響,以便呈現(xiàn)給你精準的結(jié)果。 

?conv=fdatasyn: 這個選項和oflag=dsync含義一樣。

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)



QQ群里一個小伙說用fio測試才準確,差 你個糟老頭子,我信了你個鬼。

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)

我就執(zhí)行了下面的命令 ,sda1是系統(tǒng)所在的盤。

fio -name iops -rw=write -bs=4k -runtime=60 -iodepth 32 -filename /dev/sda1 -ioengine libaio -direct=1

還沒執(zhí)行完系統(tǒng)就斷了,聯(lián)系機房看了下報錯,文件系統(tǒng)崩潰了,哎 哎 哎 不讓說哎 就說哎


fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)


我能怎么辦只能下面這個樣子了:

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)

dd命令測試的是對的

dd if=/dev/zero of=/tmp/test.dbf bs=4k count=10000  oflag=dsync

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)

另外一個就快

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)

為什么差距這么大呢?后來發(fā)現(xiàn)是因為一個是sas卡 一個是raid卡 raid卡有緩存比sas卡快

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)

fio 命令入門到跑路(千萬不能在系統(tǒng)所在的分區(qū)測試硬盤性能)


到最后終于找到原因了,奉勸你不要用這個fio命令,趕緊忘記他,去你的fio命令


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI