Tôi hiểu điều này đi kèm với nguy cơ mất dữ liệu nếu ổ đĩa bị lỗi
hoặc mất điện. Điều này có thể chấp nhận được vì tôi giữ lại các tệp trên
máy nguồn đủ lâu để truyền lại trong trường hợp dữ liệu ngắn hạn
thua
Nếu bạn có thể chịu được việc mất tối đa 5 giây ghi, bạn chỉ cần định cấu hình ZFS thành phớt lờ đồng bộ hóa yêu cầu với lệnh zfs đặt đồng bộ hóa = xe tăng bị vô hiệu hóa
Buộc tất cả các thao tác ghi phải đi qua một SLOG, thậm chí là rất nhanh, là chẳng bao giờ nhanh hơn bỏ qua các yêu cầu đồng bộ hóa. SLOG không phải là bộ đệm ghi ngược cổ điển, bộ đệm này sẽ hấp thụ ghi để chuyển chúng xuống tầng chậm hơn. Thay vào đó, nó là một phương tiện để cung cấp tính bền bỉ với độ trễ thấp bằng cách lưu trữ tạm thời quá trình ghi đồng bộ hóa (và chỉ có chúng) trong một kho lưu trữ nhanh trung gian. Sau vài giây, cùng một thao tác ghi sẽ được chuyển từ bộ nhớ chính sang nhóm chính. Một SLOG không bao giờ được đọc cho đến khi xảy ra sự cố (và khôi phục).
Điều đó nói rằng, với một vdev nhân bản dựa trên ổ cứng duy nhất, bạn sẽ không bao giờ có thể bão hòa liên kết 10 Gbs. Để ghi liên tục ở tốc độ ~1 GB/giây, bạn cần ít nhất 10 HDD trong raidz2 hoặc 12+ HDD trong mirror+striping. Hoặc, thậm chí tốt hơn, bạn cần một nhóm toàn SSD. Điều này thậm chí trước khi coi mọi thứ là hồ sơ kích thước
, nén
, vân vân.
CHỈNH SỬA, để làm rõ các công việc SLOG:
Để giảm thiểu độ trễ khi ghi đồng bộ, ZFS đã sử dụng cái gọi là Nhật ký mục đích ZFS (ZIL). Nói tóm lại: mỗi lần ghi đồng bộ hóa đến, ZFS ngay lập tức ghi chúng vào một khu vực nhóm tạm thời có tên là ZIL. Điều này cho phép ghi để quay lại ngay lập tức, cho phép ứng dụng gọi điện tiếp tục. Sau vài giây, khi giao dịch được xác nhận, bất kỳ bản ghi nào được ghi vào ZIL đều được trả lời cho nhóm chính. Điều này không không phải có nghĩa là ZIL được đọc ở mỗi lần xác nhận; thay vào đó, dữ liệu được ghi đến từ bộ đệm DRAM ARC chính. Nói cách khác, ZIL là một loại "nhật ký đăng nhập trước" đảm bảo tính bền bỉ của dữ liệu nhanh đối với dữ liệu đồng bộ được ghi.
Điều này thực sự có nghĩa là việc ghi đồng bộ bị trùng lặp: chúng được viết cả hai đến ZIL và nhóm chính. nhập SLOG (thiết bị nhật ký riêng biệt): một thiết bị dành riêng cho chỉ ghi đồng bộ hóa - tức là: nó giải phóng nhóm chính khỏi lưu lượng ZIL. SLOG SSD nhanh rất quan trọng do ổ cứng ghi rất chậm khi đồng bộ hóa. SLOG không phải là bộ đệm ghi lại cổ điển của bạn vì:
- nó chỉ hấp thụ các ghi đồng bộ hóa, bỏ qua hoàn toàn các ghi bình thường;
- nó chỉ sao chép dữ liệu đã được lưu trữ trong ARC.
Hai điểm kết hợp có nghĩa là một SLOG lớn về cơ bản là lãng phí, bởi vì nó chỉ cần gấp 3 lần kích thước tối đa của một giao dịch ZFS. Nói cách khác, SLOG 2-4 GB là đủ cho hầu hết các trường hợp, với SLOG lớn hơn chỉ hữu ích trong các thiết lập cụ thể.
Một SLOG như vậy là chìa khóa để cung cấp độ trễ thấp hơn cho các lần ghi đồng bộ hóa ngẫu nhiên, nhưng mặc dù nó có thể hấp thụ các xung đột rất nhỏ của các lần ghi đồng bộ hóa tuần tự, nhưng đây không phải là chức năng chính của nó. Nói cách khác, bạn có thể xem ZIL/SLOG như một lát ARC liên tục. Hệ quả là bạn không thể mong đợi ghi hàng chục GB và ẩn tốc độ nhóm chính chậm thông qua SLOG, vì điều này có nghĩa là bạn đã có hàng chục GB dữ liệu bẩn bên trong ARC dựa trên RAM của bạn.
Cài đặt đồng bộ hóa = bị vô hiệu hóa
hướng dẫn ZFS đe dọa tất cả các lần ghi, thậm chí cả những lần đồng bộ hóa, như cách ghi không đồng bộ bình thường. Điều này sẽ bỏ qua mọi dữ liệu ZIL/SLOG và nếu bạn có thể chấp nhận cửa sổ mất dữ liệu 5s, thì đó là cài đặt nhanh hơn mà bạn có thể đạt được - ngay cả khi so sánh với SLOG rất nhanh như Optane hoặc RAMdrive. Điều tốt đẹp về đồng bộ hóa = bị vô hiệu hóa
là nó không tắt tính năng ghi đồng bộ cho siêu dữ liệu riêng của ZFS và vì vậy nó không gây rủi ro cho hệ thống tệp của bạn. Điều này không có nghĩa là bạn có thể tùy tiện sử dụng nó: như đã nói nhiều lần, bạn nên chắc chắn hiểu ý nghĩa của nó (bạn có thể mất những giây cuối cùng của dữ liệu chưa được đồng bộ hóa trong trường hợp gặp sự cố/mất điện).
Mặt khác, bộ đệm ghi lại dựa trên SSD cổ điển như lvmcache
và bcache
có thể (ít nhiều) sử dụng hiệu quả hàng trăm GB bộ đệm SSD để che giấu độ trễ/thông lượng nhóm chính - cụ thể là vì chúng là bộ đệm ghi lại chính thức không cần phải có dữ liệu của chúng bên trong bộ nhớ chính (ngược lại, bộ nhớ chính tuôn ra chính nó thông qua các bộ đệm SSD này).
Lý do đằng sau ZFS là bộ nhớ hệ thống chính (lớn) là bộ đệm đọc/ghi thực sự của bạn, với SLOG là phương tiện để có độ trễ thấp hơn cho việc ghi đồng bộ hóa ngẫu nhiên.