قم بتأمين أخيك ، آمن ...
ZFS 0.8 لديه القدرة على إرسال لقطات إضافية للبيانات المشفرة دون فك تشفيرها. أي ، بعد وجود مصفوفة مشفرة ، يمكنك تنظيم نسخة طبق الأصل منها على جهاز بعيد ، دون الوثوق بمالك المبنى البعيد. لا تترك البيانات الرئيسية والبيانات التي تم فك تشفيرها المباني الموثوقة.لا يوجد لدى أي من عملائي (المتحكمون الدقيقون) أكثر من غرفة خادم واحدة ، إذا حدث حريق هناك ، على سبيل المثال ، نجمة. بعد الاتفاق مع زميلك في نشاط إداري خطير ، يمكنك تأمين بعضكما البعض دون خوف من استخدام البيانات.يتم تثبيت أي خدمة على شكل جهاز افتراضي على Proxmox ، حيث توجد البيانات على ZFS ، وستتاح لك دائمًا فرصة تخزين نسخة عن بُعد من الجهاز الظاهري. هناك فرصة أنه في يوم ما بدلاً من الوقوع في اليأس ، ستذهب إلى غرفة نائية ، وتلتقط قطعة من الحديد وتدير جميع الخدمات بصحة جيدة. لقد نقلت بالفعل جميع خدماتي تقريبًا إلى Proxmox منذ حوالي عامين وليس لدي أي ندم ، كل شيء يعمل بشكل جيد. في ZFS ، لدي خادم طرفي لـ 30 شخصًا ، مرتبطًا بالعملاء الرقيقين (أي 30 وظيفة كاملة). بالإضافة إلى النسخة الحالية ، سيكون لديك أيضًا لقطات للأيام x الأخيرة محليًا وعن بُعد.نعم ، ستفقد الإنتاجية من استخدام zfs ومن التشفير ، لكني توصلت إلى استنتاج مفاده أنني كنت مستعدًا لدفع هذا السعر مقابل هذه الوظيفة.ملعقة من القطران
في معالجة أنت تطير على الفور في المرهم. نعم ، ZFS أبطأ. بشكل أساسي. ولكن لا يمكنك استخدامه كسرية منتظمة. يجب أن تعمل في مجموعة من الأقراص ، حيث تكون الزيادة في عدد الأقراص مرحب بها ، يفضل أن تكون الأقراص SAS ، يجب أن تعمل وحدة التحكم في وضع HBA (وليس raid0 كأقراص فردية) ، يجب أن يكون هناك ECC RAM ويجب أن يكون هناك العديد ، يجب أن يكون هناك واحد يمكن أن يكون SSD (PCI-E الأفضل) كذاكرة تخزين مؤقت لقراءة المستوى الثاني (صغير ، العربات من 64) وواحد SSD لـ ZIL صغيرًا جدًا ، ولكن يفضل MLC.فيما يتعلق SSD ، وضعت هذه التوصيات واشتريت 2 PCI-E SSDs من 128 وكل منها مقسم إلى 16 العربات والباقي. أطلقت جزأين بسعة 16 غيغابايت في ZIL كمرآة وأطلقت الأجزاء المتبقية تحت ذاكرة التخزين المؤقت من المستوى الثاني كخط. تحت رحمة zfs أعطى 16 العربات من الأوبرا. (تبين أن فتحة واحدة على الأم التي تم شراؤها باستخدام موقع ئي باي كانت غير عاملة ؛ إذا نجحت ، فستعطي 32)zfskeeper.sh
من النص ، كنت بحاجة إلى إشعار تلقائي بالمشكلات ، ومراقبة عدد اللقطات في كلا الطرفين والتحكم في السرعة. من النصوص التي سقطت في يدي ، لم تكن هناك نصوص ترضيني. أدناه سأقدم بعض النصوص التي راجعتها قبل القيام بذلك. لتلقي الإشعارات عن طريق البريد الإلكتروني، واستبدال البيانات الخاصة بي في send_error_to_mail الخاص بك () وظيفة مع يدكمzfskeeper.sh مساعدة سوف تظهر لك أمثلة على استخدامzfskeeper.sh تحضير سوف اقول لكم إجراءات الإجراءات التحضيرية (موصى به)البنك zfskeeper.sh / مشفرة / subvol-100-قرص-0 سيأخذ 10 اللقطة الحالية ويترك آخر 10 لقطاتzfskeeper.sh bank / encrypted / subvol-100-disk-0 10 Remotehost 22 10m replicator bank / rtl / subvol-100-disk-0 20إرسال بيانات غير مشفرة إلى remotehost: 22 تحت وحدة النسخ المتماثل للمستخدم بسرعة تصل إلى 10 ميجابايت / ثانية وترك 10 صور على المصدر و 20 على المضيف البعيدzfskeeper.sh bank / encrypted / subvol-100-disk-0 10 Remotehost 22 10m replicator bank / rtl / subvol -100-disk-0 20 -w نفس الشيء ، ولكن سيتم تشفير البيانات#!/bin/bash
zpool=$1
lsnaps=$2
ip=$3
port=$4
speedl=$5
remoteuser=$6
backpool=$7
rsnaps=$8
sendargs=$9
ZFSLOGDIR=~/zfskeeplogs
if [ ! -d "$ZFSLOGDIR" ]; then
mkdir -p $ZFSLOGDIR
fi
NAMESNAP=`date "+%Y_%m_%d_%T"|sed s/:/_/g`
logfile=$ZFSLOGDIR/$NAMESNAP.log
write_to_log ()
{
echo `date +"%T"`" $1" >> $logfile
}
log_last_command ()
{
if [ $? -ne 0 ]; then
write_to_log "$1 FAILED."
if [ $2 = true ]; then
write_to_log "Script execution stops"
send_error_to_mail "$1" "$?" "$*"
exit 1
fi
else
write_to_log "$1 COMPLETED."
fi
}
send_error_to_mail ()
{
Subject=`hostname`" ZFS backup $zpool missing"
swaks --header "Subject: $Subject" --to admin@mydomain.ru --from "alertbot@mydomain.ru" -a LOGIN -au alertbot@mydomain.ru -ap ailPass --server mail.mydomain.ru -tls --body \
"$Subject
command: zfskeeper.sh $3
$1
$2" \
--attach $logfile
}
case "$#" in
1)
case "$1" in
prepare)
echo "
Sender mashine:
apt install swaks mbuffer
useradd -s /bin/bash replicator
mkdir -p /home/replicator
chown replicator:replicator /home/replicator
zfs allow -u replicator send,snapshot,destroy,mount bank/encrypted
su replicator
ssh-keygen
Receiver machine:
ln -s /usr/sbin/zfs /usr/local/bin/zfs
useradd -s /bin/bash replicator
mkdir -p /home/replicator
chown replicator:replicator /home/replicator
passwd replicator
Sender mashine:
ssh-copy-id -i .ssh/id_rsa.pub Remotehost
zfs allow -u replicator compression,create,receive,destroy,mount bank/companyname
"
;;
*)
echo "
Usage:
To show the prepare instrutions:
zfskeeper.sh prepare
localkeeping:
keep last 10 snapshots of bank/encrypted/subvol-100-disk-0
zfskeeper.sh bank/encrypted/subvol-100-disk-0 10
remotekeeping:
keep last 10 snapshots bank/encrypted/subvol-100-disk-0 and send it by ssh to Remotehost:22 bank/rtl/subvol-100-disk-0
and keep last 20 copies by replicator user and limit transferspeed 10Mb/s
zfskeeper.sh bank/encrypted/subvol-100-disk-0 10 Remotehost 22 10m replicator bank/rtl/subvol-100-disk-0 20
If you need to send encrypted data, then you need add -w to the end of the line
zfskeeper bank/encrypted/subvol-100-disk-0 10 Remotehost 22 10m replicator bank/rtl/subvol-100-disk-0 20 -w
"
;;
esac
exit 0
;;
2)
echo `date +"%T"`" Local keeping of $NAMESNAP being started" > $logfile
;;
8|9)
echo `date +"%T"`" Remote keeping of $NAMESNAP being started" > $logfile
;;
*)
echo "illegal number of parameters" >&2
exit 1
;;
esac
numsnap=`zfs list -H -o name -t snapshot -s creation|grep "${zpool}@"|wc|awk '{ print $1 }'`
let MAXSNAP=numsnap-lsnaps+1 >/dev/null
if [ $MAXSNAP -gt 0 ] ; then
for d in `zfs list -H -o name -t snapshot -s creation| grep "${zpool}@"|/usr/bin/head -n"$MAXSNAP"`; do
zfs destroy ${d}
log_last_command "Remove local snapshot $d"
done
fi
zfs snapshot $zpool@backup_$NAMESNAP
log_last_command "Create local $zpool@backup_$NAMESNAP" true
if [ -z "$backpool" ]; then
write_to_log "Local keeping is complete"
exit 0
fi
if [ -n "$ip" ]; then
if ping -c 1 $ip > null ; then
sship="ssh -c aes128-ctr -p"$port" -l"$remoteuser" "$ip
else
echo "URL $ip is not accesiible, abort"
send_error_to_mail "Try to ping remote host" "URL $ip is not accesiible, abort" "$*"
exit 1
fi
else
exit 0
fi
numsnap=`$sship zfs list -H -o name -t snapshot -s creation|grep "${backpool}@"|wc|awk '{ print $1 }'`
let MAXSNAP=numsnap-rsnaps+1 >/dev/null
if [ $MAXSNAP -gt 0 ] ; then
for d in `$sship zfs list -H -o name -t snapshot -s creation| grep "${backpool}@"|/usr/bin/head -n"$MAXSNAP"`; do
$sship zfs destroy ${d}
log_last_command "Remove local snapshot $d"
done
fi
MOST_SLAVE_SNAP_NAME=`$sship zfs list -H -o name -t snapshot -s creation|grep "$backpool@backup"|tail -n1|awk -F "@" '{print $2}'`
if [ -n "`zfs list -H -o name -t snapshot -s creation|grep -w "$zpool@$MOST_SLAVE_SNAP_NAME"`" ]; then
zfs send $sendargs -i $MOST_SLAVE_SNAP_NAME $zpool@backup_$NAMESNAP | mbuffer -q -v 0 -s 128k -m 1G | pv -L $speedl | $sship "mbuffer -q -v 0 -s 128k -m 1G | zfs receive -vF $backpool@backup_$NAMESNAP" &>> $logfile
log_last_command "Sending incremental backup to the remote machine" true
else
if [ -n "`$sship zfs list -H -o name -s creation|grep -w "$backpool"`" ]; then
$sship zfs destroy -r $backpool 2>> $logfile
log_last_command "Need to destroy remotepool for full sending $backpool" true
fi
zfs send $sendargs $zpool@backup_$NAMESNAP | mbuffer -q -v 0 -s 128k -m 1G | pv -L $speedl | $sship "mbuffer -q -v 0 -s 128k -m 1G | zfs receive -vF $backpool" &>> $logfile
log_last_command "Sending full backup to the remote machine" true
fi
write_to_log "Remote keeping is complete"
exit 0
zfskeepall.sh
من أجل الحفاظ على تناغم عدة أقسام ، تحتاج إلى برنامج نصي للتحكم. يمكن للجميع الوصول إلى مذاقهم ولونهم ، اعتمادًا على التكوين. يبدو اختباري كما يلي:#!/bin/bash
scriptpath=/home/replicator/zfskeeper.sh
$scriptpath bank/encrypted/subvol-100-disk-0 5 RemoteHost 22 30m replicator bank/rtl/subvol-100-disk-0 5 -w
الحلول الحالية
لقد وجدتها أولاً ، وعلى أساسها راجعت قابلية التشغيل الإجمالية للآلية. بفضل المؤلفين ، لكن أسلوب الكتابة متسخ إلى حد ما ، كان يجب إعادة كتابته بشكل لا لبس فيه.zfs-auto-snapshot.sh هو مجرد كتلة. هناك شيء ما يمكن استعارته ، جميل ، أنيق ، ولكنzfsbackup.sh كبير الحجم ومنخفض الوظائف - وهو أيضًا أنيق ، ولكنمنخفض الوظائف PS I بت zfs من المرة الثالثة ، في كل مرة يقضم فيها لمدة شهر تقريبًا. لم أستطع حملها على العمل بسرعة ، وفشلت على أكمل وجه. بشكل عام ، تغير الوضع بعد تثبيت أقراص SAS (على الأقل 7200 ، على الأقل NL).سلام للجميع! شكرا لقرائتك!