Kiểm tra và đánh giá storage

Các tiêu chí kiểm tra và đánh gía

  • Bandwidth
  • IOPS
  • Latency

Tool: Flexible I/O Tester(fio)

Cài đặt: sudo apt-get install fio trên Ubuntu hoặc sudo yum install fio -y trên Centos/RHEL

Kiểm tra tốc độ ghi: sudo fio --name=randwrite --ioengine=libaio --iodepth=1 --rw=randwrite --bs=4k --direct=0 --size=512M --numjobs=2 --runtime=240 --group_reporting

Câu lệnh này sẽ kiểm tra tốc độ ghi, tên file : randwrite, kích cỡ: 512MB, chạy 4 jobs và 2 process  (tổng cộng 4GB)

Ta thấy bandwidth và IOPS: write: IOPS=6315, BW=24.7MiB/s (25.9MB/s)(1024MiB/41507msec)

Kiểm tra tốc độ đọc: sudo fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting Đọc file ngẫu nhiên tổng cộng 2GB

Ta thấy bandwidth và IOPS: read: IOPS=4173, BW=16.3MiB/s (17.1MB/s)(2048MiB/125615msec)

Kiểm tra tốc độ đọc ghi: sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75 tổng cộng 4 GB

Ta thấy bandwidth và IOPS: read: IOPS=2275, BW=9104KiB/s (9322kB/s)(3070MiB/345321msec) write: IOPS=760, BW=3042KiB/s (3115kB/s)(1026MiB/345321msec)

Kiểm tra tốc độ ghi đọc tuần tự

Command: dd
Đọc: dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct Ghi 1 file 1GB
Ghi: dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync Đọc 1 file 1GB
Kiểm tra latency(thời gian thao tác đến lúc hoàn thành): dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync ghi 512byte 1000 lần

ví dụ:

Kiểm tra độ trễ

Tool: ioping

Cài đặt: sudo apt-get install ioping
Câu lệnh: ioping -c "n" Trong đó n là số request

Ví dụ: n = 10

Trong đó 529,5 us = 0,5295 ms

Giám sát các Disk

Tool: iostat, htop

Cài đặt: sudo apt-get install sysstat

  • Theo dõi report từ boot: iostat
  • Theo dõi liên tục mỗi n giây: iostat "n"
  • Theo dõi n lần, mỗi lần cách m giây: iostat m n

Ví dụ:

Trong đó các thông số: avg-cpu: trung bình các cpu

3 giá trị về % CPU

  • %user: phần trăm CPU được sử dụng khi chạy các ứng dụng ở user level (tất cả những gì không thuộc về kernel)
  • %system: phần trăm CPU được sử dụng khi chạy ở system level (kernel)
  • %nice: tương tự %user nhưng với nice priority.

3 giá trị về % thời gian

  • %iowait: phần trăm thời gian mà CPU(s) rảnh  khi hệ thống thực hiện disk I/O request.
  • %idle: phần trăm thời gian mà CPU(s) rảnh và hệ thống không thực hiện disk I/O request.
  • %steal: phần trăm thời gian dành cho chờ đợi của CPU hoặc CPU ảo trong khi bộ ảo hóa đang phục vụ một bộ xử lý ảo khác.

6 giá trị về device:

  • Device: tên device, ở đây là "sda". Một device có 1 hay nhiều partition. (dùng iostat -pd sda để hiển thị thông số cho từng partition trong sda)
  • tps: transfer per second. Mỗi  transfer là một I/O request đến device. Nhiều logical request có thể được hợp lại thành 1 I/O request đến device =>  một transfer không có kích thước cố định.
  • kB_read/s: số kilobytes đọc từ device
  • kB_read: tổng số kilobytes đọc từ device  = kB_read/s * interval (s)
  • k B_wrtn/s: số kilobytes ghi vào device
  • kB_wrtn: tổng số kilobytes ghi  từ device  = kB_read/s * interval (s)

Đánh giá

- IOPS: Càng cao càng tốt

-Lantency: Càng thấp càng tốt

- Bandwidth: Càng cao càng tốt