Glusterレンガのスナップショットを特定の時点で取得するための高速な方法を探しています。
ないスナップショットが完全な時点であることが重要です(つまり、バックアップ時にファイルが変更/追加/削除された場合、問題ありませんこれらの変更がある/ないバックアップ)。
ライブ(ダウンタイムなし)バックアップとして実行できるのが理想的ですが、必要に応じて、クラスターからノードを削除し、後で再度追加することもできます。
バックアップはリモートの場所に転送する必要がありますが、必要に応じて、最初のバックアップをローカルで作成した後で行うことができます。
複数のレンガがあります。すべてをバックアップする必要があり、個別に実行することも、一度にすべて実行することもできます。
執筆時点では現在glusterfs 3.5.3
を実行していますが、新しいバージョンがリリースされるとアップグレードされる傾向があります。
(通常のボリュームで行うように)rsyncの使用を検討しましたが、数十万の非常に小さいファイル(100kb〜3mb)があるため、glusterでは非常に低速です。glusterはそれぞれのすべてのノードと通信することを理解しています。正しいバージョンを提供することを確認するためのファイル。 (glusterfsクライアントではなく)サーバーノードの1つのデータディレクトリの場所でrsyncを実行できますか?これは期待どおりに機能し、すべてのノードでチェックする必要がないため、より高速になりますか?
Gluster VolumeSnapshot 完璧な解決策のように聞こえますが、まだリリースされていないと思います。
GlusterストレージノードにはLVMがありますが、私はその詳細についてはあまり詳しくありません。これは解決策になるでしょうか?
他の誰かがこの状況に対処する方法について良い提案がありますか?それとも実際の経験?ありがとうございました。
薄くプロビジョニングされたLVM-Imageにglusterブリックを配置する必要があります。
私の知識で最も簡単な解決策は:
200万を超えるファイルと18Gを含む画像の合計バックアップは、専用サーバーで約90秒かかります。
擬似コード:
# create snapshot
echo $(date)" Creating glusterfs snapshot" >> $LOG
gluster snapshot create $SNAP_NAME $GS_VOLUME no-timestamp 2>>$LOG
echo $(date)" [OK]" >> $LOG
# get snapshot volume name
SNAP_VOL_NAME=$(gluster snapshot info $SNAP_NAME | grep "Snap\ Volume\ Name" | sed -e 's/.*S.*:.//g') MOUNT_OBJECT="/dev/"$VG"/"$SNAP_VOL_NAME"_0"
MOUNT_POINT="/run/gluster/snaps/$SNAP_VOL_NAME/"$BRICK BACKUP_FS=$DIR_BA"/"$SNAP_NAME".ddimg.lz4"
# umount the image
umount $MOUNT_POINT
# create backup
echo $(date)" Creating lz4 of LVM image" >> $LOG
Sudo dd if=$MOUNT_OBJECT 2>>$LOG | lz4 > $BACKUP_FS 2>>$LOG
echo $(date)" [OK]" >> $LOG
# mount image back
#mount $MOUNT_OBJECT $MOUNT_POINT
# delete (all) snapshots and umount
yes | gluster snapshot delete volume $GS_VOLUME 2>> $LOG
悪いソリューションimo。
GlusterNode1 ~ $ df -h | grep gluster
/ dev/mapper/vg_12564073a0545f72de3g7835e711459a-33eacc4c9c2c4e6fbec16cdb55dd8b37_0 2.0G 35M 2.0G 2%/ run/gluster/snaps/33000c4c9c2c4e6fbec16cdb55dd8b37/brick3
スナップショットはlvmで作成され、lv4イメージにはこのノードのブリックのみが含まれます。