Bài viết này sẽ giải thích về một số vấn đề thường gặp trong quá trình sử dụng CEPH, một hệ thống lưu trữ phân tán, và cách giải quyết chúng.
Slow OSD heartbeats:
Đây là tình trạng khi hai OSDs (Object Storage Daemons) có độ trễ kết nối lớn hơn 1 giây, điều này không tốt cho việc lưu trữ và truy cập dữ liệu trong CEPH. Độ trễ có thể được kiểm tra thông qua mạng nội bộ (giữa các máy chủ lưu trữ) hoặc mạng ngoại vi (từ máy chủ lưu trữ đến máy chủ sử dụng). Nếu độ trễ quá cao, OSDs tương ứng sẽ bị đánh dấu là down, có thể dẫn đến mất dữ liệu trong CEPH.
Tham khảo: https://docs.ceph.com/en/latest/rados/operations/monitoring/#network-performance-checks
shell> ceph -s
health: HEALTH_WARN
Slow OSD heartbeats on back (longest 6181.010ms)
Slow OSD heartbeats on front (longest 5953.232ms)
Và lệnh.
shell> ceph health detail
[WRN] OSD_SLOW_PING_TIME_BACK: Slow OSD heartbeats on back (longest 11846.602ms)
Slow OSD heartbeats on back from osd.12 [] to osd.25 [] 11846.602 msec
Slow OSD heartbeats on back from osd.8 [] to osd.17 [] 3617.281 msec
Slow OSD heartbeats on back from osd.16 [] to osd.27 [] 2784.517 msec
Slow OSD heartbeats on back from osd.21 [] to osd.17 [] 1678.064 msec
Slow OSD heartbeats on back from osd.11 [] to osd.15 [] 1675.884 msec
Slow OSD heartbeats on back from osd.20 [] to osd.13 [] 1073.790 msec
[WRN] OSD_SLOW_PING_TIME_FRONT: Slow OSD heartbeats on front (longest 11427.677ms)
Slow OSD heartbeats on front from osd.12 [] to osd.25 [] 11427.677 msec
Slow OSD heartbeats on front from osd.8 [] to osd.17 [] 3787.868 msec
Slow OSD heartbeats on front from osd.16 [] to osd.27 [] 3465.298 msec
Slow OSD heartbeats on front from osd.11 [] to osd.15 [] 1469.591 msec
Slow OSD heartbeats on front from osd.21 [] to osd.17 [] 1341.135 msec
Slow OSD heartbeats on front from osd.20 [] to osd.13 [] 1224.235 msec
Slow OSD heartbeats on front from osd.5 [] to osd.16 [] 1101.175 msec
Bằng cách kiểm tra các thông tin trên, bạn có thể thấy rằng độ trễ OSD của một máy chủ và các máy chủ khác là tương đối cao. Vấn đề có thể được giải quyết bằng cách rút cáp mạng cáp quang của máy chủ, lau sạch và cắm lại.
Slow ops:
Đây là tình trạng khi có các hoạt động chậm trong hệ thống.
shell> ceph -s
21 slow ops, oldest one blocked for 29972 sec, mon.ceph1 has slow ops
Để giải quyết, đảm bảo tất cả các máy chủ lưu trữ đều đồng bộ thời gian và khởi động lại dịch vụ monitor trên máy chủ tương ứng.
Pgs not deep-scrubbed in time:
CEPH thực hiện kiểm tra nhất quán (scrub) cho tất cả PGs (Placement Groups) mỗi 1-1.5 ngày. Khi kiểm tra nhất quán cho mỗi PG, có một tỷ lệ nhất định sẽ được chuyển thành kiểm tra nhất quán sâu (deep-scrub), quá trình này chậm hơn và tiêu thụ nhiều hiệu suất đọc đĩa. Nếu một PG không được deep-scrub trong vòng 2 tuần, hệ thống sẽ cảnh báo.
shell> ceph -s
47 pgs not deep-scrubbed in time
Để giải quyết, bạn có thể thay đổi giá trị ngưỡng của osd_deep_scrub_interval thành một tháng (606024*30) để loại bỏ cảnh báo.
MDS cache is too large:
Đây là cảnh báo khi bộ nhớ cache mà MDS (Metadata Server) sử dụng cao hơn nhiều so với giá trị ngưỡng đã đặt. Bạn có thể sử dụng lệnh sau để đặt giá trị ngưỡng cao hơn cho bộ nhớ cache của MDS, điều này sẽ loại bỏ cảnh báo nhưng sẽ tiêu thụ nhiều bộ nhớ hơn. Lệnh config dump
có thể được sử dụng để xem thông tin về các giá trị ngưỡng.
ceph config set mds mds_cache_memory_limit 10GB
ceph config dump
Nếu sau một thời gian tăng giá trị mds_cache_memory_limit
, cảnh báo vẫn xuất hiện và MDS cache sử dụng vượt quá 1.5 lần giá trị mới, bạn có thể cân nhắc thiết lập nhiều dịch vụ MDS ở trạng thái hoạt động.
Client node18 failing to respond to cache pressure:
Đây là cảnh báo khi một client (trong trường hợp này là node18) không phản hồi kịp thời đến yêu cầu giảm bộ nhớ cache từ dịch vụ MDS (Metadata Server) của Ceph. Nếu cảnh báo này chỉ xuất hiện tạm thời, có thể không cần phải xử lý. Tuy nhiên, nếu cảnh báo này xuất hiện liên tục, bạn có thể cần phải gỡ bỏ và tái gắn kết hệ thống file Ceph trên node18.
Bạn có thể truy vấn số ID của máy khách ceph và số lượng nút mà nó sử dụng (giá trị của num_caps). Lệnh này được sử dụng để liệt kê tất cả các phiên làm việc hiện tại với MDS.
ceph tell mds.0 session ls
Sử dụng lệnh này được sử dụng để xoá một client cụ thể hoặc tất cả các client khỏi MDS. Điều này có thể hữu ích nếu một client đang gây ra sự cố với MDS.
ceph tell mds.0 session evict id=11134635
ceph tell mds.0 session evict
Bạn có thể sử dụng các lệnh này được sử dụng để quản lý danh sách đen của Ceph, cho phép bạn xem, loại bỏ hoặc xóa sạch danh sách đen. Tuy nhiên, cần lưu ý rằng việc loại bỏ một client khỏi danh sách đen không đảm bảo rằng client đó sẽ có thể truy cập Ceph một cách bình thường.
ceph osd blacklist ls
ceph osd blacklist rm 192.168.20.1:0/1498586492
ceph osd blacklist clear
Tham khảo http://www.chenlianfu.com/?p=3388