1. Tổng quan.
ZFS là một hệ thống tệp và hệ thống quản lý lưu trữ mạnh mẽ và linh hoạt, trong khi RAID (Redundant Array of Independent Disks) là một phương pháp phân tán dữ liệu trên nhiều ổ đĩa để cung cấp bảo mật và hiệu suất cao hơn. Dưới đây là một số khả năng của ZFS so với RAID cứng truyền thống:
- Bảo mật dữ liệu: ZFS cung cấp một loạt các tính năng bảo mật dữ liệu, bao gồm mã kiểm tra dư thừa, kiểm tra tính toàn vẹn dữ liệu, và khả năng khôi phục dữ liệu tự động. ZFS sử dụng checksums để phát hiện và sửa chữa lỗi dữ liệu trên cả lúc đọc và ghi. Trong khi đó, RAID cứng truyền thống chỉ cung cấp bảo mật dữ liệu thông qua các mức RAID (như RAID 1, RAID 5, hoặc RAID 6), và không có tính năng tự động sửa chữa lỗi dữ liệu như ZFS.
- Quản lý và tính linh hoạt: ZFS cung cấp một hệ thống quản lý lưu trữ mạnh mẽ, cho phép bạn quản lý, mở rộng và tinh chỉnh Pool và Dataset một cách linh hoạt. Bạn có thể thêm hoặc xóa ổ đĩa trong một Pool ZFS mà không cần dừng hoạt động hoặc tái cấu trúc lại toàn bộ hệ thống. Ngoài ra, ZFS còn hỗ trợ tính năng như snapshots, deduplication, compression và thin provisioning. Trong khi đó, RAID cứng truyền thống yêu cầu một quá trình khá phức tạp và tốn nhiều thời gian để thay đổi cấu hình hoặc mở rộng.
- Tính sẵn sàng và khôi phục: ZFS có khả năng khôi phục dữ liệu tự động từ mã kiểm tra dư thừa (nếu có) khi phát hiện lỗi. Nếu một ổ đĩa bị hỏng, ZFS có thể sử dụng các mã kiểm tra dư thừa để khôi phục dữ liệu bị mất. Trong khi đó, RAID cứng truyền thống cũng cung cấp khả năng chống chịu lỗi và khôi phục dữ liệu, nhưng quá trình khôi phục có thể tốn thời gian và yêu cầu can thiệp thủ công.
- Tính hiệu suất: ZFS được thiết kế để tận dụng tối đa hiệu suất ổ đĩa và bộ nhớ. Nó sử dụng bộ nhớ cache thông minh để tăng tốc độ đọc và ghi dữ liệu. Hơn nữa, ZFS có khả năng phân tán dữ liệu trên nhiều ổ đĩa và cân bằng tải tự động, giúp cải thiện hiệu suất tổng thể. RAID cứng truyền thống cũng cung cấp hiệu suất cao, nhưng việc cân bằng tải và tối ưu hóa hiệu suất phụ thuộc vào cấu hình RAID cụ thể.
Như vậy ZFS cung cấp nhiều tính năng và khả năng linh hoạt hơn so với RAID cứng truyền thống. Nó cung cấp bảo mật dữ liệu cao, khả năng khôi phục tự động, quản lý linh hoạt và hiệu suất tốt. Tuy nhiên, việc lựa chọn giữa ZFS và RAID cứng phụ thuộc vào yêu cầu cụ thể của hệ thống lưu trữ và môi trường triển khai.
Dưới đây là một số phân tích chi tiết về các loại ZFS Pool như Single Disk, Mirror, RAID10, RAIDZ, RAIDZ2, RAIDZ3, dRAID và dRAID2:
- Single Disk:
- Single Disk đơn giản là một ổ đĩa độc lập được sử dụng trong ZFS Pool. Không có bất kỳ mức độ phân tán hoặc bảo vệ dữ liệu nào trong cấu hình này. Nếu ổ đĩa bị hỏng, dữ liệu sẽ bị mất hoàn toàn. Single Disk thường không được khuyến nghị để sử dụng trong môi trường sản xuất, mà thường được sử dụng cho mục đích thử nghiệm hoặc lưu trữ tạm thời.
- Yêu cầu triển khai: Chỉ cần một ổ đĩa duy nhất.
- Khả năng chịu lỗi: Không có khả năng chịu lỗi. Nếu ổ đĩa bị hỏng, dữ liệu sẽ bị mất hoàn toàn.
- Ví dụ cụ thể: Một ổ SSD 500GB được sử dụng để lưu trữ các tệp dự án cá nhân.
- Mirror:
- Mirror là một loại ZFS Pool đơn giản nhưng cung cấp bảo vệ dữ liệu hơn so với Single Disk. Trong Mirror, hai hoặc nhiều ổ đĩa được ghép cặp và dữ liệu được sao chép giữa chúng. Điều này đảm bảo rằng dữ liệu vẫn sẽ tồn tại nếu một ổ đĩa gặp sự cố. Mirror cũng cung cấp hiệu suất cao hơn trong việc đọc dữ liệu, vì nó có thể đọc từ nhiều ổ đĩa cùng một lúc.
- Yêu cầu triển khai: Cần ít nhất hai ổ đĩa để tạo thành cặp mirror.
- Khả năng chịu lỗi: Có khả năng chịu lỗi cho đến mức một ổ đĩa trong cặp mirror bị hỏng. Dữ liệu vẫn an toàn trên ổ đĩa còn lại.
- Ví dụ cụ thể: Hai ổ đĩa 1TB được sử dụng trong một cặp mirror để lưu trữ dữ liệu quan trọng.
- RAID10:
- RAID10 là sự kết hợp giữa Mirror và RAID 0. Nó sử dụng hai hoặc nhiều bộ Mirror và kết hợp chúng theo cấu trúc RAID 0. Vì vậy, nó cung cấp bảo vệ dữ liệu thông qua sao chép đồng thời và cải thiện hiệu suất bằng cách phân tán dữ liệu. RAID10 cung cấp mức độ bảo vệ cao và hiệu suất tốt, nhưng yêu cầu nhiều ổ đĩa để triển khai.
- Yêu cầu triển khai: Cần ít nhất bốn ổ đĩa để tạo thành một cấu hình RAID10. Số lượng ổ đĩa phải là số chẵn.
- Khả năng chịu lỗi: Có khả năng chịu lỗi tối đa một nửa số ổ đĩa. Ví dụ, trong một cấu hình RAID10 với bốn ổ đĩa, có thể chịu lỗi tối đa hai ổ đĩa.
- Ví dụ cụ thể: Bốn ổ đĩa 2TB được sử dụng trong cấu hình RAID10, tạo thành hai cặp mirror và dữ liệu được phân tán giữa các mirror.
- RAIDZ:
- RAIDZ là một loại ZFS Pool sử dụng cơ chế RAID-like để phân tán dữ liệu và cung cấp bảo vệ dữ liệu. Trong RAIDZ, dữ liệu được chia thành các khối, và các khối dữ liệu cùng với các mã kiểm tra dư thừa được phân tán trên nhiều ổ đĩa. RAIDZ cung cấp khả năng chống chịu sự cố ổ đĩa, nghĩa là dữ liệu vẫn có thể được khôi phục nếu một ổ đĩa bị hỏng.
- Yêu cầu triển khai: Cần ít nhất ba ổ đĩa để tạo thành cấu hình RAIDZ.
- Khả năng chịu lỗi: Có khả năng chịu lỗi cho đến mức một ổ đĩa bị hỏng. Ví dụ, trong cấu hình RAIDZ với ba ổ đĩa, dữ liệu vẫn an toàn khi một ổ đĩa bị hỏng.
- Ví dụ cụ thể: Ba ổ đĩa 3TB được sử dụng trong cấu hình RAIDZ để lưu trữ dữ liệu đa phương tiện.
- RAIDZ2:
- RAIDZ2 tương tự như RAIDZ, nhưng với mức độ bảo vệ cao hơn. Trong RAIDZ2, ngoài các mã kiểm tra dư thừa được phân tán như RAIDZ, nó cũng sử dụng mã kiểm tra dư thừa thứ hai để giảm thiểu nguy cơ mất dữ liệu trong trường hợp xảy ra sự cố với hai ổ đĩa cùng một lúc.
- Yêu cầu triển khai: Cần ít nhất bốn ổ đĩa để tạo thành cấu hình RAIDZ2.
- Khả năng chịu lỗi: Có khả năng chịu lỗi cho đến mức hai ổ đĩa bị hỏng. Ví dụ, trong cấu hình RAIDZ2 với bốn ổ đĩa, dữ liệu vẫn an toàn khi hai ổ đĩa bị hỏng.
- Ví dụ cụ thể: Bốn ổ đĩa 4TB được sử dụng trong cấu hình RAIDZ2 để lưu trữ dữ liệu quan trọng của doanh nghiệp.
- RAIDZ3:
- RAIDZ3 tương tự như RAIDZ2, nhưng với mức độ bảo vệ cao hơn nữa. Trong RAIDZ3, ngoài các mã kiểm tra dư thừa được phân tán như RAIDZ2, nó sử dụng mã kiểm tra dư thừa thứ ba để giảm thiểu nguy cơ mất dữ liệu trong trường hợp xảy ra sự cố với ba ổ đĩa cùng một lúc.
- Yêu cầu triển khai: Cần ít nhất năm ổ đĩa để tạo thành cấu hình RAIDZ3.
- Khả năng chịu lỗi: Có khả năng chịu lỗi cho đến mức ba ổ đĩa bị hỏng. Ví dụ, trong cấu hình RAIDZ3 với năm ổ đĩa, dữ liệu vẫn an toàn khi ba ổ đĩa bị hỏng.
- Ví dụ cụ thể: Năm ổ đĩa 6TB được sử dụng trong cấu hình RAIDZ3 để lưu trữ dữ liệu quan trọng của tổ chức lớn.
- dRAID (distributed RAID):
- dRAID là một loại ZFS Pool phân tán dữ liệu trên nhiều ổ đĩa, tương tự như RAIDZ. Tuy nhiên, dRAID cho phép linh hoạt hơn trong việc mở rộng và quản lý Pool. Nó cho phép thêm hoặc loại bỏ ổ đĩa một cách độc lập mà không cần tái cấu trúc toàn bộ Pool.
- Yêu cầu triển khai: Có thể triển khai với bất kỳ số lượng ổ đĩa nào. Số lượng ổ đĩa phải được cung cấp và cấu hình trước.
- Khả năng chịu lỗi: Tùy thuộc vào cấu hình cụ thể, dRAID có thể cung cấp khả năng chịu lỗi khác nhau. Nó sử dụng các mã kiểm tra dư thừa phân tán để bảo vệ dữ liệu.
- Ví dụ cụ thể: Một cấu hình dRAID với tám ổ đĩa, trong đó sáu ổ đĩa chính và hai ổ đĩa kiểm tra dư thừa, để lưu trữ dữ liệu trung tâm dữ liệu.
- dRAID2:
- dRAID2 tương tự như dRAID, nhưng với mức độ bảo vệ cao hơn. Nó sử dụng mã kiểm tra dư thừa để cung cấp khả năng chống chịu sự cố ổ đĩa. Mã kiểm tra dư thừa được phân tán trên các ổ đĩa, giúp bảo vệ dữ liệu và khôi phục dữ liệu trong trường hợp mất mát ổ đĩa.
- Yêu cầu triển khai: Có thể triển khai với bất kỳ số lượng ổ đĩa nào. Số lượng ổ đĩa chính và kiểm tra dư thừa phải được cung cấp và cấu hình trước.
- Khả năng chịu lỗi: Tùy thuộc vào cấu hình cụ thể, dRAID2 cung cấp khả năng chịu lỗi cao hơn so với dRAID thông thường. Nó sử dụng các mã kiểm tra dư thừa phân tán để bảo vệ dữ liệu.
- Ví dụ cụ thể: Một cấu hình dRAID2 với mười ổ đĩa, trong đó tám ổ đĩa chính và hai ổ đĩa kiểm tra dư thừa, để lưu trữ dữ liệu quan trọng trong một môi trường yêu cầu khả năng chịu lỗi cao.
Mỗi loại ZFS Pool có ưu điểm và hạn chế riêng, và lựa chọn phù hợp phụ thuộc vào yêu cầu của môi trường cụ thể.
2. Kiểm tra khả năng chịu lỗi của một số loại ZFS Pool.
2.1. View hệ thống.
Như các bạn thấy trong cụm Proxmox của tôi hiện tại có 5 Node và trong đó 3 node đầu chạy storage Ceph và 2 node cuối cùng chạy ZFS.
- Với Node 4 tôi tạo 3 ZFS Pool với thông tin như sau:
- zfs-pool-mirror: 2 ổ đĩa.
- zfs-pool-raidz: 4 ổ đĩa.
- zfs-pool-draid: 5 ổ đĩa.
- Với Node 5 tôi tạo 1 ZFS Pool với thông tin như sau:
- zfs-pool-raidz2: 12 ổ đĩa.
Thông tin chi tiết zfs-pool-mirror
Node 4.
Thông tin máy ảo sử dụng zfs-pool-mirror
Node 4.
Thông tin chi tiết zfs-pool-raidz
Node 4.
Thông tin chi tiết zfs-pool-raidz
Node 4.
Thông tin chi tiết zfs-pool-draid
Node 4.
Thông tin máy ảo sử dụng zfs-pool-draid
Node 4.
Thông tin máy ảo sử dụng zfs-pool-raidz2
Node 5.
Thông tin máy ảo win2k12-zfs-pool-draiz2-sr1
sử dụng zfs-pool-draiz2
Node 5.
Thông tin máy ảo win2k12-zfs-pool-draiz2-sr2
sử dụng zfs-pool-draiz2
Node 5.
2.2. Rút ổ đĩa.
2.2.1. Trên Node pve-node4.hoanghd.com.
Node này mình đã rút các ổ đĩa lần lượt như sau:
- zfs-pool-mirror: Với 2 ổ đĩa mình đã rút 1 ổ đĩa, cảnh báo tình trạng pool là Degraded.
- zfs-pool-raidz: Với 4 ổ đĩa mình đã rút 2 ổ đĩa, cảnh báo tình trạng pool là Degraded.
- zfs-pool-draid: Với 5 ổ đĩa mình đã rút 2 ổ đĩa, cảnh báo tình trạng pool là Suspended.
– Với zfs-pool-mirror mình có 2 ổ đĩa và mình tiến hành rút 1 ổ đĩa.
Bạn nhận được thông báo trên cho biết rằng pool ZFS đang ở trạng thái suy yếu do một ổ đĩa trong mirror bị hỏng hoặc không thể sử dụng do nhãn bị thiếu hoặc không hợp lệ. Bạn cần thay thế ổ đĩa bị hỏng bằng cách sử dụng lệnh ‘pool replace’ để khôi phục trạng thái hoàn chỉnh của pool. Lưu ý rằng dữ liệu hiện tại không bị lỗi, mặc dù pool đang hoạt động ở trạng thái suy yếu.
- Cảnh báo “DEGRADED” trong ZFS pool cho biết rằng pool đang ở trạng thái suy yếu do một hoặc nhiều thiết bị không thể sử dụng. Trong trường hợp này, cảnh báo cho biết rằng có một ổ đĩa trong số hai ổ đĩa của ZFS mirror bị hỏng hoặc không thể sử dụng do nhãn bị thiếu hoặc không hợp lệ.
- Thông báo “One or more devices could not be used because the label is missing or invalid” cho biết rằng một hoặc nhiều thiết bị không thể sử dụng vì nhãn trên thiết bị bị mất hoặc không hợp lệ. Trong trường hợp này, một trong hai ổ đĩa của mirror bị ảnh hưởng.
- Cảnh báo “Sufficient replicas exist for the pool to continue functioning in a degraded state” cho biết rằng pool vẫn có đủ số lượng bản sao để tiếp tục hoạt động trong trạng thái suy yếu. Trong trường hợp này, bản sao dữ liệu trên ổ đĩa còn lại trong mirror đủ để pool vẫn tiếp tục hoạt động mặc dù một ổ đĩa không hoạt động.
- Hướng dẫn “Replace the device using ‘pool replace'” cho biết cách thay thế thiết bị bằng lệnh ‘pool replace’. Điều này đề xuất bạn thay thế ổ đĩa bị hỏng trong mirror để khôi phục trạng thái hoàn chỉnh của pool.
- Thông báo “No known data errors” cho biết không có lỗi dữ liệu được biết đến. Điều này có nghĩa là dữ liệu hiện tại trong pool không bị lỗi, mặc dù pool đang hoạt động ở trạng thái suy yếu do ổ đĩa bị hỏng.
Và dưới đây là kết quả của server win2k22-zfs-pool-mirror.
– Với zfs-pool-raidz mình có 4 ổ đĩa và mình tiến hành rút 2 ổ đĩa để cố ý làm hỏng pool (lý do với raidz bạn chỉ được phép hỏng 1 ổ đĩa mà thôi) và sau đó mình cắm lại 1 ổ đĩa xem chuyện gì xảy ra.
Đây là hình ảnh khi mình rút 2 ổ đĩa trong số 4 ổ đĩa của raidz.
Dưới đây là kết quả rất bất ngờ của server win2k22-zfs-pool-raidz.
Đáng lẽ nó phải chết rồi nhưng hiện tại nó vẫn đang chạy được, điều này có thể được giải thích như sau:
- Khi bạn chạy RAIDZ với 4 ổ đĩa, nó sử dụng thuật toán phân tán dữ liệu và cung cấp khả năng chống hỏng dữ liệu (data redundancy) thông qua việc tạo mã dự phòng (parity). RAIDZ sử dụng mã dự phòng để tạo ra các khối dữ liệu dự phòng, giúp phục hồi dữ liệu trong trường hợp một hoặc nhiều ổ đĩa bị hỏng.
- Trong trường hợp của bạn, khi bạn rút 2 ổ đĩa khỏi mảng RAIDZ với 4 ổ đĩa, hệ thống vẫn có thể hoạt động và dữ liệu không bị hỏng. Điều này là do trong một mảng RAIDZ, khả năng chống hỏng dữ liệu được xây dựng dựa trên số lượng ổ đĩa trong mảng và cấu trúc mã dự phòng.
- Trong một mảng RAIDZ với 4 ổ đĩa, thông thường nó sử dụng mã dự phòng có mức độ 1. Điều này có nghĩa là nó sẽ tạo ra các khối dự phòng dựa trên 3 ổ đĩa còn lại. Khi bạn rút ra 2 ổ đĩa, hệ thống vẫn có thể sử dụng các khối dự phòng từ 3 ổ đĩa còn lại để phục hồi dữ liệu trong trường hợp có sự cố xảy ra.
- Tuy nhiên, bạn nên lưu ý rằng việc rút ổ đĩa khỏi mảng RAIDZ có thể ảnh hưởng đến hiệu suất và khả năng chống hỏng dữ liệu của hệ thống. Để đảm bảo tính toàn vẹn dữ liệu và hiệu suất ổn định, nên tuân thủ các quy tắc và hướng dẫn của nhà cung cấp hệ thống RAIDZ và backup dữ liệu quan trọng.
Và đây là hình ảnh khi mình đã gắn lại 1 ổ đĩa trong số 2 ổ đĩa mình đã rút, và bây giờ số ổ đĩa mình rút ra là 1, số đĩa online là 3.
Bạn nhận được thông báo trên cho biết pool ZFS đang ở trạng thái “Tạm ngưng” do có ít nhất một thiết bị gặp sự cố sau khi có 10 lỗi xảy ra. Bạn cần kiểm tra và kết nối lại các thiết bị bị ảnh hưởng, sau đó chạy lệnh “pool clear” để xóa các lỗi và khôi phục trạng thái của pool. Có 13 lỗi dữ liệu đã xảy ra trong pool.
- Thông báo “Health: SUSPENDED” cho biết ZFS pool đang ở trạng thái “Tạm ngưng”. Trong trường hợp này, trạng thái của pool đã bị tạm ngưng do sự cố xảy ra với một hoặc nhiều thiết bị.
- Thông báo “Status: One or more devices are faulted in response to 10 failures” cho biết một hoặc nhiều thiết bị trong pool đã gặp sự cố và bị đánh dấu là “faulted” sau khi có 10 lỗi xảy ra. Điều này có nghĩa là có ít nhất một thiết bị trong pool đã gặp sự cố và không hoạt động đúng.
- Hướng dẫn “Action: Make sure the affected devices are connected, then run ‘pool clear'” cho biết bạn cần kiểm tra các thiết bị bị ảnh hưởng và đảm bảo chúng được kết nối đúng. Sau đó, bạn cần chạy lệnh “pool clear” để xóa các lỗi và khôi phục trạng thái của pool.
- Thông báo “Errors: 13 data errors, use ‘-v’ for a list” cho biết có tổng cộng 13 lỗi dữ liệu đã xảy ra trong pool. Bạn có thể sử dụng tùy chọn “-v” để hiển thị danh sách các lỗi cụ thể.
Vì tôi đã cắm lại 1 ổ đĩa nên hiện tại theo đúng thực tế tôi chỉ rút một ổ đĩa mà thôi. Như vậy đáng lẽ trạng thái phải là DEGRADED chứ không phải SUSPENDED.
Bây giờ bạn có thể đặt lại trạng thái của một ZFS pool, bạn có thể sử dụng lệnh zpool clear tên_pool
. Thay thế “tên_pool” bằng tên của ZFS pool của bạn. Lệnh này sẽ xóa bỏ các lỗi hiện tại và đặt lại trạng thái lỗi của pool.
zpool clear zfs-pool-raidz
Và đây là kết quả sau khi chạy lệnh zpool clear.
Kết quả khi vào xem chi tiết.
Dưới đây là kết quả của server win2k22-zfs-pool-raidz.
– Với zfs-pool-draid mình có 5 ổ đĩa (1 Spares, 3 Data Devs và 1 dự phòng) và mình tiến hành rút 1 ổ đĩa.
Bạn nhận được thông báo như trên cho biết pool ZFS đang ở trạng thái suy yếu do hai ổ đĩa trong draid bị hỏng hoặc gặp sự cố. Quá trình resilvering đã được thực hiện thành công nhưng có 424.782 lỗi dữ liệu đã xảy ra. Bạn cần phục hồi tập tin bị hỏng nếu có thể hoặc phục hồi toàn bộ pool từ bản sao lưu. Ứng dụng có thể bị ảnh hưởng bởi lỗi dữ liệu.
- Cảnh báo “Health: DEGRADED” trong ZFS pool cho biết rằng pool đang ở trạng thái suy yếu. Trong trường hợp này, cảnh báo cho biết có hai ổ đĩa trong số năm ổ đĩa của ZFS draid bị hỏng hoặc gặp sự cố.
- Thông báo “Scan: resilvered (draid1:3d:5c: 1s-0) 2.95G in 00:00:32 with 0 errors on Sat Jun 10 10:16:27 2023” cho biết quá trình resilvering đã được thực hiện. Quá trình resilvering là quá trình sao chép dữ liệu từ các bản sao khác vào ổ đĩa mới để khôi phục hoặc thay thế ổ đĩa bị hỏng. Trong trường hợp này, quá trình resilvering đã được thực hiện thành công và đã sao chép được 2.95G dữ liệu trong 00:00:32 mà không gặp lỗi.
- Trạng thái “Status: One or more devices has experienced an error resulting in data corruption. Applications may be affected.” cho biết một hoặc nhiều thiết bị đã gặp sự cố dẫn đến lỗi dữ liệu. Ứng dụng có thể bị ảnh hưởng bởi lỗi này.
- Hướng dẫn “Action: Restore the file in question if possible. Otherwise restore the entire pool from backup.” cho biết bạn cần phục hồi tập tin bị hỏng nếu có thể. Nếu không thể phục hồi tập tin, bạn cần phục hồi toàn bộ pool từ bản sao lưu.
- Thông báo “Errors: 424782 data errors, use -V for list” cho biết có tổng cộng 424.782 lỗi dữ liệu đã xảy ra trong pool. Bạn có thể sử dụng tùy chọn -V để hiển thị danh sách các lỗi cụ thể.
2.2.1. Trên Node pve-node5.hoanghd.com.
Với Node này mình có 12 ổ đĩa 1TB và mình đang chạy ZFS Pool là Raidz2 và mình đã rút 2 ổ đĩa.
Bạn để ý sẽ thấy các cảnh báo Pool ZFS đang trong trạng thái suy yếu vì một hoặc nhiều thiết bị không thể sử dụng. Để khắc phục, bạn cần thay thế thiết bị bị hỏng bằng cách sử dụng lệnh ‘pool replace’. Lưu ý rằng dữ liệu hiện tại không bị lỗi, nhưng Pool đang hoạt động ở trạng thái suy yếu.
- Cảnh báo “DEGRADED” trong ZFS Pool cho biết một hoặc nhiều thiết bị không thể sử dụng do nhãn bị thiếu hoặc không hợp lệ. Tuy nhiên, vẫn đủ bản sao (replicas) tồn tại để Pool tiếp tục hoạt động trong trạng thái suy yếu (degraded).
- Cảnh báo “One or more devices could not be used because the label is missing or invalid. Sufficient replicas exist for the pool to continue functioning in a degraded state” có nghĩa là một hoặc nhiều thiết bị không thể sử dụng trong ZFS pool do nhãn trên thiết bị bị thiếu hoặc không hợp lệ. Tuy nhiên, vẫn có đủ số lượng bản sao (replicas) để cho phép pool tiếp tục hoạt động trong trạng thái suy yếu.
- Cảnh báo “Replace the device using ‘pool replace'” đề xuất thay thế thiết bị bằng cách sử dụng lệnh ‘pool replace’. Điều này ám chỉ rằng một hoặc nhiều ổ đĩa trong Pool gặp sự cố và cần được thay thế để khôi phục trạng thái hoàn chỉnh của Pool.
- Cảnh báo “NO known data errors” cho biết không có lỗi dữ liệu được biết đến. Điều này có nghĩa là dữ liệu hiện tại trong Pool không bị lỗi, mặc dù trạng thái của Pool là suy yếu (degraded) do sự cố với một hoặc nhiều ổ đĩa.
Như vậy với raidz2 khi hỏng 2 ổ đĩa thì dữ liệu của bạn vẫn được bảo toàn và hoạt động tốt.
Dưới đây là kết quả của server win2k22-zfs-pool-raidz2-sr1
.
Dưới đây là kết quả của server win2k22-zfs-pool-raidz2-sr2.
Giả sử mình rút thêm một ổ đĩa trong số 12 ổ đĩa xem kết quả thế nào. Như vậy với raidz2 bạn chỉ được phép hỏng 2 ổ đĩa mà thôi nếu bạn để hỏng thêm 1 ổ thứ 3 thì pool bạn sẽ có khả năng hỏng rất cao.
Hiện tại ở pve-node5.hoanghd.com mình đã cắm hết ổ đĩa vào nhưng vì một lý do nào đó mà server chẳng nhận thêm được ổ đĩa nào cả.
Nếu không đủ số lượng ổ đĩa thì mình không thể đặt lại trạng thái cho pool.
root@pve-node5:~# zpool clear zfs-pool-raidz2
cannot clear errors for zfs-pool-raidz2: I/O error
Bây giờ mình thử restart lại Node này bằng lệnh init 6
. Và khi khởi động xong Node này thì tất cả các ổ đĩa đã nhận đầy đủ và trạng thái của Pool tự động chuyển qua Health là Online luôn rồi.
3. Tổng kết.
ZFS là một hệ thống tập tin và quản lý logical volume (LVM) rất tin cậy và có khả năng tự phục hồi. Nó được thiết kế để bảo vệ dữ liệu khỏi hỏng và có các tính năng như checksums, snapshots, và data replication để đảm bảo tính toàn vẹn của dữ liệu.
Tuy nhiên, nếu máy tính bị tắt hoặc mất điện đột ngột trong quá trình hoạt động, có một nguy cơ nhất định rằng dữ liệu trong bộ nhớ đệm (cache) hoặc các giao tác chưa được ghi hoàn toàn có thể bị mất. Điều này có thể gây ra một số sự cố như mất hoặc hỏng dữ liệu trong một số trường hợp.
Tuy nhiên, ZFS có các cơ chế bảo vệ dữ liệu để giảm nguy cơ này. Dữ liệu trên ZFS được ghi theo cơ chế copy-on-write, có nghĩa là dữ liệu gốc không bị thay đổi trực tiếp và các phiên bản mới được tạo ra trong quá trình ghi. Điều này đảm bảo tính toàn vẹn của dữ liệu trong trường hợp máy tính bị tắt hoặc mất điện đột ngột.
Hơn nữa, ZFS có tính năng tự phục hồi, nghĩa là nó có khả năng kiểm tra và sửa chữa dữ liệu hỏng sử dụng các checksums. Khi máy tính khởi động lại hoặc bị mất nguồn đột ngột, ZFS có thể tự động kiểm tra tính toàn vẹn của dữ liệu và thực hiện các thao tác sửa chữa nếu cần.
Tuy nhiên, để đảm bảo tính toàn vẹn dữ liệu tốt nhất, nên tuân thủ các quy tắc và hướng dẫn của ZFS, bao gồm việc sử dụng bộ nhớ ECC (Error-Correcting Code) để giảm nguy cơ lỗi và thực hiện các biện pháp bảo vệ nguồn điện ổn định cho máy tính.