ฉันจะตรวจสอบดิสก์ io ได้อย่างไร


267

ฉันต้องการตรวจสอบดิสก์ io ทั่วไปบนเซิร์ฟเวอร์ debian linux เครื่องมืออะไรที่ฉันควรรู้เกี่ยวกับดิสก์มอนิเตอร์ io นั้นฉันจึงสามารถดูได้ว่าประสิทธิภาพของดิสก์ได้รับการขยายสูงสุดหรือแหลมในบางช่วงเวลาตลอดทั้งวันหรือไม่


คำตอบ:


225

สำหรับแนวโน้ม I / O ของดิสก์มีตัวเลือกน้อย ที่ชื่นชอบส่วนตัวของฉันคือคำสั่งจากsar sysstatโดยค่าเริ่มต้นจะให้ผลลัพธ์ดังนี้:

09:25:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
09:35:01 AM     all      0.11      0.00      0.01      0.00      0.00     99.88
09:45:01 AM     all      0.12      0.00      0.01      0.00      0.00     99.86
09:55:01 AM     all      0.09      0.00      0.01      0.00      0.00     99.90
10:05:01 AM     all      0.10      0.00      0.01      0.02      0.01     99.86
Average:        all      0.19      0.00      0.02      0.00      0.01     99.78

%iowaitเป็นเวลาที่ใช้รอ I / O การใช้แพ็คเกจ Debian คุณต้องเปิดใช้งานตัวรวบรวมสถิติผ่าน/etc/default/sysstatไฟล์ปรับแต่งหลังจากติดตั้งแพ็คเกจ

หากต้องการดูการใช้งานในปัจจุบันแยกตามอุปกรณ์คุณสามารถใช้iostatคำสั่งได้เช่นกันจากแพ็คเกจ sysstat:

$ iostat -x 1
Linux 3.5.2-x86_64-linode26 (linode)    11/08/2012      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.84    0.00    0.08    1.22    0.07   97.80

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
xvda              0.09     1.02    2.58    0.49   112.79    12.11    40.74     0.15   48.56   3.88   1.19
xvdb              1.39     0.43    4.03    1.82    43.33    18.43    10.56     0.66  112.73   1.93   1.13

บางตัวเลือกอื่น ๆ ที่สามารถแสดงการใช้งานดิสก์ในแนวโน้มกราฟจะMuninและcacti


Munin หรือ Cacti เป็นมากกว่าสิ่งที่ฉันกำลังมองหา ขอบคุณสำหรับคำแนะนำ
camomileCase

6
โปรดทราบว่า% iowait จะแสดงเฉพาะเวลาที่เคอร์เนลไม่มีอะไรให้ทำอีกแล้วรอให้ IO บนเซิร์ฟเวอร์ที่ถูกผูกไว้กับ CPU 100% สิ่งนี้จะเป็นศูนย์โดยไม่คำนึงถึงจำนวน IO ที่ทำ
Jürgen Strobel

iostat -x dm-0 | อุปกรณ์ grep; iostat -xd 2 -y dm-0 | grep dm-0
Juan Medina

104

ไปดูไอโซโทป

หรือไอโอดีนถ้านั่นเป็นวิธีที่คุณคิด

หมายเหตุ: นี่ต้องใช้เคอร์เนลอย่างน้อย2.6.20เพื่อให้ทำงานได้


นี่ไม่ใช่แค่ลินุกซ์เท่านั้น แต่ยังต้องการเคอร์เนลใหม่ (หรือแพตช์)
จอร์แดน

สิ่งเหล่านี้ดูดีสำหรับการค้นหาว่าเกิดอะไรขึ้นตอนนี้ แต่ฉันกำลังมองหาการตรวจสอบภาพที่ใหญ่ขึ้น
camomileCase

8
@camomileCase - คุณไม่ได้ระบุว่าในคำถามของคุณ ...
tink

90

dstatผมชอบ มันสามารถแสดงผลรวมและสถิติต่อดิสก์และแม้กระทั่งอุปกรณ์ md (RAID) นอกจากนี้ยังสามารถใช้สีสำหรับภาพรวมที่ดีกว่า:

$ dstat -tdD total,sda,sdb,sdc,md1 60 
----system---- -dsk/total----dsk/sda-----dsk/sdb-----dsk/sdc-----dsk/md1--
     time     | read  writ: read  writ: read  writ: read  writ: read  writ
08-11 22:08:17|3549k  277k: 144k   28k: 851k   62k: 852k   60k:  25k   82k
08-11 22:09:17|  60k  258k:1775B   15k:  13k   63k:  15k   60k:  68B   74k
08-11 22:10:17| 176k  499k:   0    14k:  41k  122k:  41k  125k: 273B  157k
08-11 22:11:17|  42k  230k:   0    14k:9830B   54k:  14k   51k:   0    70k
08-11 22:11:52|  28k  132k:   0  5032B:5266B   33k:9479B   28k:   0    37k
  • -t สำหรับการประทับเวลา
  • -d สำหรับสถิติดิสก์
  • -D เพื่อระบุอุปกรณ์ที่แน่นอนที่จะรายงาน
  • 60โดยเฉลี่ยมากกว่า 60 วินาที จอแสดงผลจะอัปเดตทุกวินาที แต่จะมีเพียงหนึ่งครั้งต่อ 60 วินาทีที่บรรทัดใหม่จะเริ่มขึ้น

  • ไม่ได้ใช้ในตัวอย่างนี้ แต่-cสามารถรายงานรอเปอร์เซ็นต์ IO ซึ่งในกรณีส่วนใหญ่เกี่ยวข้องกับ CPU ที่รอข้อมูลจากดิสก์

มันพร้อมใช้งานสำหรับการกระจาย Linux ส่วนใหญ่ แต่บางครั้งจำเป็นต้องติดตั้งจากที่เก็บ


49

เพียงแค่จากไฟล์บนเครื่องคอมพิวเตอร์ของคุณ (สมมติว่าเคอร์เนลล่าสุด) คุณสามารถถามหรือ/sys/block/sda/stat /proc/diskstatsมันจะต้องมีการแปลบางอย่าง แต่มันก็ดีสำหรับการเช็คที่รวดเร็วและสกปรก


22
/sys/block/sda/statเป็นเอกสารที่https://www.kernel.org/doc/Documentation/block/stat.txt
Ignis

10
/proc/diskstatsมีการบันทึกไว้ที่kernel.org/doc/Documentation/iostats.txt
Rikard Söderström

2
ข้อได้เปรียบที่ยิ่งใหญ่สำหรับคำตอบนี้คือไม่จำเป็นต้องติดตั้งเครื่องมือใด ๆ มันอยู่ที่นั่น (อาจเกิดขึ้น :-)
Ben Aveling

2
เช่น echo "อ่านเซ็กเตอร์ผสาน io ติ๊กเขียนไอโอควบภาคติ๊กบนเครื่องบิน ioticks timeinqueu"; cat / sys / block / vda / vda1 / stat; sleep 10; cat / sys / block / vda / vda1 / stat
Ben Aveling

35

ตัวเลือกอื่นคือการใช้: sudo iotop -aoP

-a    Will show accumulated output
-o    Will only output 
-P    Will only show processes instead of threads

โปรแกรมนี้จะบอกคุณว่ากระบวนการเขียนไปยังดิสก์และอ่านจากดิสก์มากแค่ไหนตั้งแต่เริ่มใช้ iotop


ฉันได้ยินบางสิ่งบางอย่างที่เข้าถึงดิสก์ แต่ผลลัพธ์ที่สะสมเพิ่มขึ้นช้ามากบางครั้งอาจไม่เลยเลย ...
Michael

ถ้าคุณได้ยินดิสก์มันอาจจะเก่าและ / หรือช้า HDD ที่ทันสมัยมักจะเงียบมาก มันเป็นเสียงแบบไหน? ใช้smartctlเพื่อดูว่าดิสก์แข็งแรงหรือไม่
rudolfbyker

8

Monitoring Disk Io สามารถทำได้โดยใช้เครื่องมือหลายอย่างเช่น

  1. iostat
  2. Iozone
  3. SAR
  4. vmstat

นอกจากนี้แนวคิดระบบปฏิบัติการที่สำคัญบางอย่างก็จำเป็นอย่างยิ่งที่จะต้องเข้าใจพวกเขา .. อ่านกวดวิชาที่สมบูรณ์ของLinux IO


2
iozone ใช้สำหรับการทดสอบไม่ใช่การตรวจสอบ: "Iozone เป็นเครื่องมือเปรียบเทียบมาตรฐานของระบบแฟ้มเกณฑ์มาตรฐานจะสร้างและวัดการใช้งานไฟล์ที่หลากหลาย"
Andrew Beals

7

อีกหนึ่งเครื่องมือที่ยอดเยี่ยมสำหรับภาพรวมอย่างรวดเร็วว่าโหลดมาจากไหน atop

มันสามารถแสดงภาพรวมของทรัพยากรทั้งหมด (CPU, หน่วยความจำ / แลกเปลี่ยน, เครือข่ายและดิสก์ I / O) หรือคุณสามารถเจาะลึกไปที่ทรัพยากรเดียวและกระบวนการเรียงลำดับตามปริมาณการใช้


5

ทำไมไม่ลองNMON มันทำดิสก์และเครือข่ายด้วยกระบวนการ เริ่มแรกสำหรับ AIX แต่ได้รับการโอนย้ายไปยัง Linux มาหลายปีแล้ว


1

สิ่งที่ดีที่สุดที่จะทำอย่างไรถ้าคุณต้องการที่จะเห็นประสิทธิภาพการทำงานบนเป็นระยะเวลานานคือการใช้Centreon ซึ่งเป็นเครื่องมือที่มีประสิทธิภาพในการสร้างNagios Centreon ทำให้คุณสามารถตรวจสอบได้โดยการวาดกราฟการแสดงของทรัพยากรและสิ่งอื่น ๆ มากมาย


มีอะไรอีกบ้าง? ภาพหน้าจอใด ๆ โปรดขยายคำตอบของคุณ
Konrad Gajewski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.