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

          一、linux下測(cè)試磁盤(pán)的讀寫(xiě)IO速度



          1. 有時(shí)候我們?cè)谧鼍S護(hù)的時(shí)候,總會(huì)遇到類(lèi)似于IO特別高,但不能判定是IO瓶頸還是軟件參數(shù)設(shè)置不當(dāng)導(dǎo)致熱盤(pán)的問(wèn)題.這時(shí)候通常希望能知道磁盤(pán)的讀寫(xiě)速度,來(lái)進(jìn)行下一步的決策.
          2. 下面是兩種測(cè)試方法:
          3. (1)使用hdparm命令
          4. 這是一個(gè)是用來(lái)獲取ATA/IDE硬盤(pán)的參數(shù)的命令,是由早期Linux IDE驅(qū)動(dòng)的開(kāi)發(fā)和維護(hù)人員 Mark Lord開(kāi)發(fā)編寫(xiě)的( 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),對(duì)于UNIX系統(tǒng),ATA/IDE硬盤(pán)用的可能比較少,一般大型的系統(tǒng)都是使用磁盤(pán)陣列的.
          5. 使用方法很簡(jiǎn)單
          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磁盤(pán)(物理讀),讀取速度約合70.11 MB/sec
          12. (2)使用dd命令
          13. 這不是一個(gè)專(zhuān)業(yè)的測(cè)試工具,不過(guò)如果對(duì)于測(cè)試結(jié)果的要求不是很苛刻的話(huà),平時(shí)可以使用來(lái)對(duì)磁盤(pán)的讀寫(xiě)速度作一個(gè)簡(jiǎn)單的評(píng)估.
          14. 另外由于這是一個(gè)免費(fèi)軟件,基本上×NIX系統(tǒng)上都有安裝,對(duì)于Oracle裸設(shè)備的復(fù)制遷移,dd工具一般都是首選.
          15. 在使用前首先了解兩個(gè)特殊設(shè)備
          16. /dev/null 偽設(shè)備,回收站.寫(xiě)該文件不會(huì)產(chǎn)生IO
          17. /dev/zero 偽設(shè)備,會(huì)產(chǎn)生空字符流,對(duì)它不會(huì)產(chǎn)生IO
          18. 測(cè)試方法:
          19. a.測(cè)試磁盤(pán)的IO寫(xiě)速度
          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的一個(gè)文件,IO寫(xiě)的速度約為221.6MB/sec;
          27. 當(dāng)然這個(gè)速度可以多測(cè)試幾遍取一個(gè)平均值,符合概率統(tǒng)計(jì).
          28. b.測(cè)試磁盤(pán)的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ì)算下來(lái)平均速度為77.48MB/sec
          40. c.測(cè)試IO同時(shí)讀和寫(xiě)的速度
          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. 上面測(cè)試的數(shù)據(jù)量比較小,僅作為參考.
          48. 相比兩種方法:
          49. 前者是linux上專(zhuān)業(yè)的測(cè)試IDE/ATA磁盤(pán)的工具,但是使用范圍有局限性;(此試驗(yàn)僅僅使用了測(cè)試磁盤(pán)IO的參數(shù),對(duì)于其他參數(shù)及解釋參考man手冊(cè))
          50. 后者可以通用,但不夠?qū)I(yè),也沒(méi)有考慮到緩存和物理讀的區(qū)分,測(cè)試的數(shù)據(jù)也是僅作參考,不能算是權(quán)威.

          二、linux 下 find 命令的高級(jí)用法
           

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

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

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(5)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          相冊(cè)

          收藏夾

          J2EE

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

          Linux

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

          數(shù)據(jù)庫(kù)

          電影網(wǎng)站

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

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 囊谦县| 朝阳县| 罗山县| 沛县| 桓台县| 重庆市| 咸丰县| 承德县| 石屏县| 阿巴嘎旗| 乌兰察布市| 漾濞| 满洲里市| 衡阳市| 赫章县| 明水县| 泰兴市| 宜城市| 松滋市| 闽清县| 兰溪市| 高青县| 隆尧县| 西城区| 府谷县| 淳化县| 黎平县| 洛宁县| 杭锦后旗| 玉田县| 和静县| 沙洋县| 岑巩县| 山东| 宜州市| 嵊州市| 贺州市| 会宁县| 巴里| 开化县| 安国市|