Об организации резервного копирования информации

Использование компьютерных систем стало непременным атрибутом ведения дел даже в небольших организациях. Отредактированные договоры, отлаженные калькуляции, наработанные в результате многомесячного труда базы данных со временем скрывают рутину монотонных операций, предоставляя возможность творческого подхода к работе. Тем труднее смириться с тем, что в один "прекрасный" момент размеренный рабочий ритм может нарушиться или даже полностью остановиться из-за отказа жесткого диска файлового сервера. Конечно, ремонт или даже замена компьютерного оборудования на сегодняшний день для организации не составляет проблемы ни в финансовом, ни в техническом плане. Но потерю данных пережить гораздо сложнее. К сожалению, многие приходят к осознанию необходимости принятия мер по резервированию информации именно после того, как на собственном горьком опыте испытают ощущение пустоты и растерянности перед черным экраном отказывающегося загружать операционную систему компьютера. На рынке имеется довольно широкий выбор программных и аппаратных средств резервного копирования информации, хранящейся на машинных носителях. Ситуации, когда на рабочих станциях и серверах малых организаций используются RAID-массивы из серийных жестких дисков, перестают быть экзотикой. Современные операционные системы предлагают встроенные решения. Так, Microsoft Windows 2000 уже позволяет программно реализовать RAID-0 и RAID-5, использовать распределенную файловую систему DFS, содержит достаточно мощные средства построения системы резервного копирования.

Для справки: RAID-массивы. Технология RAID позволяет увеличить надежность хранения или скорость доступа к данным за счет использования одновременно нескольких жестких дисков (винчестеров) специальным образом. Существует несколько вариантов организации RAID-массивов. Практический интерес представляют RAID-0, RAID-1 и RAID-5. В случае RAID-0 непрерывный блок записываемой информации разбивается на отдельные полосы, которые записываются на разные жесткие диски. Поскольку современные контроллеры позволяют выполнять обмен информацией с разными накопителями одновременно, в результате увеличивается скорость такого обмена, что и является основным достоинством подобного способа. Однако выход из строя одного из жестких дисков, составляющих RAID-массив, приведет к потере всей хранящейся на нем информации, потому что на остальных дисках останутся обрывки данных, которые сложно интерпретировать разумным образом. Такая схема получила название "чередование дисков". Если необходимо обеспечить высокую надежность хранения информации, сохранив при этом скорость доступа к ней, можно воспользоваться услугами RAID-1. В этом случае запись одной и той же информации осуществляется одновременно на несколько винчестеров. Таким образом при выходе из строя одного из жестких дисков, записанная информация сохранится на другом. Недостатком такой схемы является малая эффективность использования дискового пространства, так как емкость RAID-массива равна номинальной емкости винчестера и не увеличивается с увеличением количества жестких дисков. Этот способ хранения данных часто называют зеркальным отображением. Компромиссом между рассмотренными выше способами является организация RAID-5. В этом случае потребуется как минимум три жестких диска. Для предназначенного к записи блока данных с использованием специальных алгоритмов вычисляется контрольная сумма. При выполнении записи блок данных делится на порции, которые записываются на разные винчестеры. Кроме того, вместе с данными записывается и контрольная сумма. При выходе из строя одного из накопителей существует возможность полного восстановления информации по сохранившимся данным и контрольным суммам. Такой способ называют "чередованием дисков с контролем четности". RAID-массивы могут быть реализованы как программно, средствами операционной системы, так и аппаратно. В первом случае производительность системы будет невысокой из- за необходимости участия центрального процессора в обработке операций чтения-записи информации. До недавнего времени реализация аппаратного RAID- массива выполнялась с использованием SCSI-дисков и специальных контроллеров, что сказывалось на стоимости системы. К счастью, большинство современных материнских плат содержат интегрированный контроллер, который позволяет построить аппаратный RAID-массив на базе серийных SATA- винчестеров. Необходимо также понимать, что даже зеркалирование информации по способу RAID-1 не гарантирует ее сохранности в случае некоторых повреждений системы, например, при выходе из строя блока питания с подачей высокого напряжения в цепи питания устройств.

Однако многие из предлагаемых готовых решений являются избыточными, требуют от организации больших затрат на структуризацию компьютерной системы, а от системного администратора — довольно высокой квалификации. Практика показывает, что в большинстве случае достаточно регулярно выполнять копирование определенных файлов и каталогов с основного сервера на другой компьютер, подключенный к локальной сети. В этой статье будет рассказано о способе организации резервного копирования важной с точки зрения пользователя информации в сети, состоящей из серверов и рабочих станций под управлением операционных систем семейства Microsoft Windows с применением свободно распространяемого программного обеспечения и сценариев на командном языке BAT-файлов.

Уточним постановку задачи. Предположим, что в организации используется файловый сервер SERVER_1, на котором находится каталог D:\DOCUMENT с файлами в формате Microsoft Office и каталог D:\BUHGALTER с файлами базы данных системы бухгалтерского учета. Необходимо разработать систему резервного копирования файлов, хранящихся в этих каталогах, на резервный сервер SERVER_2. Предполагается, что на серверах (в роли которых могут выступать и обычные рядовые рабочие станции, на которые возложены соответствующие функции) используется одна из 32-разрядных операционных систем семейства Microsoft Windows. Приступим к решению задачи с разработки плана резервного копирования. Вообще говоря, существует несколько возможных схем. Но, поскольку емкость современных серийных винчестеров как правило является избыточной для типичных офисных применений, а файлы документов Microsoft Office и большинства систем управления базами данных прекрасно упаковываются архиваторами, мы остановимся на самом простом способе полного резервирования.

Для справки: Схемы резервного копирования. Существует несколько проверенных способов выполнения резервного копирования и восстановления информации из архивов.
Полная архивация — в архив помещаются все файлы из каталогов, назначенных к архивированию, независимо от времени их модификации.
Разностная архивация — архивируются только те файлы, которые претерпели изменения после того, как была выполнена полная архивация.
Добавочная архивация — архивируются файлы, которые были изменены после выполнения полной или добавочной архивации.
Ежедневная архивация — в архив помещаются файлы, в которые были внесены изменения за последние сутки.
Комбинирование различных способов создания резервных копий позволяет сократить время архивирования и уменьшить требования к информационной емкости накопителей для хранения архивов.

В качестве рабочего инструмента для архивирования воспользуемся программой Игоря Павлова — архиватором 7-Zip ( сайт ). Отметим основные достоинства этого продукта в контексте разрабатываемой системы резервного копирования: способность работать в режиме командной строки и возможность создания наряду с архивами собственного формата, обеспечивающими максимальную степень сжатия, ZIP-архивов. ZIP-формат стал стандартом де-факто хранения информации в сжатом виде. Для восстановления данных из ZIP-архива можно воспользоваться массой программных средств — от традиционного WinZip до файлового менеджера Total Commander. К тому же, и скорость упаковки в ZIP-формат намного выше, чем в альтернативный. Таким образом, при резервном копировании именно на нем и остановим свой выбор. Обратившись к сопроводительной документации архиватора, быстро обнаруживаем, что команда упаковки каталога D:\DOCUMENT в архив \\SERVER_2\F\document.zip должна выглядеть следующим образом:

7zip.exe a -tzip \\SERVER_2\F\document.zip D:\DOCUMENT\*.*

где ключ -tzip указывает на необходимость использования алгоритма ZIP. Предполагается, что команда будет выполняться на основном сервере. В принципе, создав командный файл arh.bat и записав в него две команды, аналогичные только что рассмотренной, можно получить программу для резервного копирования. Однако у нее будут серьезные недостатки. Предположим, что винчестер основного сервера вышел из строя как раз в момент архивирования (такую ситуацию нельзя исключать, так как при архивировании происходит интенсивное обращение к жесткому диску). В этом случае архивный файл на резервном сервере будет поврежден, что может привести к частичной или полной потере хранящихся в нем данных. Рассмотрим еще одну ситуацию. Предположим, что в течение дня выполнялась активная работа с базой данных бухгалтерского учета. В результате выполненных несогласованных действий информация в базе данных пришла в хаотичное состояние. На следующий день экономисты пришли к выводу о том, что целесообразнее вернуться к исходному варианту и повторно разнести данные, нежели распутывать получившийся клубок ошибок. Однако выполнить откат не получится, поскольку последнее резервное копирование оставило только самый последний (но не самый лучший) вариант. Проблема в рассмотренных гипотетических ситуациях возникает из-за того, что реализованная схема резервного копирования не обеспечивает глубины резервирования, хранения истории изменения архивируемой информации. Чтобы усовершенствовать процесс резервного копирования, достаточно перед созданием нового архива переименовывать существующий архивный файл и, таким образом, обеспечить хранение нескольких копий. К сожалению, каждая дополнительная операция усложняет процесс архивирования. Поэтому без элементов автоматизации тут не обойтись.

Чтобы не изобретать велосипед всякий раз, когда понадобится выполнять архивирование новых каталогов (например, если вдруг на сервере будет установлена система "Клиент-Банк" в каталоге D:\CLIENT-BANK), сформулируем подзадачу. Пусть необходимо регулярно архивировать содержимое некоторого каталога SOURCE в некоторый файл arhive.zip в другой (возможно, на сетевом ресурсе) каталог TARGET. Предположим также, что достаточно обеспечить хранение пяти последних копий архивируемых данных (за последние пять рабочих дней организации). Напишем для решения подзадачи командный файл arhive.bat (листинг 1), которому в качестве первого параметра будет передаваться SOURCE, в качестве второго — TARGET, а в качестве третьего — arhive.

Листинг 1 (arhive.bat)
1. @echo off
2. rem ===========================================================
3. rem Многоуровневое архивирование.
4. rem
5. rem В выходном каталоге сохраняется 5 последних архивных копий
6. rem входного каталога с именами:
7. rem
8. rem имя_архива_1
9. rem имя_архива_2
10. rem . . .
11. rem имя_архива_5
12. rem
13. rem Использование:
14. rem
15. rem arhive.bat входной_каталог выходной_каталог имя_архива
16. rem -----------------------------------------------------------

17. path %PATH%;C:\Program Files\7-ZIP

18. rem ---------------------------------------------------------
19. rem Проверка наличия необходимых параметров командной строки.
20. rem ---------------------------------------------------------
21. if "%3"=="" goto BAD_PARAM

22. rem -------------------------------------
23. rem Сдвиг архивов предыдущего уровня и
24. rem освобождение уровня для нового архива
25. rem -------------------------------------

26. if exist %2\%3_5.zip del %2\%3_5.zip
27. if exist %2\%3_4.zip ren %2\%3_4.zip %3_5.zip
28. if exist %2\%3_3.zip ren %2\%3_3.zip %3_4.zip
29. if exist %2\%3_2.zip ren %2\%3_2.zip %3_3.zip
30. if exist %2\%3_1.zip ren %2\%3_1.zip %3_2.zip

31. rem ----------------------------------------------
32. rem Выполнение архивирования на свободный уровень.
33. rem ----------------------------------------------

34. 7z.exe a -tzip -r %2\%3_1.zip %1\*.*

35. goto EXIT
36. :BAD_PARAM
37. echo ***
38. echo Ошибка в параметрах командной строки
39. echo Использование:
40. echo arhive.bat входной_каталог выходной_каталог имя_архива
41. echo ***
42. :EXIT

Дадим несколько пояснений к приведенному листингу. На место литералов %1, %2, %3 при выполнении сценария будут подставлены параметры командной строки с соответствующими номерами. В строке 17 к переменной PATH среды окружения добавляется путь к каталогу с программой-архиватором 7-Zip. Это позволяет в дальнейшем выполнять запуск архиватора без указания полного пути. В строке 21 проверяется наличие в командной строке трех параметров, о которых было сказано выше. Строки 26-30 обеспечивают ротацию архивных файлов по принципу очереди: самый старший архивный файл удаляется, а остальные перенумеровываются с тем, чтобы освободить место для нового архива. Создание резервной копии осуществляется в строке 34. Теперь для выполнения архивирования каталогов, о которых шла речь в постановке задачи, можно сформировать командный файл backup.bat (листинг 2):

Листинг 2 (backup.bat)
@echo off
call arhive.bat D:\DOCUMENT \\SERVER_2\F\ARH_DOCUMENT document
call arhive.bat D:\BUHGALTER \\SERVER_2\F\ARH_BUHGALTER buhgalter

Комментарии тут излишни. Сценарий должен запускаться на основном сервере SERVER_1. Каждая строка выполняет резервирование одного каталога. Если возникнет необходимость архивировать дополнительную информацию, нужно просто добавить в сценарий строку, аналогичную имеющимся. Перед первым выполнением сценария на резервном сервере необходимо создать каталоги F:\ARH_DOCUMENT и F:\ARH_BUHGALTER для хранения архивов. После пятикратного выполнения backup.bat в каждом из этих каталогов будут созданы пять zip-файлов, пронумерованные от 1 до 5. В дальнейшем при каждом запуске сценария файл с номером 5 будет удаляться, оставшиеся — перенумеровываться, а свежий архив будет всегда сохраняться в файле с номером 1. Если запускать сценарий один раз в сутки, то в случае необходимости можно будет восстановить информацию по состоянию на любой из последних пяти дней. Реализованная схема проста и надежна в работе. Однако запускать сценарий вручную непрактично. Во-первых, необходимо дождаться завершения работы всех пользователей, которые обращаются к файлам на сервере. Во-вторых, можно просто забыть выполнить архивирование из-за возникших неотложных дел. Представляется разумным переложить регулярно повторяющуюся процедуру архивирования на плечи самого компьютера. Некоторые версии Microsoft Windows имеют штатные средства для выполнения программ по расписанию (планировщик заданий и команда AT). Однако их использование в разных версиях отличается, могут возникнуть проблемы при переносе расписания на другой компьютер или восстановлении его после переустановки операционной системы. Избежать этих трудностей можно, если воспользоваться бесплатной программой-планировщиком nnCron LITE, которую разработал Николай Немцов ( сайт Особенно приятно использовать эту программу будет тем администраторам, которые знакомы с операционной системой UNIX, потому что nnCron LITE конфигурируется посредством файла, формат которого совместим с "crontab"-файлами UNIX-систем. Программа nnCron LITE работает под управлением всех 32-битных операционных систем Microsoft Windows, что позволяет без проблем использовать ее на различных платформах, а также обновлять операционные системы без потери настроек. После установки программы в конфигурационном файле Program Files\cron\cron.tab нужно прописать параметры, указывающие, когда и какую команду выполнять. В сопроводительной документации на русском языке имеется подробное описание формата этого файла, здесь же приведем только пример, позволяющий решить поставленную в начале статьи задачу. Для выполнения регулярного резервного копирования путем вызова файла сценария D:\backup.bat ежедневно в 1 час 30 минут утра со вторника по субботу cron.tab должен иметь следующий вид (листинг 3):

Листинг 3 (cron.tab)
#CRONTAB FILE
# Classic crontab format:
# Minutes Hours Days Months WeekDays Command

30 1 * * 2-6 D:\backup.bat

И последнее замечание. По умолчанию в NT-системах программа nnCron LITE выполняется в виде службы, запущенной от имени системной учетной записи. Это может стать причиной отказа сценарию backup.bat в доступе к резервному серверу SERVER_2. Чтобы решить эту проблему, нужно воспользоваться оснасткой управления службами и для службы cron указать в настройках учетную запись, имеющую необходимые права сетевого доступа.

Вот и все, о чем хотелось рассказать. В статье описан поэтапный процесс развертывания и настройки системы резервного копирования, отличительной чертой которой является использование бесплатного ПО и простейших средств автоматизации. В результате выполнения описанных в статье шагов получается простая и надежная лицензионно чистая схема, воплощение которой позволяет рассчитывать на сохранность важной информации в случае поломок оборудования, вирусной активности и других непредвиденных обстоятельств. Достоинством предлагаемой схемы является ее открытость и возможность адаптации к условиям конкретной информационной компьютерной системы.

Игорь Орещенков, 2007


Компьютерная газета. Статья была опубликована в номере 29 за 2007 год в рубрике программирование

©1997-2024 Компьютерная газета