ZFS là một hệ thống tập tin đáng kinh ngạc và giải quyết nhiều nhu cầu lưu trữ dữ liệu cục bộ và chia sẻ của tôi.
Trong khi, tôi thực sự thích ý tưởng phân cụm ZFS bất cứ khi nào có thể, đôi khi nó không thực tế hoặc tôi cần một số nút lưu trữ địa lý.
Một trong những trường hợp sử dụng mà tôi có là lưu trữ nhân rộng hiệu năng cao trên các máy chủ ứng dụng Linux. Ví dụ: tôi hỗ trợ một sản phẩm phần mềm cũ có lợi từ các ổ SSD NVMe có độ trễ thấp cho dữ liệu của nó. Ứng dụng này có tùy chọn phản chiếu ở cấp ứng dụng có thể sao chép sang máy chủ thứ cấp, nhưng nó thường không chính xác và là RPO 10 phút .
Tôi đã giải quyết vấn đề này bằng cách có một máy chủ thứ cấp (cũng chạy ZFS trên phần cứng tương tự hoặc không giống nhau) có thể là cục bộ, từ xa hoặc cả hai. Bằng cách kết hợp ba tiện ích chi tiết bên dưới, tôi đã tạo ra một giải pháp sao chép mang lại cho tôi bản sao liên tục, lưu giữ ảnh chụp nhanh và các tùy chọn chuyển đổi linh hoạt.
zfs-tự động chụp nhanh - https://github.com/zfsonlinux/zfs-auto-snapshot
Chỉ cần một công cụ tiện dụng để kích hoạt các snapshot cấp hệ thống tập tin ZFS định kỳ. Tôi thường chạy với lịch trình sau đây về khối lượng sản xuất:
# /etc/cron.d/zfs-auto-snapshot
PATH="/usr/bin:/bin:/usr/sbin:/sbin"
*/5 * * * * root /sbin/zfs-auto-snapshot -q -g --label=frequent --keep=24 //
00 * * * * root /sbin/zfs-auto-snapshot -q -g --label=hourly --keep=24 //
59 23 * * * root /sbin/zfs-auto-snapshot -q -g --label=daily --keep=14 //
59 23 * * 0 root /sbin/zfs-auto-snapshot -q -g --label=weekly --keep=4 //
00 00 1 * * root /sbin/zfs-auto-snapshot -q -g --label=monthly --keep=4 //
Syncoid (Sanoid) - https://github.com/jimsalterjrs/sanoid
Chương trình này có thể chạy snap-hoc snap / sao chép hệ thống tập tin ZFS đến mục tiêu phụ. Tôi chỉ sử dụng phần syncoid của sản phẩm.
Giả sử server1 và server2 , lệnh đơn giản chạy từ server2 để lấy dữ liệu từ server1 :
#!/bin/bash
/usr/local/bin/syncoid root@server1:vol1/data vol2/data
exit $?
Tiền tệ - https://mmonit.com/monit/
Monit là một người lập kế hoạch công việc và quản lý thực thi cực kỳ linh hoạt. Theo mặc định, nó hoạt động trong khoảng thời gian 30 giây, nhưng tôi sửa đổi cấu hình để sử dụng chu kỳ thời gian cơ sở 15 giây.
Một cấu hình ví dụ chạy tập lệnh sao chép ở trên cứ sau 15 giây (1 chu kỳ)
check program storagesync with path /usr/local/bin/run_storagesync.sh
every 1 cycles
if status != 0 then alert
Điều này là đơn giản để tự động hóa và thêm thông qua quản lý cấu hình. Bằng cách gói thực thi ảnh chụp nhanh / sao chép trong Monit, bạn sẽ có được trạng thái tập trung, kiểm soát công việc và cảnh báo (email, SNMP, tập lệnh tùy chỉnh).
Kết quả là tôi có các máy chủ có nhiều ảnh chụp nhanh hàng tháng và nhiều điểm khôi phục và lưu giữ trong: https://pastebin.com/zuNzgi0G - Plus, bản sao nguyên tử 15 giây liên tục:
# monit status
Program 'storagesync'
status Status ok
monitoring status Monitored
last started Wed, 05 Apr 2017 05:37:59
last exit value 0
data collected Wed, 05 Apr 2017 05:37:59
.
.
.
Program 'storagesync'
status Status ok
monitoring status Monitored
last started Wed, 05 Apr 2017 05:38:59
last exit value 0
data collected Wed, 05 Apr 2017 05:38:59