Linux: Полное руководство — страница 38 из 98

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

Вам нужно хорошо продумать следующие пункты:

1. Какая информация будет резервироваться (архивироваться)?

В первую очередь вам нужно архивировать данные пользователей, то есть каталог

/home
. Эти данные относятся к наиболее критичной категории данных. Восстановить систему вы сможете в течение не более чем двух-трех часов, а вот данные пользователей уже не восстановишь… На втором месте — файлы настройки системы, находящиеся в каталоге
/etc
. Архивирование этих данных позволит существенно сэкономить время, которое вам потребуется на восстановление системы после сбоя.

И, наконец, на третьем месте — дистрибутивы программ, не входящих в состав дистрибутива Linux. Эти данные, как правило, не нуждаются в частом обновлении.

2. Когда будет происходить создание резервных копий?

Самое удачное время для этого мероприятия — ночь. Во-первых, архивирование обычно не требует вмешательства оператора и поэтому его можно выполнять автоматически (п.9.4.2). Во-вторых, оно создает дополнительную нагрузку на систему, чему не обрадуются пользователи. В-третьих, открытые этими пользователями файлы создадут при копировании массу проблем.

3. Кто этим будет заниматься?

Если речь идет о вашем домашнем компьютере, то этой ответственной задачей будете заниматься вы сами. На предприятии (особенно большом) необходимо определить, кто будет архивировать данные с каждого сервера сети: не будете же вы бегать по зданию со стримером, контролируя процесс создания резервных копий? В идеале, за каждым сервером должен быть закреплен человек, ответственный за процесс создания архива и поддержания его в должном состоянии.

4. Как часто будет производиться архивирование?

Дома можно архивировать диск еженедельно и после обширных изменений. На предприятии зарекомендовала себя шестидневная схема. Вам понадобится шесть сменных носителей (кассет для стримера или магнитооптических дисков). В пятницу, после конца рабочей недели, создается резервная копия всего диска на первой ленте. С понедельника по четверг архивируются только новые и обновленные данные (каждый день — на свою ленту), и в следующую пятницу создается новая копия всего диска на шестую ленту. Таким образом, всегда можно восстановить данные на любой день последней недели.

Архивирование только новых данных обычно называется инкрементным. Отбирать файлы, дата последнего изменения которых свежее заданной, умеет архиватор tar (см. man-страницу).

10.3. Оборудование для резервного копирования

При выборе стратегии резервного копирования решающим фактором может оказаться соотношение размера диска и емкости имеющихся у вас внешних носителей. Привычные диски CD-RW вмещают всего 640 Мбайт, поэтому резервирование сколько-нибудь значительного объема данных нельзя организовать автоматически: кто-то должен менять диски вручную. Вот почему стоит обратить внимание на стримеры, позволяющие сохранять от 10 до 100 Гбайт сжатой информации на одном картридже. К тому же UNIX-программы резервного копирования создавались в те времена, когда ленточные накопители были единственным типом внешнего хранилища, и идеально приспособлены к работе с ними.

10.3.1. Стример

Linux, как и любая UNIX-система, обладает богатыми возможностями по созданию и сопровождению резервных копий с помощью стримеров. Стример — это потоковый накопитель на магнитной ленте. Стримеры работают в безостановочном режиме, обеспечивают запись и считывание данных с ленты сплошным потоком.

Существует два типа стримеров: стримеры, использующие интерфейс SCSI, и стримеры, использующие интерфейс FDC. Первые из них довольно дороги, что объясняется дороговизной самого контроллера SCSI. Хотя в последнее время наблюдается снижение цен на контроллеры и устройства SCSI. Эти стримеры подключаются к шине SCSI.

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

Основным преимуществом стримеров является их низкая стоимость, но у них есть ряд недостатков:

♦ с ними не так удобно работать, как с жестким или магнитооптическим диском;

♦ скорость передачи данных низка (хотя к дорогим стримерам с интерфейсом SCSI это не относится).

Подключение стримера с интерфейсом SCSI

ОС Linux поддерживает все возможные стримеры с интерфейсом SCSI. Это объясняется интеллектуальностью контроллера SCSI. Вы также можете использовать интерфейс LUN (Logical Unit Number), который является расширением интерфейса SCSI, для подключения стримера с автоматической заменой ленты.

Для подключения стримера вам потребуется перекомпилировать ядро системы (глава 20), включив опцию SCSI Tape Support. Также вам нужно установить тип контроллера SCSI в подразделе SCSI Low-Level drivers. Возможно, нужно будет включить режим Probe all LUNs on each device. После перезагрузки в вашей системе появится устройство

/dev/st0
.

Подключение стримера с интерфейсом FDC

В зависимости от типа вашего стримера вам нужно включить опцию QIC-02 tape support или Ftape (QIC-80/Trawan) support. О том, какую из этих опций нужно использовать, вы можете прочитать в документации, поставляемой со стримером. Эти опции находятся в разделе Character devices. После перезагрузки должно появиться устройство

/dev/nrtf0
.

10.3.2. Магнитооптический диск

Я решил написать этот параграф в силу большой распространенности магнитооптических дисков. Первые магнитооптические диски подключались к контроллеру SCSI, что не способствовало их широкому распространению из-за довольно высокой стоимости. После выпуска первых устройств с интерфейсом IDE цены на магнитооптические устройства значительно снизились.

Подключение магнитооптического привода подобно подключению жесткого диска. При этом следует помнить простое правило: не нужно подключать к одной шине магнитооптический привод и жесткий диск. Логика проста: магнитооптические диски обладают довольно низкой производительностью по сравнению с жестким диском, и использование двух этих устройств на одной шине снизит общую производительность дисковой подсистемы.

После подключения не забудьте выполнить процедуру AUTODETECT для данного устройства. ОС Linux определит магнитооптический привод как обыкновенный жесткий диск с интерфейсом IDE. Если вы поспешили я, запустив Windows, чтобы полюбоваться повой буквой в списке доступных дисков, отформатировали ваш магнитооптический диск, то, скорее всего, в Linux он будет работать некорректно. Для обеспечения нормальной работы магнитооптического привода в Linux запустите fdisk для Linux и удалите все разделы, которые создала Windows. Затем создайте один первичный раздел и командой t измените его тип на FAT32.

Хочу отметить, что FAT32 может работать довольно медленно, но позволит сэкономить около 80 Мб дискового пространства при использовании магнитооптического диска размером 640 Мб.

10.4. Программное обеспечение для резервного копирования

10.4.1. Простое резервное копирование по сети

Простейший способ сохранить каталог со своими данными — это перекинуть его по сети на другой компьютер. Утилита scp (Secure Copy) позволяет копировать каталоги в защищенном зашифрованном виде не только в пределах локальной сети, но и по Интернету. Например, вы можете скопировать свои данные с рабочей машины на домашнюю (чаще наоборот, потому что компьютер назначения должен быть, разумеется, включен и подключен к сети).

Утилита scp служит клиентом демона sshd (п.11.3.2), который должен быть запущен на компьютере назначения. Она устанавливается из того же пакета OpenSSH.

Чтобы скопировать каталог

/home/den/mywork
с узла saraksh в свой домашний каталог на узле dhsilabs, введите следующую команду:

[den@saraksh~]$ scp -r mywork dhsilabs:/home/den

Ключ -r указывает, что нужно рекурсивно копировать подкаталоги. Вместо имени узла dhsilabs можно (или нужно, если это имя неизвестно в службе DNS) использовать IP-адрес.

Если защищенность ваших данных в процессе передачи для вас не так важна, как способность инструмента отличать «свежие» файлы и копировать только их, пользуйтесь утилитой rsync. Она должна быть установлена на обоих компьютерах — локальном и удаленном. Чтобы скопировать с узла dhsilabs только те файлы каталога

mywork
, которые были обновлены с момента последнего запуска rsync, за вычетом подкаталога
backup
, введите команду:

[den@saraksh~]$ rsync -az --exclude=backup \

dhsilabs:/home/den/mywork /home/den

Ключ -z сжимает передаваемые данные. Утилита rsync не шифрует данных, но предоставляет возможность подключить для шифрования оболочку ssh.

10.4.2. Управление стримером

Управление стримером выполняет программа mt. Она входит в состав пакета

mt-st
, который обычно входит в состав дистрибутива (в дистрибутивах, основанных на Red Hat, он присутствует). Программа mt использует устройство
/dev/nftape
, которое является символической ссылкой на
/dev/nrft0
. Если вы используете стример с интерфейсом SCSI, вам нужно сделать его ссылкой на
/dev/st0
.

После подключения стримера необходимо подготовить ленту к работе. Вся подготовка состоит из перетяжки ленты и ее форматирования. При перетяжке с поверхности пленки снимаются статические заряды. Перетяжку можно выполнить командой:

$ mt-st -f /dev/nftape retension

А вот форматирование вам придется выполнять с помощью программы для DOS, которая поставляется со стримером. Можно, конечно, использовать и другие программы. Стабильно работают Conner Backup Basics, Norton Backup, а также QICstream. По завершении этого процесса требуется инициализировать ленту:

$ mt-st -f /dev/nftape erase

Вот теперь можно приступать к архивации данных. Например, если вы хотите записать на ленту содержимое своего домашнего каталога, вы можете использовать следующую команду:

$ tar cfz /dev/nftape /home/den

Здесь я использовал команду tar, которая изначально предназначалась для работы с лентой (это видно из ее названия — Таре Archive). Ключ z указывает программе tar на необходимость сжать данные. Для записи без сжатия достаточно ключей cf. Для восстановления архива с ленты вы можете использовать команду

$ tar xfz /dev/nftape

Если вы не сжимали данные, то разархивируйте их с ключами xf.

Проверить целостность архива на ленте можно с помощью команды

$ tar df /dev/nftape

Чтобы разместить на одной ленте два или более архивов tar, вам понадобятся средства позиционирования головки и перемотки ленты. Это делается при помощи программы mt. Например, перемотать ленту на две отметки начала файла в формате tar вперед можно таким образом:

$ mt -f /dev/nftape fsf 2

Для перемотки назад вместо операции fsf нужно использовать операцию bsf. Список операций команды mt вы можете найти на man-странице, а в таблице 10.1 приведены чаще всего употребляемые.


Операции программы mt Таблица 10.1

ОперацияНазначение
eodПеремогать ленту к концу записанных данных. Применяется для дозаписи файлов на ленту
eofЗаписать метку конца файла в текущую позицию
eraseСтереть ленту
rewindПеремотать ленту к началу
retensionНесколько раз промотать ленту, чтобы снять статические заряды
offline ejectПеремотать ленту к началу и извлечь из накопителя
fsf <число>Перемотать ленту на <число> файлов вперед
bsf <число>Перемотать ленту на <число> файлов назад
asf <номер>Перемотать ленту к началу файла с указанным номерам

10.4.3. Команды dump и restore

Пара утилит — dump и restore — это самое распространенное средство резервирования и восстановления данных в UNIX-системах. Они обслуживают файловую систему ext2 (ext3), то есть для архивирования ваших Windows-разделов их использовать не удастся. Эти утилиты входят в состав пакета dump, который в дистрибутивах Red Hat устанавливается по умолчанию; если в вашем дистрибутиве этого пакета нет, то скачайте его с

http://dump.sourceforge.net
.

Программа dump позволяет организовать инкрементное резервирование, сжимать полученный архив и разбивать его на тома, когда его размер превышает емкость внешнего носителя. Формат вызова:

dump [-уровень] [ключи] список_файлов

Номер уровня — это средство, при помощи которого программа dump выполняет инкрементное архивирование. Исторически использовались номера от 0 до 9, Linux-версия программы понимает любое целое число. Уровень 0 соответствует полному копированию всей файловой системы. Уровень N архивирует только те файлы, которые изменились с момента создания последнего архива уровня ниже N. Уровень архива и время его создания отмечаются в файле

/etc/dumpdates
, если команда
dump
запущена с ключом -u.

В качестве списка файлов можно указывать не только файлы и каталоги на смонтированных файловых системах, но и файл устройства, на котором находится файловая система, в данный момент размонтированная. Единственное ограничение — такую файловую систему можно архивировать только полностью (уровень 0).

Полный список ключей команды dump вы найдете на ее man-странице. Вот наиболее важные из них:

-f <файлы> — список имен файлов, разделенный запятыми. Тома многотомного архива выводятся в указанные файлы в порядке их перечисления. Это могут быть файлы на диске, файлы устройств, стандартный вывод (символ «-»);

-y — после успешного архивирования отметить дату и уровень в файле

/etc/dumpdates
;

-x[уровень_сжатия] — сжимать выводимый архив средствами библиотеки zlib. Значение уровня сжатия по умолчанию равно 2; другой уровень нужно указывать без пробела.

Программа restore восстанавливает отдельные файлы и файловые системы. архивированные программой dump. Формат команды:

restore [режим] [ключи]

Важнейших режимов два:

-i — интерактивное восстановление отдельных файлов и каталогов. Подкоманды этого режима (список которых можно получить по подкоманде help) позволяют перемещаться по архиву, оглавление которого прочитано с ленты, как по обычному дереву каталогов, и выбирать файлы для восстановления. Выбранный файл добавляется в список восстановления подкомандой add. Список восстановления извлекается с ленты подкомандой extract.

-r — полное восстановление файловой системы. Пострадавшую файловую систему нужно сначала отформатировать командой mkfs (п.2.3), смонтировать и переместиться в ее корневой каталог. Потом восстановить с ленты архив уровня 0, а потом — все инкрементные архивы в порядке возрастания номера уровня.

10.4.4. Архиватор cpio

GNU-версия этого классического архиватора (Copy In/Out), используемая в Linux, поддерживает архивы как в собственном формате, так и в формате tar. Программа cpio может работать в одном из трех режимов в зависимости от первого ключа:

cpio -о [ключи] < список_файлов > архив
: режим copy-out, копирование файлов в архив. Список файлов, по одному в строке, подается на стандартный ввод программы; в архив перенаправляется поток стандартного вывода. В качестве архива можно указывать файл на диске, файл устройства магнитной ленты или канал: например, можно пропустить вывод через какую-нибудь программу сжатия. Список файлов можно подготовить вручную, а можно использовать поток вывода другой программы, например,
ls -1
(с ключом «дефис-единица», выводящим файлы по одному в строке) или find.

cpio -i [ключи] [шаблоны] < архив
: режим copy-in, извлечение файлов из архива или вывод содержания архива. Архив читается из стандартного потока ввода. Извлечению подлежат только те файлы, имена которых удовлетворяют одному из шаблонов, перечисленных через пробел; если шаблоны не указаны, то извлекаются все файлы. Внимание: символы подстановки не совпадают с теми, которые использует оболочка. Символу «.» удовлетворяет любая подстрока в начале образца, а символу «/» в имени файла — любой набор символов.

cpio -р [ключи] каталог_назначения < список_файлов
: режим copy-pass, копирование дерева каталогов.

О ключах команды cpio можно узнать из ее man-страницы. Приведу несколько примеров ее использования.

Архивирование в формате tar под именем

archive.tar
файлов, имена которых вы вводите в командной строке:

$ cpio -о -H tar -O archive.tar

/opt/ctrl/ctrl.с

/opt/ctrl/ctrl.h

/opt/ctrl/ctrl.html

^D

$

Архивный файл будет создан с сохранением структуры каталогов. Чтобы убедиться в этом, запустите файловый менеджер mc и просмотрите содержимое архива

archive.tar
.

Архивирование текущего каталога с использованием перенаправления вывода команды ls:

$ ls -1 | cpio -о -H tar -О current_dir.tar

Извлечение файлов из архива:

$ cpio -i < current_dir.tar

В режиме copy-in ключ формата «

-H tar
» указывать необязательно, потому что программа cpio автоматически определяет формат входного архива.

Просмотр содержимого архива на магнитной ленте:

$ cpio -i -t < /dev/nftape

10.4.5. Программа AMANDA

Этот параграф я помещаю здесь, так сказать, «на вырост». Администратору домашней сети он вряд ли пригодится.

Программа AMANDA (The Advanced Maryland Automatic Network Disk Archiver) — это система резервного копирования, которая позволяет администратору локальной сети установить один главный бэкап-сервер для резервного копирования множества узлов локальной сети. При этом вам не придется подходить к каждому компьютеру, чтобы сделать резервную копию. AMANDA использует стандартные программы dump и tar, поэтому вы можете выполнить резервное копирование большинства UNIX-станций. Последние версии программы позволяют выполнять резервное копирование рабочих станций MS Win9x/NT, но для этого нужно установить пакет SAMBA.

Скачать программу вы можете с сайта разработчика

www.amanda.org
. Вам потребуются 3 пакета: amanda, amanda-client, amanda-server. Первый пакет устанавливается как на сервере, так и на клиенте; второй пакет — только на клиенте, а третий — только на сервере.

Я рекомендую загрузить самую последнюю версию. Как правило, самые новые версии распространяются не в виде RPM-пакета, а в виде так называемого тарболла — файла с расширением tar.gz. Распаковав архивы, выполните команду:

$ ./configure --with-config=network --with-user=amanda --with-group=operator

Опции with-user и with-group указывать обязательно. Желательно перед выполнением данной команды создать пользователя amanda и поместить его в группу

operator
. Название нашей конфигурации — network. Так же будет называться каталог с резервными копиями.

Если вы планируете делать резервное копирование с Windows-машины, нужно добавить опцию

--with-smbclient=/path/to/smbclient
.

Обратите внимание на то, что:

♦ На клиенте сначала нужно установить пакет amanda, затем — amanda-client. На сервере вместо пакета amanda-client нужно установить пакет amanda-server.

♦ Пользователя amanda нужно добавить на всех машинах сети, с которых предполагается архивирование данных.

После успешного завершения программы

configure
введите команды
make
и
make install
.

Основными конфигурационными файлами AMAND'ы служат

/etc/amanda/amanda.conf
и
/etc/amanda/disklist
. В этих файлах находится информация о стримере, о разделах, которые вы хотите резервировать, а также другая важная для AMAND'ы информация. Пока воспользуемся файлами по умолчанию. Откройте их и измените только специфические для вашей сети параметры.

В файле

disklist
нужно прописать имена узлов сети, которые вы хотите архивировать. При этом лучше прописывать IP-адреса, поскольку некоторые версии AMAND'ы иногда не могут преобразовать имя узла в IP-адрес (почему — сам не знаю, ведь все должно работать через DNS).

Теперь приступим к настройке узлов, резервную копию которых вам нужно создать. Если эти узлы используют устаревший суперсервер inetd, в файл

/etc/inetd.conf
нужно добавить такие строки:

amanda dgram udp wait amanda /usr/libexec/amandad amandad

amandaidx stream tcp nowait amanda /usr/libexec/amindexd

amindexd amidxtape stream tcp ncwait amanda /usr/libexec/amidxtaped amidxtaped

Если же используется суперсервер xinetd, то в файл

/etc/xinetd.conf
нужно добавить следующие строки:

Листинг 10.1. Конфигурирование службы AMANDA

service amanda

{

 protocol = udp

 socket_type = dgram

 wait = no

 user = amanda

 server = /usr/libexec/amandad

 log_on_failure += USERID

}

service amandaidx

{

 protocol = tcp

 socket_type = stream

 wait = no

 user = amanda

 server = /usr/libexec/amindexd

 log_on_failure += USERID

}

service amidxtape

{

 protocol = tcp

 socket_type = stream

 wait = no

 user = amanda

 server = /usr/libexec/amidxtaped

 log_on_failure += USERID

}

Затем в файл

/etc/.rhosts
нужно добавить строку:

192.168.0.1 amanda

Чтобы изменения вступили в силу, желательно перезагрузить компьютер или перейти на первый уровень выполнения и обратно по команде telinit.

Теперь нужно пометить кассеты стримера. Это позволяет сделать команда amlabel. Зарегистрируйтесь как суперпользователь, вставьте в стример первую пленку и введите команду:

# amanda -с "amlabel network tape1"

Здесь «network» — это имя конфигурации, заданное в файле

amanda.conf
, a «tape1» — это метка вашей пленки, AMANDA запишет имя пленки в список пленок, поэтому у вас никогда не будет двух кассет с одной меткой.

Вам больше не нужна какая-нибудь лента? Для ее удаления из списка введите команду:

# amanda -с "amrmtape network tape1"

Команда amcheck позволяет проверить созданную вами конфигурацию и сообщить о возможных ошибках:

# amanda -с "amcheck network"

Вот теперь можно приступить к резервному копированию, Введите команду:

# amanda -с "amdump network" &

Архивирование данных по сети обычно занимает много времени, поэтому его следует запускать в фоновом режиме. Чтобы узнать состояние процесса архивирования, введите команду:

# amanda -с "amstatus network"

Если у вас возникла необходимость восстановить какую-нибудь рабочую станцию, зарегистрируйтесь на ней как суперпользователь, перейдите в корневой каталог и введите команду:

# amanda -с "amrestore network"

Программа amrestore соединится с сервером кассет. В ответ на приглашение сервера

введите:

setdisk sd0f

После этого вы сможете просматривать файлы и каталоги резервной копии так же, как при работе с FTP-сервером. Если вы найдете файл или каталог, который хотите восстановить, введите команду:

add имя_файла_или_каталога

Выбранный вами файл будет добавлен в список восстановления программы amrestore. Для извлечения добавленных в этот список файлов введите команду extract.

За дальнейшими инструкциями обратитесь к документации по системе AMANDA.

10.5. Дублирование данных: введение в RAI