Hướng dẫn kiểm tra Disk I/O trên Proxmox + ZFS
Tài liệu này giúp xác định:
- Disk có đang quá tải không?
- VM nào đang gây I/O nhiều?
- ZFS có phải bottleneck không?
- ARC/L2ARC có hoạt động hiệu quả không?
- SSD có dấu hiệu xuống cấp không?
1. Kiểm tra tổng quan Disk I/O
iostat
iostat -xz 1
Các chỉ số quan trọng:
| Chỉ số | Ý nghĩa | Mức bình thường |
|---|---|---|
| %util | Mức sử dụng disk | <70% tốt, >90% đáng chú ý |
| await | Thời gian chờ I/O | SSD <2ms, SATA SSD <5ms |
| r/s | Read IOPS | Theo workload |
| w/s | Write IOPS | Theo workload |
| rkB/s | Read throughput | |
| wkB/s | Write throughput | |
| aqu-sz | Độ dài queue | Càng thấp càng tốt |
Ví dụ tốt:
Device r/s w/s rkB/s wkB/s await %util
sdh 120 90 5200 3100 0.8 18
Ví dụ xấu:
await = 35ms
%util = 100%
=> Disk đang nghẽn.
2. Xem VM nào đang dùng Disk nhiều nhất
iotop
iotop -oPa
hoặc
iotop -aoP
Ví dụ:
PID
64475
READ 18.7 MB/s
WRITE 1 MB/s
Tra VM:
cat /proc/64475/cmdline | tr '\0' ' '
hoặc
ps -fp 64475
pidstat
Theo dõi trung bình:
pidstat -d 1
Ví dụ:
PID
218511
read
6271 KB/s
write
10 KB/s
=> VM này đang đọc nhiều nhất.
3. Xem trạng thái ZFS
zpool status
zpool status
Kiểm tra:
- DEGRADED
- FAULTED
- OFFLINE
- resilver
- scrub
Nếu xuất hiện:
errors:
=> cần kiểm tra ngay.
4. Theo dõi I/O của ZFS
zpool iostat -v 1
Ví dụ:
pool
read
28 MB/s
write
5 MB/s
Điều cần xem
Các disk có cân bằng không
Ví dụ đẹp:
sda 3.2 MB/s
sdb 3.5 MB/s
sdc 3.3 MB/s
...
Ví dụ xấu:
sda 20 MB/s
các ổ còn lại
2 MB/s
=> Có khả năng một disk chậm.
SLOG
Ví dụ:
logs
mirror
write
5 MB/s
Nếu mirror:
nvme0
2.5 MB/s
nvme1
2.5 MB/s
=> Bình thường.
L2ARC
cache
Có read/write là bình thường.
5. Kiểm tra ARC
cat /proc/spl/kstat/zfs/arcstats
Các chỉ số quan trọng:
ARC Size
size
Dung lượng ARC đang sử dụng.
ARC Max
c_max
Giới hạn ARC.
Ví dụ:
2 GB
Nếu server có:
128 GB RAM
thì khá thấp.
ARC Hit
hits
ARC Miss
misses
Hit Ratio:
hits
/
(hits+misses)
Đánh giá:
| Hit Rate | Đánh giá |
|---|---|
| >98% | Rất tốt |
| 95-98% | Tốt |
| 90-95% | Chấp nhận |
| <90% | Có thể tăng ARC |
Metadata
arc_meta_used
Nếu metadata chiếm quá nhiều ARC thì cache dữ liệu sẽ ít hơn.
6. Kiểm tra L2ARC
Các chỉ số:
l2_hits
l2_misses
Hit Ratio:
l2_hits
/
(hits+misses)
Không cần quá cao.
Quan trọng là:
l2_io_error = 0
l2_cksum_bad = 0
7. Kiểm tra cấu hình ARC
cat /sys/module/zfs/parameters/zfs_arc_max
Ví dụ
2147483648
= 2GB
Kiểm tra file cấu hình:
grep zfs_arc /etc/modprobe.d/*.conf
8. Kiểm tra RAM
free -h
Nếu:
RAM Free
100GB
nhưng ARC chỉ:
2GB
=> Có thể tăng ARC.
9. Kiểm tra SMART SSD
smartctl -a /dev/sdX
Các thông số quan trọng:
| SMART | Ý nghĩa |
|---|---|
| Reallocated_Sector_Ct | Bad sector |
| Current_Pending_Sector | Sector lỗi |
| Runtime_Bad_Block | Bad block |
| Wear_Leveling_Count | Độ mòn SSD |
| Used_Rsvd_Blk_Cnt | Spare block |
| Program_Fail | Lỗi ghi |
| Erase_Fail | Lỗi xóa |
| UDMA_CRC_Error_Count | Lỗi cáp/backplane |
| Temperature | Nhiệt độ |
| Total_LBAs_Written | Tổng dữ liệu ghi |
10. Kiểm tra Self-test
smartctl -l selftest /dev/sdX
Nếu:
Completed without error
=> Bình thường.
11. Kiểm tra độ trễ thực tế của pool
zpool iostat -v 1
Nếu cần phân tích sâu hơn:
zpool iostat -r 1
(ZFS mới hỗ trợ)
Có thể xem histogram latency.
12. Kiểm tra tiến trình ZFS
iotop -oPa
Các thread thường gặp:
txg_sync
=> Flush Transaction Group xuống pool.
z_rd_int
=> Thread đọc.
z_wr_int
=> Thread ghi.
jbd2
=> Journal của filesystem khác (ext4/xfs).
13. Checklist khi nghi ngờ Storage chậm
□ iostat -xz 1
├── %util
├── await
├── aqu-sz
└── rkB/s wkB/s
□ iotop -oPa
├── VM nào đang đọc nhiều?
└── VM nào đang ghi nhiều?
□ pidstat -d 1
└── Trung bình I/O theo PID
□ zpool status
├── DEGRADED?
├── Resilver?
└── Scrub?
□ zpool iostat -v 1
├── Disk có cân bằng?
├── SLOG hoạt động?
└── L2ARC hoạt động?
□ ARC
├── size
├── c_max
├── hits
└── misses
□ smartctl
├── Wear
├── Bad Block
├── CRC
└── Temperature
Giá trị tham khảo nhanh
| Chỉ số | Tốt | Cần chú ý |
|---|---|---|
Disk %util |
<70% | >90% |
SSD await |
<2 ms (NVMe), <5 ms (SATA SSD) | >10 ms kéo dài |
| ARC Hit Rate | >95% | <90% |
| L2ARC I/O Error | 0 | >0 |
| SMART Reallocated Sector | 0 | >0 |
| SMART Pending Sector | 0 | >0 |
| SMART Runtime Bad Block | 0 | >0 |
| SMART UDMA CRC Error | 0 | Tăng dần (kiểm tra cáp/backplane) |
| SSD Temperature | 25–50°C | >60°C kéo dài |
| ZFS Pool Status | ONLINE | DEGRADED / FAULTED |