Решение для резервного копирования для резервного копирования терабайт и большого количества статических файлов на сервере Linux?

Какой инструмент или решение для резервного копирования вы бы использовали для резервного копирования терабайт и большого количества файлов на рабочем сервере Linux?
Обратите внимание, что все файлы различны и почти никогда не изменяются, а использование в основном добавляет файлы, поэтому объем данных сегодня составляет 3 ТБ, постоянно увеличиваясь примерно до +15 ГБ / день.

Пожалуйста, не отвечайте rsync. Базовых инструментов Unix недостаточно, rsync не хранит историю, rdiff-backup время от времени терпит неудачу и порочит историю. Более того, все это резервное копирование на основе файлов, которое требует много IOwait только для просмотра каталогов и запроса stat(). Но я полагаю, что кроме R1Soft CDP, этого нет.

Мы попытались выполнить резервное копирование R1Soft CDP, которое является резервным копированием на уровне блоков, и оно оказалось хорошим и эффективным для всех наших других серверов, но систематически дает сбой на сервере с 3 терабайтами и миллиардами файлов. Уже более 2 месяцев инженеры R1Soft и datacenter играют в горячую игру с мячом... и до сих пор нет никакой резервной копии, кроме обычного rsync

Мы никогда не пробовали большие коммерческие решения, за исключением R1Soft CDP, поскольку он был предоставлен в качестве дополнительной услуги хостингом на наших серверах.

7 ответов

Решение

Я думаю, что единственным решением для вас является резервное копирование на уровне блоков
Вы можете писать сценарии, которые используют снимки LVM (или даже более низкие уровни dm-снимки) и переносить их на сервер хранения

Вы также можете взглянуть на проект Zumastor и его утилиту ddsnap.

PS. Серверы Solaris/FreeBSD имеют ZFS, которая может автоматизировать этот процесс с помощью добавочных снимков + отправка / получение ZFS

Я перепробовал множество решений для резервного копирования, начал с rsync и rdiff-backup. Также чистые скрипты tar и bash. Но бачула побеждает их всех. Это основано на модульной конструкции, у меня есть около 8 ПК в сети резервного копирования и растет.

Кому я рекомендовал bacula, они были более чем счастливы, наконец, в своем доме.

Вы не говорите, что хотите поддержать; лента или диск? Если предположить первое, то я одобряю рекомендации для bacula. Я использую его на нескольких разных сайтах, на одном из которых он управляет 60-слотовым роботом LTO2 с двумя накопителями, с общим объемом хранения около 50 ТБ на ленте, распределенным по 120 лентам, и одним крупнейшим сервером, имеющим около 4 ТБ диска, Bacula очень, очень хороша, когда она правильно настроена.

Резервное копирование дисков я не могу комментировать с пользой, так как я сам твердо записан на магнитофон. Поскольку вы специально упоминаете хранение истории, я надеюсь, что вы были открыты для резервного копирования на съемные носители (например, на ленту).

Попробуйте BackupPC. Для меня это очень хорошо работает с парой терабайт данных и десятками миллионов файлов (около 100 000 - 500 000 из них меняются ежедневно). ОК, BackupPC использует rsync и основан на файлах, так что это может быть для вас показом.

Bacula - еще один популярный, и у него наверняка самый крутой лозунг из всех. И даже не использует rsync!:-)

В EMC Networker есть опция SnapImage, которая должна увеличить скорость резервного копирования для ваших данных.

Я только слышал об этом, но я никогда не пытался, извините...

rsnapshot

или, если вы хотите больше контроля; просто взломайте короткий bash-скрипт, чтобы сделать то же самое: один cp -al, немного mv а также rsync,

Я использую его на очень занятом сервере 30 ТБ с около 5 миллионов файлов, и работает прекрасно.

Попробуйте использовать миррордир. С соответствующим сценарием, кажется, идеальное решение для вас. Он только обновляет файлы, которые были изменены (модифицированы, созданы или удалены), но также имеет возможность сохранять старые файлы. Я не уверен, как эта функция работает, но это не должно быть сложно. Вот сценарий, который я использую: (Отредактировано для ясности. Надеюсь, у меня не было проблем с правками)

#! /bin/bash

logfile="/home/share/Backup-log.txt"

echo "" | unix2dos >> $logfile
echo `date`"   /bin/mirror_backup started" | unix2dos >> $logfile

echo ""
echo ""
echo "mirror_backup   Automatically archive a list of"
echo "                directories to a storage location"

# Mount mirror drive
mount -o remount,rw /mirror
xstatus=$?
if [ $xstatus -ne 0 ]
then
        mount -o remount,rw /mirror 2>&1 | unix2dos >> $logfile
        echo `date`"   Mount failed, aborting /bin/mirror_backup..." 1>&2
        echo `date`"   Mount failed, aborting /bin/mirror_backup..." | unix2dos >> $logfile
        mount -o remount,ro /mirror 2>> /dev/null
        exit $xstatus
fi

# Define Source Directories
sourcelist="/home /etc /root"
dest="/mirror"

for dir in $sourcelist
do
        if [ ! -d ${dest}${dir} ]
        then
                mkdir -p ${dest}${dir} 2>&1 | unix2dos >> $logfile
#               chown mirror:mirror ${dest}${dir}
        fi
done


# Mirror directories

for dir in $sourcelist
do
        # Delete old files
        echo ""
        echo "Deleting old files in "${dest}${dir}
        mirrordir --nice 0  --exclude-from /root/exclude-list --only-delete ${dir} ${dest}${dir} 2>> /dev/null

        # Run full mirror
        echo "Mirroring "${dir}" to "${dest}${dir}
        mirrordir --nice 0 --restore-access --access-times --exclude-from /root/exclude-list ${dir} ${dest}${dir} 2>&1 | unix2dos >> $logfile

done

# Perform miscellaneous tasks

report="/home/share/disk-report.txt"
echo "Report generated on "`date` | unix2dos > $report
echo "" | unix2dos >> $report
echo "RAID drive status:" | unix2dos >> $report
cat /proc/mdstat | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Disk usage per slice:" | unix2dos >> $report
df -h | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Disk Usage per User:" | unix2dos >> $report
du -h --max-depth 1 /home | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Disk Usage on Share drive:" | unix2dos >> $report
du -h --max-depth 1 /home/share | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Filesystem Usage Overview:" | unix2dos >> $report
du -h --max-depth 1 / | unix2dos >> $report
echo "" | unix2dos >> $report
echo "Report Complete" | unix2dos >> $report

echo ""
echo "mirror_backup complete."

# Unmount Mirror Drive
mount -o remount,ro /mirror 2>&1 | unix2dos 2>> $logfile
echo `date`"   /bin/mirror_backup completed successfully" | unix2dos >> $logfile

exit 0

Без изменений для фиксации (например, второй прогон) требуется около 5-7 минут для сканирования 1,5 ТБ файлов. Конечно, это намного медленнее при первом прогоне.

Кстати, этот сценарий был написан мной для домашнего использования на моем личном сервере. Хотя кто-то может свободно использовать или модифицировать его для себя, я не даю абсолютно никаких гарантий или гарантий. Это бесплатно, поэтому вы получаете то, за что платите. Надеюсь, это поможет, хотя!

Другие вопросы по тегам