kxbin
          成功留給有準(zhǔn)備的人
          posts - 10,  comments - 35,  trackbacks - 0

          一、linux下測試磁盤的讀寫IO速度



          1. 有時(shí)候我們在做維護(hù)的時(shí)候,總會遇到類似于IO特別高,但不能判定是IO瓶頸還是軟件參數(shù)設(shè)置不當(dāng)導(dǎo)致熱盤的問題.這時(shí)候通常希望能知道磁盤的讀寫速度,來進(jìn)行下一步的決策.
          2. 下面是兩種測試方法:
          3. (1)使用hdparm命令
          4. 這是一個是用來獲取ATA/IDE硬盤的參數(shù)的命令,是由早期Linux IDE驅(qū)動的開發(fā)和維護(hù)人員 Mark Lord開發(fā)編寫的( hdparm has been written by Mark Lord <mlord@pobox.com>, the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk).該命令應(yīng)該也是僅用于Linux系統(tǒng),對于UNIX系統(tǒng),ATA/IDE硬盤用的可能比較少,一般大型的系統(tǒng)都是使用磁盤陣列的.
          5. 使用方法很簡單
          6. # hdparm -Tt /dev/sda
          7. /dev/sda:
          8. Timing cached reads: 6676 MB in 2.00 seconds = 3340.18 MB/sec
          9. Timing buffered disk reads: 218 MB in 3.11 seconds = 70.11 MB/sec
          10. 可以看到,2秒鐘讀取了6676MB的緩存,約合3340.18 MB/sec;
          11. 在3.11秒中讀取了218MB磁盤(物理讀),讀取速度約合70.11 MB/sec
          12. (2)使用dd命令
          13. 這不是一個專業(yè)的測試工具,不過如果對于測試結(jié)果的要求不是很苛刻的話,平時(shí)可以使用來對磁盤的讀寫速度作一個簡單的評估.
          14. 另外由于這是一個免費(fèi)軟件,基本上×NIX系統(tǒng)上都有安裝,對于Oracle裸設(shè)備的復(fù)制遷移,dd工具一般都是首選.
          15. 在使用前首先了解兩個特殊設(shè)備
          16. /dev/null 偽設(shè)備,回收站.寫該文件不會產(chǎn)生IO
          17. /dev/zero 偽設(shè)備,會產(chǎn)生空字符流,對它不會產(chǎn)生IO
          18. 測試方法:
          19. a.測試磁盤的IO寫速度
          20. # time dd if=/dev/zero of=/test.dbf bs=8k count=300000
          21. 300000+0 records in
          22. 300000+0 records out
          23. 10.59s real 0.43s user 9.40s system
          24. # du -sm /test.dbf
          25. 2347 /test.dbf
          26. 可以看到,在10.59秒的時(shí)間里,生成2347M的一個文件,IO寫的速度約為221.6MB/sec;
          27. 當(dāng)然這個速度可以多測試幾遍取一個平均值,符合概率統(tǒng)計(jì).
          28. b.測試磁盤的IO讀速度
          29. # df -m
          30. Filesystem 1M-blocks Used Available Use% Mounted on
          31. /dev/mapper/VolGroup00-LogVol00
          32. 19214 9545 8693 53% /
          33. /dev/sda1 99 13 82 14% /boot
          34. none 506 0 506 0% /dev/shm
          35. # time dd if=/dev/mapper/VolGroup00-LogVol00 of=/dev/null bs=8k
          36. 2498560+0 records in
          37. 2498560+0 records out
          38. 247.99s real 1.92s user 48.64s system
          39. 上面的試驗(yàn)在247.99秒的時(shí)間里讀取了19214MB的文件,計(jì)算下來平均速度為77.48MB/sec
          40. c.測試IO同時(shí)讀和寫的速度
          41. # time dd if=/dev/sda1 of=test.dbf bs=8k
          42. 13048+1 records in
          43. 13048+1 records out
          44. 3.73s real 0.04s user 2.39s system
          45. # du -sm test.dbf
          46. 103 test.dbf
          47. 上面測試的數(shù)據(jù)量比較小,僅作為參考.
          48. 相比兩種方法:
          49. 前者是linux上專業(yè)的測試IDE/ATA磁盤的工具,但是使用范圍有局限性;(此試驗(yàn)僅僅使用了測試磁盤IO的參數(shù),對于其他參數(shù)及解釋參考man手冊)
          50. 后者可以通用,但不夠?qū)I(yè),也沒有考慮到緩存和物理讀的區(qū)分,測試的數(shù)據(jù)也是僅作參考,不能算是權(quán)威.

          二、linux 下 find 命令的高級用法
           

          1. 以前寫過一篇find命令的初級用法,今天總結(jié)下它的一些高級用法;先附上以前那篇find的文章鏈接:
          2. http://blog.chinaunix.net/uid-24485075-id-2211571.html
          3. 1. 首先介紹一個-exce參數(shù)它可以在搜索的結(jié)構(gòu)中使用shell命令:
          4. find PATH OPTION [-exec COMMAND { } \;]
          5. 注意格式要正確:"-exec 命令 {} \;" 在}和\之間一定要有空格才行;
          6. {}表示命令的參數(shù)即為所找到的文件;命令的末尾必須以“ \;”結(jié)束。
          7. 例子1:在root以及子目錄查找不包括目錄/root/bin的,greek用戶的,文件類型為普通文件的,3天之前的名為test-find.c的文件,并將結(jié)構(gòu)輸出,find命令如下:
          8. find / -name "test-find.c" -type f -mtime 3 -user greek -prune
          9. /root/bin -print
          10. 對上述例子搜索出來的文件進(jìn)行刪除操作,命令如下:
          11. find / -name "test-find.c" -type f -mtime 3 -user greek -prune /root/bin -exec rm {} \;
          12. 例子2:為了查找系統(tǒng)中所有文件長度為0的普通文件,并列出它們的完整路徑;
          13. find / -type f -size 0 -exec ls -l { } \;
          14. 2.再來看看xargs參數(shù),在使用 find命令的-exec選項(xiàng)處理匹配到的文件時(shí), find命令將所有匹配到的文件一起傳遞給exec執(zhí)行。但有些系統(tǒng)對能夠傳遞給exec的命令長度有限制,這樣在find命令運(yùn)行幾分鐘之后,就會出現(xiàn)溢出錯誤。錯誤信息通常是“參數(shù)列太長”或“參數(shù)列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。
          15. find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項(xiàng)那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,并如此繼續(xù)下去。
          16. 在有些系統(tǒng)中,使用-exec選項(xiàng)會為處理每一個匹配到的文件而發(fā)起一個相應(yīng)的進(jìn)程,并非將匹配到的文件全部作為參數(shù)一次執(zhí)行;這樣在有些情況下就會出現(xiàn)進(jìn)程過多,系統(tǒng)性能下降的問題,因而效率不高;
          17. 而使用xargs命令則只有一個進(jìn)程。另外,在使用xargs命令時(shí),究竟是一次獲取所有的參數(shù),還是分批取得參數(shù),以及每一次獲取參數(shù)的數(shù)目都會根據(jù)該命令的選項(xiàng)及系統(tǒng)內(nèi)核中相應(yīng)的可調(diào)參數(shù)來確定。
          18. 來看看xargs命令是如何同find命令一起使用的,并給出一些例子。
          19. 下面的例子查找系統(tǒng)中的每一個普通文件,然后使用xargs命令來測試它們分別屬于哪類文件
          20. find . -type f -print | xargs file
          21. ./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
          22. ./.kde/Autostart/.directory: ISO-8859 text\
          23. ......
          24. 在整個系統(tǒng)中查找內(nèi)存信息轉(zhuǎn)儲文件(core dump) ,然后把結(jié)果保存到/tmp/core.log 文件中:
          25. find / -name "core" -print | xargs echo "" >/tmp/core.log
          26. 上面這個執(zhí)行太慢,我改成在當(dāng)前目錄下查找
          27. find . -name "file*" -print | xargs echo "" > /temp/core.log
          28. cat /temp/core.log
          29. ./file6
          30. 3.使用find查找文件的時(shí)候怎么避開某個文件目錄,那就得看prune這個參數(shù)了。
          31. 比如要在/usr/sam目錄下查找不在dir1子目錄之內(nèi)的所有文件
          32. find /usr/sam -path "/usr/sam/dir1" -prune -o -print
          33. find [-path ..] [expression] 在路徑列表的后面的是表達(dá)式-path" /usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o -print 的簡寫表達(dá)式按順序求值, -a 和 -o 都是短路求值,與 shell 的 && 和 || 類似如果 -path "/usr/sam" 為真,則求值 -prune , -prune 返回真,與邏輯表達(dá)式為真;否則不求值 -prune,與邏輯表達(dá)式為假。如果 -path "/usr/sam" -a -prune 為假,則求值 -print, -print返回真,或邏輯表達(dá)式為真;否則不求值 -print,或邏輯表達(dá)式為真。
          34. 這個表達(dá)式組合特例可以用偽碼寫為:
          35. if -path "/usr/sam" then
          36. -prune
          37. else
          38. -print
          39. 避開多個文件夾
          40. find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print
          41. 圓括號表示表達(dá)式的結(jié)合。\ 表示引用,即指示 shell 不對后面的字符作特殊解釋,而留給 find 命令去解釋其意義。
          42. 查找某一確定文件,-name等選項(xiàng)加在-o 之后
          43. find /usr/sam \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print
          44. 我們已經(jīng)看過了 find 命令的一些更加有用以及有點(diǎn)難懂的功能,但是 find 還可以執(zhí)行更多的任務(wù)。例如,有多個選項(xiàng)可以使 find 與較低的 UNIX 版本和其他操作系統(tǒng)相兼容并允許您執(zhí)行打印輸出到多個文件等操作。
          三、linux 下硬鏈接和軟連接

          1. 硬鏈接:新建的文件是已經(jīng)存在的文件的一個別名,當(dāng)原文件刪除時(shí),新建的文件仍然可以使用
          2. 軟連接:也稱符號連接,新建的文件以“路徑”的形式來表示另一個文件,和windows的快捷方式類似,新建的軟連接可以之間不存在的文件
          3. n
          4. 這是linux中一個非常重要命令,請大家一定要熟悉。它的功能是為某一個文件在另外一個位置建立一個同不的鏈接,這
          5. 個命令最常用的參數(shù)是-s,具體用法是:ln -s 源文件 目標(biāo)文件。
          6. 當(dāng)我們需要在不同的目錄,用到相同的文件時(shí),我們不需要在每一個需要的目錄下都放一個必須相同的文件,我們只要
          7. 在某個固定的目錄,放上該文件,然后在其它的目錄下用ln命令鏈接(link)它就可以,不必重復(fù)的占用磁盤空間。例
          8. 如:ln -s /bin/less /usr/local/bin/less
          9. -s 是代號(symbolic)的意思。
          10. 這里有兩點(diǎn)要注意:
          11. 第一,ln命令會保持每一處鏈接文件的同步性,也就是說,不論你改動了哪一處,其它的文件都會發(fā)生相同的變化;
          12. 第二,ln的鏈接又軟鏈接和硬鏈接兩種,軟鏈接就是ln -s ** **,它只會在你選定的位置上生成一個文件的鏡像,不會
          13. 占用磁盤空間,硬鏈接ln ** **,沒有參數(shù)-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,無論是軟鏈
          14. 接還是硬鏈接,文件都保持同步變化。
          15. 第三,軟鏈接是可以跨分區(qū)的,但是硬鏈接只能在同一分區(qū)內(nèi)。
          16. 如果你用ls察看一個目錄時(shí),發(fā)現(xiàn)有的文件或文件夾的顏色和別的不一樣,我機(jī)子上是藍(lán)色的,那就是一個用ln命令生成的文件,用ls -l命令去察看
          17. ,就可以看到顯示的link的路徑了。
          18. 1、硬鏈接和原來的文件沒什么區(qū)別,共享一個inode號(文件在文件系統(tǒng)上的唯一標(biāo)識),軟連接不共享inode,和原文件對應(yīng)的inode有區(qū)別。
          19. 2、若原文件被刪除,軟連接不在可以訪問,而硬鏈接可以訪問。
          20. ln -s 源文件 目標(biāo)文件
          posted on 2012-07-12 22:19 kxbin 閱讀(265) 評論(0)  編輯  收藏 所屬分類: 轉(zhuǎn)發(fā)Linux
          你恨一個人是因?yàn)槟銗鬯荒阆矚g一個人,是因?yàn)樗砩嫌心銢]有的;你討厭一個人是因?yàn)樗砩嫌心阌械臇|西;你經(jīng)常在別人面前批評某人,其實(shí)潛意識中是想接近他。

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(5)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          J2EE

          java技術(shù)網(wǎng)站

          Linux

          平時(shí)常去的網(wǎng)站

          數(shù)據(jù)庫

          電影網(wǎng)站

          網(wǎng)站設(shè)計(jì)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 邛崃市| 双牌县| 绥棱县| 石泉县| 大关县| 奉新县| 海门市| 富民县| 山东省| 交口县| 汝州市| 永胜县| 余干县| 策勒县| 佛学| 秦皇岛市| 松江区| 东兰县| 犍为县| 汉阴县| 衡南县| 嘉祥县| 四平市| 深圳市| 安图县| 芷江| 祥云县| 安徽省| 镇坪县| 东阳市| 山阳县| 焦作市| 秦安县| 钦州市| 襄垣县| 崇仁县| 荆州市| 阜新| 特克斯县| 象山县| 革吉县|