Kỹ thuật kiểm tra sức khỏe của disk trên hệ thống

Bài viết sẽ liệt kê một số công cụ kiểm tra sức khỏe cho ổ đĩa và các thông số mà người quản trị viên cần chú ý.

ioping


Cài đặt

yum install ioping

Thực hiện

[root@localhost /]# ioping -c 10 /dev/sda
4.0 KiB from /dev/sda (device 446.6 GiB): request=1 time=205 us
4.0 KiB from /dev/sda (device 446.6 GiB): request=2 time=200 us
4.0 KiB from /dev/sda (device 446.6 GiB): request=3 time=133 us
4.0 KiB from /dev/sda (device 446.6 GiB): request=4 time=308 us
4.0 KiB from /dev/sda (device 446.6 GiB): request=5 time=304 us
4.0 KiB from /dev/sda (device 446.6 GiB): request=6 time=253 us
4.0 KiB from /dev/sda (device 446.6 GiB): request=7 time=195 us
4.0 KiB from /dev/sda (device 446.6 GiB): request=8 time=253 us
4.0 KiB from /dev/sda (device 446.6 GiB): request=9 time=198 us
4.0 KiB from /dev/sda (device 446.6 GiB): request=10 time=162 us

— /dev/sda (device 446.6 GiB) ioping statistics —
10 requests completed in 9.0 s, 4.5 k iops, 17.7 MiB/s
min/avg/max/mdev = 133 us / 221 us / 308 us / 54 us

Thông thường ổ cứng sẽ phản hồi trong thời gian cỡ micro giây. Nếu thời gian lên đến ms, ổ cứng của bạn có vấn đề.

badblocks


Cài đặt

yum install e2fsprogs

Thực hiện
badblocks -v /dev/sda
Checking blocks 0 to 20971519
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found.

Mặc định badblocks chạy trong read-only mode. Badblocks có tham số -w cho destructive mode, badblocks sẽ write một số block data xuống disk. Bạn nên cẩn thận khi dùng tham số này trên một production server. Test trong destructive mode chỉ nên dùng trong giai đoạn kiểm tra server trước khi deploy hệ thống lên đó.

smartctl


Cài đặt

yum install smartmontools

Thực hiện
smartctl -a /dev/sda

User Capacity: 21.474.836.480 bytes [21,4 GB]
Logical block size: 512 bytes
Device type: disk
Local Time is: Tue Feb 23 17:57:03 2016 ICT
Device does not support SMART

Error Counter logging not supported
Device does not support Self Test logging

Hiện tại tôi không có ổ nào hỗ trợ S.M.A.R.T cả 😀
UPDATE sau…

iotop


Cài đặt

yum install iotop

Thực hiện
Đơn giản chỉ cần gõ iotop. Sau đó bạn có thể filter output dùng o để chỉ hiển thị các thread đang thực hiện I/O hoặc p chỉ để hiện thị process thay vì hiển thị tất cả các thread của process đó.

iotop.png

Dựa vào output của iotop bạn có thể biết được tốc độ đọc/ghi data xuống disk nói chung và IO wait, tốc độ đọc/ghi disk của từng process nói riêng. Từ đó xác định được process nào ngốn disk của bạn

vmstat và iostat


Cài đặt

yum install sysstat

Thực hiện
iostat -d
iostat.png

tps: Là số transfer per second. Một transfer tương đương một I/O request đến device
Blk_read/s: Là lượng block đọc từ device mỗi giây. Iostat quy định từ kernel 2.4 trở đi một block tương ứng với một sector nên có kích cỡ 512 bytes
Blk_write/s: Là lượng block ghi xuống device mỗi giây
Blk_read: Tổng số lượng block đã đọc
Blk_wrtn: Tổng số lượng block đã ghi

Có thể xem được phân bố đọc ghi trên từng partition của một device bằng cách
iostat -p /dev/sda

iostat2.png

Lượng tps tập trung chủ yếu ở /dev/sda4, do đó dịch vụ của server này được deploy tại phân vùng /dev/sda4

vmstat 1 10
Tôi thực hiện vmstat 10 lần, mỗi lần cách nhau có 1 giây

vmstat.png

Chú ý bi và bo, bi là lượng block đọc từ device còn bo là lượng block ghi xuống device. Đơn vị của hai cột này là blocks/s.

atop


Cài đặt

yum install atop

Thực hiện
atop

atop.png

DSK sda
busy: 0% – io wait
read: 0 – Lượng read request
write: 3 – Lượng write request
KiB/r: 0 – Lượng KB trung bình trong mỗi read request
KiB/w: 4 – Lượng KB trung bình trong mỗi write request
MBr/s: 0.00 – Throughput read
Mbw/s: 0.00 – Throughput write
avio: 0.07 ms – Thời gian trung bình cho seek, latency, data transfer của mỗi IO.

Tất cả các mô tả thông số bạn đều có thể tìm trong man của tool.

Comments

comments