ZFS 는 놀라운 파일 시스템이며 많은 로컬 및 공유 데이터 스토리지 요구를 해결합니다.
가능하다면 클러스터 된 ZFS 라는 개념이 마음에 들지만 때로는 실용적이지 않거나 지리적으로 스토리지 노드를 분리해야합니다.
내가 사용하는 사례 중 하나는 Linux 응용 프로그램 서버의 고성능 복제 저장소입니다. 예를 들어, 데이터 지연 시간이 짧은 NVMe SSD 드라이브의 혜택을받는 레거시 소프트웨어 제품을 지원합니다. 응용 프로그램에는 보조 서버로 복제 할 수있는 응용 프로그램 수준 미러링 옵션이 있지만 종종 부정확하며 10 분 RPO 입니다.
로컬, 원격 또는 둘 다가 될 수있는 보조 서버 (유사하거나 다른 하드웨어에서 ZFS를 실행)를 사용하여이 문제를 해결했습니다. 아래에 설명 된 세 가지 유틸리티를 결합하여 연속 복제, 딥 스냅 샷 보존 및 유연한 장애 조치 옵션을 제공하는 복제 솔루션을 만들었습니다.
zfs-auto-snapshot - https : //github.com/zfsonlinux/zfs-auto-snapshot
정기적 인 ZFS 파일 시스템 수준 스냅 샷을 활성화하는 편리한 도구입니다. 나는 일반적으로 프로덕션 볼륨에서 다음 일정으로 실행합니다.
# /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
이 프로그램은 ZFS 파일 시스템의 임시 스냅 / 복제를 보조 대상으로 실행할 수 있습니다. 제품 의 싱크 로이드 부분 만 사용합니다 .
가정 서버 1 과 서버 2 에서, 간단한 명령 실행 서버 2 것은 하기 당겨 데이터 서버 1을 :
#!/bin/bash
/usr/local/bin/syncoid root@server1:vol1/data vol2/data
exit $?
MONIT - https://mmonit.com/monit/
Monit은 매우 유연한 작업 스케줄러 및 실행 관리자입니다. 기본적으로 30 초 간격으로 작동하지만 15 초 기본 시간주기를 사용하도록 구성을 수정합니다.
15 초마다 (1주기) 위의 복제 스크립트를 실행하는 구성 예
check program storagesync with path /usr/local/bin/run_storagesync.sh
every 1 cycles
if status != 0 then alert
구성 관리를 통해 자동화 및 추가가 간단합니다. Monit에서 스냅 샷 / 복제 실행을 래핑하면 중앙 집중식 상태, 작업 제어 및 경고 (이메일, SNMP, 사용자 정의 스크립트)를 얻을 수 있습니다.
결과는 내가 가지고있는 서버를 가지고있다 여러 개월 이내에 매달 스냅 샷과 롤백 및 유지의 많은 점을 : https://pastebin.com/zuNzgi0G - 플러스, 연속 압연 15 초 원자 복제 :
# 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