1. Tổng quan
Tham số rgw_obj_stripe_size
là tham số trong Ceph RGW (RADOS Gateway) quy định kích thước tối đa của mỗi RADOS object khi lưu trữ một object từ S3/Swift xuống cluster Ceph. Tham số này có tác động trực tiếp đến cách dữ liệu được chia nhỏ (stripe), ảnh hưởng đến hiệu năng, metadata và độ phức tạp khi vận hành — đặc biệt với các cluster (farm) lớn trong môi trường production.
2. rgw_obj_stripe_size
là gì?
- Quy định kích thước tối đa của mỗi object trong RADOS khi một object S3/Swift được lưu xuống Ceph.
- Cơ chế hoạt động:
- Nếu object lưu lên S3/Swift lớn hơn
rgw_obj_stripe_size
, RGW sẽ chia thành nhiều RADOS object. - Ví dụ:
rgw_obj_stripe_size = 4MiB
: File 100MiB → chia thành 25 object (24 × 4MiB + 1 phần dư).rgw_obj_stripe_size = 8MiB
: File 100MiB → chia thành 13 object (12 × 8MiB + 1 phần dư).
- Nếu object lưu lên S3/Swift lớn hơn
3. Vì sao không nên thay đổi giữa chừng?
- Không áp dụng ngược (non-retroactive)
Chỉ tác động đến object mới. Object đã tồn tại vẫn giữ kích thước stripe cũ. - Sinh ra dữ liệu hỗn hợp
- Pool sẽ chứa cả object stripe cũ và mới → kích thước khác nhau.
- Công cụ bảo trì, quét dữ liệu phải xử lý cả hai loại → tăng độ phức tạp.
- Ảnh hưởng hiệu năng và dung lượng
- Stripe lớn hơn → ít metadata, giảm overhead MON/MDS nhưng recovery/backfill mỗi chunk lớn hơn → tốn I/O HDD.
- Stripe nhỏ hơn → nhiều metadata hơn, map PG lớn hơn, MON/MDS chịu tải cao hơn.
- Rủi ro trong restore/migrate
Layout không đồng nhất khiến quy trình phục hồi hoặc di chuyển dữ liệu phức tạp hơn.
4. Khi nào mới nên đổi?
- Thiết kế cluster hoặc pool mới, chưa có dữ liệu.
- Khi migrate dữ liệu sang pool mới với stripe size khác rồi chuyển toàn bộ traffic.
- Trong quá trình thử nghiệm/tuning trên môi trường lab, không áp dụng trực tiếp cho production đang vận hành ổn định.
5. Sơ đồ minh họa tác động
Upload object 100MiB
|
+-- rgw_obj_stripe_size = 4MiB
| -> 25 object trong RADOS
| -> Metadata nhiều hơn
|
+-- rgw_obj_stripe_size = 8MiB
-> 13 object trong RADOS
-> Metadata ít hơn
Liên hệ với osd_recovery_max_chunk
:
Recovery/backfill flow:
Stripe size ↑ => Chunk size ↑ => Số lượng op ↓ nhưng mỗi op nặng hơn
Stripe size ↓ => Chunk size ↓ => Số lượng op ↑ nhưng mỗi op nhẹ hơn
Sơ đồ logic mối liên hệ
+-------------------+
| S3/Swift Upload |
+-------------------+
|
v
+------------------------+
| rgw_obj_stripe_size=X |
+------------------------+
|
+--------------+---------------+
| |
Stripe size nhỏ Stripe size lớn
(VD: 4MiB) (VD: 8MiB)
| |
v v
+---------+ +-------------+
| Nhiều | | Ít object |
| object | | hơn |
+---------+ +-------------+
| Metadata| | Metadata |
| nhiều | | ít |
| hơn | | hơn |
+---------+ +-------------+
| |
v v
Recovery: Recovery:
- Số op ↑ - Số op ↓
- Mỗi op nhỏ - Mỗi op lớn
- Overhead MON ↑ - I/O HDD ↑
Kết hợp với osd_recovery_max_chunk
Recovery process:
|
+--> Đọc dữ liệu từ OSD
|
+--> Giới hạn bởi osd_recovery_max_chunk
(VD: 4MiB / 8MiB / 32MiB ...)
|
+--> Mỗi op recovery:
min(stripe_size, recovery_chunk)
Ví dụ:
- stripe_size = 4MiB, recovery_chunk = 32MiB
=> mỗi lần recovery chỉ lấy tối đa 4MiB (stripe nhỏ hơn chunk)
- stripe_size = 8MiB, recovery_chunk = 32MiB
=> mỗi lần recovery lấy tối đa 8MiB
- stripe_size = 32MiB, recovery_chunk = 32MiB
=> mỗi lần recovery lấy đủ 32MiB
Nhận xét
- Stripe size nhỏ:
- Metadata nhiều, dễ tăng overhead MON/MDS.
- Recovery mượt hơn cho HDD, nhưng tốn nhiều op hơn.
- Stripe size lớn:
- Metadata ít, overhead MON/MDS thấp.
- Recovery mỗi op nặng, HDD dễ “đứng hình” nếu chunk lớn.
6. Lời khuyên
- Trong production farm lớn đang ổn định, không nên thay đổi
rgw_obj_stripe_size
trực tiếp. - Nếu cần thay đổi, hãy:
- Tạo pool mới với cấu hình stripe mới.
- Thực hiện migration và kiểm thử kỹ trước khi cắt traffic.
- Luôn đồng bộ stripe size với các tham số liên quan như
osd_recovery_max_chunk
để tối ưu hiệu năng.
7. Kết luận
Tham số rgw_obj_stripe_size
là tham số có ảnh hưởng sâu đến cách dữ liệu được layout trên OSD. Thay đổi nó giữa chừng tạo ra sự không đồng nhất về kích thước object, gây khó khăn trong bảo trì, phục hồi và có thể ảnh hưởng hiệu năng. Trong môi trường production, đặc biệt là farm lớn, nên giữ nguyên tham số này trừ khi đã có kế hoạch migration rõ ràng.
Tham khảo: