1. Tổng quan về các tham số Cluster.
Tham số cụm đóng vai trò quan trọng trong việc quản lý cách tạo, lưu trữ và quản lý các bản sao dữ liệu trong một cụm Virtuozzo Storage.
Chúng được chia thành ba nhóm chính:
- Tham số sao chép (Replication Parameters):
- Normal Replicas (Bản sao thông thường): Quy định số lượng bản sao cần tạo cho mỗi khối dữ liệu, có thể từ 1 đến 15 bản. Giá trị khuyến nghị là 3 để đảm bảo khả năng dự phòng tốt.
- Minimum Replicas (Bản sao tối thiểu): Xác định số lượng bản sao tối thiểu cần thiết cho mỗi khối dữ liệu, cũng dao động từ 1 đến 15 bản. Giá trị khuyến nghị là 2 để duy trì tính sẵn sàng của dữ liệu ngay cả khi có một bản sao bị lỗi.
- Tham số vị trí (Location Parameters):
- Failure Domain (Miền lỗi): Quy định chính sách lưu trữ các bản sao, bao gồm hai lựa chọn:
- host (mặc định): Các bản sao được lưu trữ trên các máy chủ khác nhau để giảm thiểu rủi ro khi một máy chủ gặp sự cố.
- disk (CS): Các bản sao được lưu trữ trên các ổ đĩa khác nhau trong cùng một máy chủ, nhằm tối ưu hóa hiệu suất đọc/ghi.
- Failure Domain (Miền lỗi): Quy định chính sách lưu trữ các bản sao, bao gồm hai lựa chọn:
- Tham số mã hóa (Encoding Parameters): Sẽ được đề cập ở phần dưới.
2. Cách cấu hình tham số sao chép trong Virtuozzo Storage.
Kiểm tra tham số hiện tại: Sử dụng lệnh vstorage get-attr
để xem các tham số đang được áp dụng cho cụm. Ví dụ:
vstorage get-attr /vstorage/stor1
Cấu hình tham số cho toàn bộ cụm: Sử dụng lệnh vstorage set-attr -R
để thiết lập tham số cho toàn bộ dữ liệu trong cụm.
Ví dụ, đặt số lượng bản sao thông thường thành 3 cho cụm stor1
được mount tại /vstorage/stor1
:
vstorage set-attr -R /vstorage/stor1 replicas=3
Tham số “minimum replicas” sẽ được tự động đặt thành 2 theo mặc định.
Cấu hình tham số cho thư mục hoặc tập tin cụ thể: Sử dụng lệnh vstorage set-attr -R
với đường dẫn cụ thể đến thư mục hoặc tập tin cần cấu hình. Ví dụ:
vstorage set-attr -R /vstorage/stor1/private/MyCT replicas=3
Lưu ý quan trọng:
- Để đảm bảo khả năng dự phòng tốt cho môi trường sản xuất, khuyến nghị nên thiết lập số lượng bản sao thông thường ít nhất là 3 và số lượng bản sao tối thiểu là 2.
- Việc cấu hình này đòi hỏi phải có ít nhất 3 máy chủ chunk trong cụm.
- Tham khảo thêm về cách tính toán số lượng bản sao tối thiểu trong hướng dẫn sử dụng
vstorage-set-attr
.
2. Cấu hình các tham số mã hóa.
Mã hóa thay thế cho sao chép.
Thay vì sử dụng sao chép dữ liệu, Virtuozzo Storage cung cấp một phương pháp thay thế tốt hơn là erasure coding để đảm bảo tính sẵn có của dữ liệu. Erasure coding giúp tạo ra sự dự phòng dữ liệu bằng cách chia luồng dữ liệu đầu vào thành các đoạn có kích thước nhất định, sau đó phân chia mỗi đoạn thành một số lượng nhất định (M) các mảnh 1 megabyte và tạo ra một số lượng nhất định (N) các mảnh parity để dự phòng. Tất cả các mảnh được phân phối giữa M+N node lưu trữ, tức là một mảnh cho mỗi node. Trên các node lưu trữ, các mảnh được lưu trữ trong các đoạn thông thường nhưng đoạn này không được sao chép vì đã có sự dự phòng. Cụm có thể tồn tại sau sự cố của bất kỳ N node lưu trữ nào mà không mất dữ liệu.
Giá trị của M và N được chỉ định trong tên các chế độ dự phòng của erasure coding. Ví dụ, trong chế độ 5+2, dữ liệu đầu vào được chia thành các đoạn 5MB, mỗi đoạn được chia thành năm mảnh 1MB và thêm hai mảnh parity 1MB để dự phòng. Ngoài ra, nếu N là 2, dữ liệu được mã hóa bằng cách sử dụng giảm độ trễ RAID6, và nếu N lớn hơn 2, mã lỗi erasure Reed-Solomon được sử dụng.
- M và N là các tham số quan trọng:
- M (Number of Data Fragments): Đây là số lượng mảnh dữ liệu được tạo ra từ mỗi đoạn dữ liệu ban đầu. Ví dụ, nếu M là 5, mỗi đoạn dữ liệu sẽ được chia thành 5 mảnh dữ liệu.
- N (Number of Parity Fragments): Đây là số lượng mảnh parity được tạo ra để dự phòng dữ liệu. Mỗi mảnh parity được tạo ra để bổ sung tính sẵn có của dữ liệu và giúp khôi phục dữ liệu khi một số node lưu trữ gặp sự cố. Ví dụ, nếu N là 2, sẽ có 2 mảnh parity được tạo ra cho mỗi đoạn dữ liệu.
Ví dụ:
- Trong chế độ 5+2, có nghĩa là mỗi đoạn dữ liệu được chia thành 5 mảnh dữ liệu và thêm 2 mảnh parity.
- Trong chế độ 3+2, mỗi đoạn dữ liệu được chia thành 3 mảnh dữ liệu và thêm 2 mảnh parity.
Kết hợp giữa M và N xác định cách dữ liệu được phân chia và dự phòng trong quá trình erasure coding và chúng có thể thay đổi tùy thuộc vào mức độ dự phòng mong muốn và yêu cầu cụ thể của hệ thống lưu trữ.
Các chế độ erasure coding được mô tả thông qua cặp số (M, N), trong đó M là số lượng mảnh dữ liệu và N là số lượng mảnh parity.
Dưới đây là giải thích chi tiết cho các chế độ cụ thể:
- 1+0:
- M = 1: Mỗi đoạn dữ liệu được chia thành một mảnh dữ liệu.
- N = 0: Không có mảnh parity được tạo ra.
- Kết quả: Dữ liệu không được dự phòng, không có mảnh parity.
- 3+2:
- M = 3: Mỗi đoạn dữ liệu được chia thành ba mảnh dữ liệu.
- N = 2: Được tạo ra hai mảnh parity để dự phòng.
- Kết quả: Dữ liệu được phân chia thành 3 mảnh dữ liệu và thêm 2 mảnh parity để đảm bảo tính sẵn có và khả năng khôi phục.
- 5+2:
- M = 5: Mỗi đoạn dữ liệu được chia thành năm mảnh dữ liệu.
- N = 2: Được tạo ra hai mảnh parity để dự phòng.
- Kết quả: Dữ liệu được phân chia thành 5 mảnh dữ liệu và thêm 2 mảnh parity để đảm bảo tính sẵn có và khả năng khôi phục.
- 7+2:
- M = 7: Mỗi đoạn dữ liệu được chia thành bảy mảnh dữ liệu.
- N = 2: Được tạo ra hai mảnh parity để dự phòng.
- Kết quả: Dữ liệu được phân chia thành 7 mảnh dữ liệu và thêm 2 mảnh parity để đảm bảo tính sẵn có và khả năng khôi phục.
- 17+3:
- M = 17: Mỗi đoạn dữ liệu được chia thành mười bảy mảnh dữ liệu.
- N = 3: Được tạo ra ba mảnh parity để dự phòng.
- Kết quả: Dữ liệu được phân chia thành 17 mảnh dữ liệu và thêm 3 mảnh parity để đảm bảo tính sẵn có và khả năng khôi phục.
Giả sử bạn có một cụm lưu trữ với 5 node và mỗi node có 8 đoạn (chunk). Nếu bạn áp dụng chế độ erasure coding 5+2, mỗi đoạn dữ liệu sẽ được chia thành 5 mảnh dữ liệu và 2 mảnh parity. Các mảnh này sau đó sẽ được phân bố đều trên 5 node, nghĩa là mỗi node sẽ lưu trữ một mảnh. Điều này mang lại tính sẵn có cao và khả năng khôi phục dữ liệu khi một số node gặp sự cố.
Các chế độ erasure coding khác nhau có ảnh hưởng đến tính sẵn có và khả năng khôi phục dữ liệu trong trường hợp mất mát node hoặc node trở nên không khả dụng. Dưới đây là một số điểm bạn có thể quan tâm:
- Chế Độ 1+0 (1 node chết – có downtime):
- Trong trường hợp này, không có mảnh parity được tạo ra. Do đó, nếu một node chết, dữ liệu trên node đó sẽ bị mất, và không có mảnh parity để khôi phục. Điều này dẫn đến downtime khi bạn mất một node.
- Chế Độ 3+2, 5+2, 7+2 (1 node chết – không downtime):
- Các chế độ này tạo ra mảnh parity để dự phòng. Trong trường hợp một node chết, dữ liệu vẫn có thể được khôi phục từ các mảnh dữ liệu và mảnh parity còn lại trên các node còn lại. Do đó, không có downtime khi một node gặp sự cố.
- Chế Độ với Mảnh Parity Đủ để Không Gây Mất Dữ Liệu (2 nodes chết):
- Trong một số trường hợp, chế độ erasure coding có thể được cấu hình để sử dụng đủ mảnh parity để khôi phục dữ liệu khi mất tới N node. Ví dụ, ở chế độ 5+2, khi có đến 2 node chết, dữ liệu vẫn có thể khôi phục từ các mảnh dữ liệu và parity còn lại.
- Vấn Đề với 1 Ổ Cứng Hỏng (khi có 1 node chết):
- Nếu một ổ cứng trên một node chết, và nếu chế độ erasure coding không có đủ mảnh parity để khôi phục, có thể xảy ra mất mát dữ liệu. Điều này là do mỗi đoạn dữ liệu được chia thành nhiều mảnh nhỏ, và mỗi mảnh được lưu trữ trên các ổ cứng khác nhau.
Mỗi chế độ erasure coding có nhược điểm và ưu điểm của nó, và việc chọn lựa phụ thuộc vào yêu cầu cụ thể của hệ thống, đặc biệt là về tính sẵn có, khả năng khôi phục, và chi phí lưu trữ.
Cấu hình mã hóa
Sử dụng lệnh vstorage set-attr -R
để thiết lập chế độ mã hóa cho thư mục. Ví dụ:
vstorage set-attr -R /vstorage/stor1 encoding=5+2
Lưu ý quan trọng.
- Không thể chuyển đổi từ mã hóa về sao chép, nhưng có thể chuyển đổi giữa các chế độ mã hóa khác nhau cho cùng một thư mục.
- Khuyến nghị có ít nhất M+N+1 node trong cụm để đảm bảo khả năng dự phòng và khả năng chịu lỗi tốt hơn.
Ưu điểm của cấu hình nhiều node.
- Giảm thiểu rủi ro khi cụm hoạt động ở trạng thái suy giảm (degraded state).
- Cho phép thực hiện bảo trì node mà không ảnh hưởng đến khả năng phục hồi dữ liệu.
- Đảm bảo đủ node để tự khôi phục cụm trong hầu hết trường hợp.
- Cho phép thay thế và nâng cấp node mà không cần thêm node mới.
Hạn chế trong nâng cấp cụm hỗn hợp.
- Không thể di chuyển các máy ảo và container được tạo trong các datastore với mã hóa EC 3+2, 5+2, 7+2 hoặc 17+3 từ VHS 7.5 Update 4 sang VHS 7.5 Update 3.
- Chỉ hỗ trợ di chuyển các máy ảo và container được tạo trong các datastore cục bộ hoặc datastore với chế độ dự phòng dữ liệu 3 bản sao hoặc 2 bản sao.
3. Cách cấu hình miền lỗi (failure domain) trong Virtuozzo Storage.
3.1. Miền lỗi là gì?
- Tập hợp các dịch vụ có thể gặp sự cố đồng thời.
- Cần phân tán các bản sao dữ liệu trên các miền lỗi khác nhau để đảm bảo khả năng sẵn sàng của dữ liệu.
- Ví dụ về miền lỗi:
- Một ổ đĩa đơn lẻ (miền lỗi nhỏ nhất).
- Một máy chủ chạy nhiều dịch vụ chunk server (CS).
3.2. Cấu trúc topo miền lỗi.
- Mỗi thành phần dịch vụ Virtuozzo Storage đều có thông tin topo được gán.
- Đường dẫn topo xác định cấu trúc cây hợp lý của vị trí vật lý của các thành phần, bao gồm các định danh
host_ID.cs_ID
được tạo tự động:host_ID
: định danh máy chủ duy nhất, được tạo ngẫu nhiên trong quá trình cài đặt.cs_ID
: định danh dịch vụ duy nhất, được tạo khi tạo CS.
- Để xem topo dịch vụ hiện tại và dung lượng ổ đĩa khả dụng theo vị trí, sử dụng lệnh
vstorage top
và nhấnw
.
3.3. Định nghĩa miền lỗi.
Sử dụng lệnh vstorage set-attr
để xác định miền lỗi cho việc cấp phát bản sao tệp:
vstorage -c <cluster_name> set-attr -R -p /failure-domain=<disk|host>
- Trong đó:
disk
: chỉ cho phép 1 bản sao trên mỗi ổ đĩa hoặc chunk server.host
(mặc định): chỉ cho phép 1 bản sao trên mỗi máy chủ.
- Nên sử dụng cấu hình giống nhau cho tất cả các tệp trong cụm để đơn giản hóa việc phân tích và giảm thiểu lỗi.
3.4. Khuyến nghị về miền lỗi.
- Quan trọng: Không sử dụng miền lỗi
disk
đồng thời với SSD ghi nhật ký. - Nên có ít nhất 5 miền lỗi được cấu hình trong môi trường sản xuất.
- Dành đủ dung lượng ổ đĩa trên mỗi miền lỗi để có thể phục hồi.
- Khuyến nghị ít nhất 3 bản sao.
- Hành vi phục hồi dữ liệu khi miền lỗi lớn bị lỗi được quản lý bởi tham số
mds.wd.max_offline_cs_hosts
. - Chính sách miền có thể là nghiêm ngặt (mặc định) hoặc tư vấn, được điều khiển bởi tham số
mds.alloc.strict_failure_domain
. Không nên điều chỉnh các tham số này trừ khi bạn chắc chắn về việc mình đang làm.