一、FIO工具安裝:
1、查看fio是否安裝
[root@localhost /]#rpm –qa|grep fio
2、源碼安裝(推薦)
官網地址:http://freecode.com/projects/fio/
源碼安裝包:http://brick.kernel.dk/snaps/fio-2.1.10.tar.gz
安裝
[root@lh fio-2.1.10]# ./configure [root@lh fio-2.1.10]# make [root@lh fio-2.1.10]# make install
[root@lh fio-2.1.10]# fio --help
3、如果未成功就用rpm安裝
獲取fio的rpm安裝包然后
[root@localhost tmp]#rpm -ivh fio-2.0.9-1.el6.rf.x86_64.rpm warning: fio-2.0.9-1.el6.rf.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY Preparing... ########################################### [100%] 1:fio ########################################### [100%]
4、異常及解決方法
1. fio: failed to load engine libaio 答:yum install libaio-devel 然后重新編譯fio
二、FIO工具使用方法:
參數說明:
filename=/dev/sdb1 測試文件名稱,通常選擇需要測試的盤的data目錄。
direct=1 測試過程繞過機器自帶的buffer。使測試結果更真實。
rw=randwrite 測試隨機寫的I/O
rw=randrw 測試隨機寫和讀的I/O
bs=16k 單次io的塊文件大小為16k
bsrange=512-2048 同上,提定數據塊的大小范圍
size=5g 本次的測試文件大小為5g,以每次4k的io進行測試。
numjobs=30 本次的測試線程為30.
runtime=1000 測試時間為1000秒,如果不寫則一直將5g文件分4k每次寫完為止。
ioengine=psync io引擎使用pync方式
rwmixwrite=30 在混合讀寫的模式下,寫占30%
group_reporting 關於顯示結果的,匯總每個進程的信息。
此外
lockmem=1g 只使用1g內存進行測試。
zero_buffers 用0初始化系統buffer。
nrfiles=8 每個進程生成文件的數量。
磁盤讀寫常用測試點:
1. Read=100% Ramdon=100% rw=randread (100%隨機讀)
2. Read=100% Sequence=100% rw=read (100%順序讀)
3. Write=100% Sequence=100% rw=write (100%順序寫)
4. Write=100% Ramdon=100% rw=randwrite (100%隨機寫)
5. Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=30
(70%順序讀,30%順序寫)
6. Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30
(70%隨機讀,30%隨機寫)
1) 順序寫:
描述:向/dev/sda分區存儲上以2M塊文件大小順序寫1100GB文件
fio -output=/tmp/100S100W -name=100S100W -filename=/dev/sda -ioengine=libaio -direct=1 -blocksize=2M -size=1100GB -rw=write -iodepth=8 -numjobs=1
2)隨機寫:
描述:向/dev/sda分區存儲上以2M塊文件大小隨機寫1100GB文件
fio -output=/tmp/100R100W -name=100R100W -filename=/dev/sdb:/dev/sdc:/dev/sdd -ioengine=libaio -direct=1 -blocksize=2M -size=3356GB -rw=randwrite -iodepth=8 -numjobs=1
3)順序讀:
fio -output=/tmp/100S100W -name=100S100W -filename=/dev/sda -ioengine=libaio -direct=1 -blocksize=2M –runtime=1800 -rw=read -iodepth=8 -numjobs=1
4) 隨機讀:
fio -output=/tmp/100S100Wsdbsdcsdd -name=100S100W -write_bw_log=bw_log -write_lat_log=lat_log -filename=/dev/sdb:/dev/sdc:/dev/sdd -ioengine=libaio -direct=1 -blocksize=2M -runtime=1800 -rw=randread -iodepth=32 -numjobs=1
5)混合隨機讀寫:
描述:70%隨機讀,30%隨機寫,以2M塊文件大小向/dev/sdb:/dev/sdc:/dev/sdd三個分區存儲上隨機讀寫300s時間
fio -output=/tmp/100S100W -name=100S100W -filename=/dev/sdb:/dev/sdc:/dev/sdd -ioengine=libaio -direct=1 -blocksize=2M -runtime=300 -rw=randrw -rwmixread=70 -rwmixwrite=30 -iodepth=32 -numjobs=1
監控磁盤IO命令:iostat –mx 1 (iostat的安裝方法:yum install sysstat)
[root@localhost tmp]# iostat -mx 1 Linux 2.6.32-220.el6.x86_64 (localhost.localdomain) XXXX年XX月XX日 _x86_64_ (32 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 12.74 0.00 8.95 0.04 0.00 78.27 Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util sda 0.18 10.05 0.31 7.67 0.01 0.07 18.77 0.00 0.28 0.14 0.11 sdb 0.69 0.10 15.74 11.21 0.17 2.45 190.77 0.34 12.10 0.23 0.63 sdc 0.43 0.06 9.58 5.94 0.13 1.20 176.32 0.03 1.70 0.16 0.25
