Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

00-tech-book

.pdf
Скачиваний:
42
Добавлен:
10.02.2016
Размер:
7.86 Mб
Скачать

RAID – Redundant Array of Independent Disks

Избыточный массив независимых дисков. Это когда несколько физических дисков объединяются вместе в один логический чтобы решать какие либо задачи. Скорее всего вы его будете использовать для отказоустойчивости.

При выходе из строя одного из дисков система будет продолжать работать. В операционной системе массив будет выглядеть как обычный HDD. RAID – массивы зародились в сегменте серверных решений, но сейчас получили широкое распространение и уже используются дома. Для управления RAID-ом используется специальная микросхема с интеллектом , которая называется RAID-контроллер. Это либо чипсет на материнской плате, либо отдельная внешняя плата.

Типы RAID-массивов

Есть два типа RAID-массивов.

RAID-контроллер - LSI LOGIC MegaRAID SCSI 320-1

Аппаратный – это когда состоянием массива управляет специальная микросхема. На микросхеме есть свой CPU и все вычисления ложатся на него, освобождая CPU сервера от лишней нагрузки.

Программный – это когда состоянием массива управляет специальная программа в ОС. В этом случае будет создаваться дополнительная нагрузка на CPU сервера. Ведь все вычисления ложатся именно на него.

Однозначно сказать какой тип рейда лучше – нельзя. В случае программного рейда нам не нужно покупать дорогостоящий рейд-контроллер. Который обычно стоит от 250 у.е. (можно найти и за 70 у.е. но я бы не стал рисковать данными) Но все вычисления ложатся на CPU сервера. Программная реализация хорошо подходит для рейдов 0 и 1. Они достаточно просты и для их работы не нужны большие вычисления. Поэтому программные

рейды чаще используют в решениях начального уровня. Аппаратный

рейд в своей работе использует рейд-контроллер. Рейд-контроллер имеет свой процессор для вычислений и именно он производит операции ввода/вывода.

Модуль 1. Резервное копирование.

 

11

 

 

 

 

 

Уровни RAID-массивов

Их достаточно много. Это основные – 0, 1, 2, 3, 4, 5, 6, 7 и комбинированные –

10, 30, 50, 53...

Мырассмотримтолькосамыеходовые,которыеиспользуютсявсовременной инфраструктуре предприятия. Буква D в схемах означает Data (данные), или блок данных.

RAID 0 (Striped Disk Array without Fault Tolerance)

Он же stripe. Это когда два или более физических дисков объединяются в один логический с целью объединения места. То есть берем два диска по 500 Гб, объединяем их в RAID 0 и в системе видим 1 HDD объемом в 1 Тб. Информация распределяется по всем дискам рейда равномерно в виде небольших блоков (страйпов).

Плюсы – Высокая производительность, простота реализации.

Минусы – отсутствие отказоустойчивости. При использование этого рейда надежность системы понижается в два раза (если используем два диска). Ведь при выходе из строя хотя бы одного диска вы теряете все данные.

RAID 1 (Mirroring & Duplexing)

Он же mirror. Это когда два или более физических дисков объединяются в один логический диск с целью повышения отказоустойчивости. Информация пишется сразу на оба диска массива и при выходе одного из них информация сохраняется на другом.

Плюсы – высокая скорость чтения/записи, простота реализации.

Минусы – высокая избыточность. В случае использования 2-х дисков это 100%.

 

12

 

Модуль 1. Резервное копирование.

 

 

 

 

RAID 5 (Independent Data Disks with Distributed Parity Blocks)

Самый популярный вид рейд-массива, в целом благодаря экономичности использования носителей данных. Блоки данных и контрольные суммы циклически записываются на все диски массива. При выходе из строя одного из дисков будет заметно снижена производительность, так как придется совершать дополнительные манипуляции для функционирования массива. Сам по себе рейд имеет достаточно хорошую скорость чтения/записи но немного уступает RAID 1. Нужно не менее трех дисков чтобы организовать RAID 5.

Плюсы – экономичное использование носителей, хорошая скорость чтения/ записи. Разница в производительности по сравнению с RAID 1 не так сильно видна как экономия дискового пространства. В случае использования трех HDD избыточность составляет всего 33%.

Минусы – сложное восстановление данных и реализация.

RAID 1+0 (Very High Reliability with High Performance)

Он же RAID 10. Сочетание зеркального рейда и рейда с чередованием дисков.

В работе этого вида рейда диски объединяются парами в зеркальные рейды (RAID 1) а затем все эти зеркальные пары объединяются в массив с чередованием (RAID 0). В рейд можно объединить только четное количество дисков, минимум – 4, максимум – 16. От RAID 1 мы наследуем надежность, от RAID 0 - скорость.

Плюсы – высокая отказоустойчивость и производительность

Минусы – высокая стоимость

Модуль 1. Резервное копирование.

 

13

 

 

 

RAID 5+0 (High I/O Rates & Data Transfer Performance)

Он же RAID 50, это сочетание RAID 5 и RAID 0. Массив объединяет в себе высокую производительность и отказоустойчивость.

Плюсы – высокая отказоустойчивость, скорость передачи данных и выполнение запросов

Минусы – высокая стоимость

Итоги

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Механизм обеспечения

 

 

Уровень RAID

 

 

Использование

 

 

Мин.дисков

 

 

 

надежности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

RAID 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

100%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RAID 1

 

 

 

 

 

 

 

 

 

 

 

 

зеркалирование

 

 

 

 

50%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

четность

 

 

RAID 5

 

 

 

 

 

 

 

 

 

 

 

 

67-94%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

зеркалирование

 

 

 

RAID 1+0

 

 

 

 

 

 

 

 

 

50%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

четность

 

 

 

RAID 5+0

 

 

 

 

 

 

 

 

 

67-94%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Главный вывод который можно сделать – у каждого уровня рейда есть свои плюсы и минусы.

Еще главнее вывод – рейд не гарантирует целостности ваших данных. То есть если кто-то удалит файл или он будет поврежден каким либо процессом, рейд нам не поможет. Поэтому рейд не освобождает нас от необходимости делать бекапы. Но помогает, когда возникают проблемы с дисками на физическом уровне.

Storage Area Network

Архитектурное решение SAN представляет собой сеть, как правило на базе

14

 

Модуль 1. Резервное копирование.

 

 

 

Fibre Channel (оптика) которая служит для подключения хранилищ данных к серверам таким образом, чтобы те считали устройства как локальные.

Такое решение добавляет большую гибкость инфраструктуре предприятия. Ведь СХД могут находиться физически в любом месте и их не нужно переподключать от одного сервера к другому. Все что нужно сделать

– добавить сервер/СХД в SAN-сеть. Также, трафик LAN/WAN и SAN не конфликтует между собой. Из-за некоторой сложности, SAN пока не вышел за пределы крупных компаний.

Network Attached Storage

NAS – это сетевая система хранения данных. В целом это обычный сервер

Модуль 1. Резервное копирование.

 

15

 

 

 

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

DEPO Storage NAS 1005. До 5 Тб данных.

Неоспоримым плюсом NAS-серверов по отношению к “классическим” серверам является – цена. Так что, если от будущего сервера потребуются функции только файл-сервера стоит обратить внимание на NAS-решения.

Для NAS-серверов была специально разработана операционная система FreeNAS, которая построена на базе FreeBSD. ОС максимально оптимизирована под задачи NAS и весит в районе 32 Мб. Её можно загрузить с flash-носителя/cdrom диска.

Direct Attached Storage

Представляет из себя дисковый массив с прямым подключением к серверу. Другие сервера/клиенты могут получить доступ к этому массиву только через сервер, к которому он подключен.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

 

Модуль 1. Резервное копирование.

 

 

 

 

 

 

 

 

Примеры DAS-устройств:

USB-носители

CD/DVD – драйвы

ATA, SATA, SAS, SCSI – диски

Ленточные накопители/библиотеки

Самописный скрипт использующий атрибут mtime файлов

Сделаем простую реализацию бекапа.

Пишем скрипт вида “Что бекапим, куда бекапим, как долго храним копии”.

1#!/bin/bash

2#backup.sh

3timestamp=`date “+%Y-%m-%d-%H-%M”`

4backupFS=”/etc /var/lib/mysql /usr/local/etc”

5backupTO=/var/backup

6KeepTime=7

7if [ -d $backupTO ]; then

8find $backupTO -maxdepth 1 -name \*.tar.gz -mtime +${KeepTime} -exec rm -f {} \;

9for i in $backupFS

10do

11j=`expr ${i//\//-}`

12tar -zcvf $backupTO/`hostname`.${timestamp}.${j}.tar.gz $i

13echo “$i is done”

14done

15else

16echo “backup directory is missing...exiting”

17exit 1

18

Выполняем команду chmod +x <имя этого скрипта>, другими словами делаем его исполняемым.

В рабочем скрипте цифр быть не должно. Я добавил их для удобства объяснения строк кода.

1.Любой скрипт в Linux начинается с этой последовательности, которая называется sha-bang. По сути исполняемый файл может быть просто перечислением набора команд, но если планируется что-то сложнее, где предстоит работа с переменными то sha-bang стоит поместить в файл. В этом случае будет создан процесс, в котором мы можем хранить временные данные;

Модуль 1. Резервное копирование.

 

17

 

 

 

2. Все строки в файле начинающиеся с символа #, кроме первой строки – комментарии. Здесь я просто указал название нашего скрипта как многие делают;

3.В переменную timestamp мы сохраняем результат выполнения команды date в нужном нам формате: год-месяц-день-час-минута. Значение переменной будет фигурировать в конечном имени файла;

4. В переменной backupFS мы будем сохранять список каталогов для бекапа. Каталоги указываем через пробел а весь их список берем в двойные кавычки;

5. Переменная backupTO содержит каталог, куда мы будем делать бекапы;

6.В переменной KeepTime мы храним срок хранения бекапов. Файлы старше 7 дней мы будем удалять. Место на диске все таки не резиновое;

7. В дело вступает команда test. Прежде чем продолжить дальше имеет смысл проверить существование backup-каталога. Иначе нет смысла продолжать. В скрипте мы не будем его создавать – пусть администратор сам управляет своей файловой системой;

8.Перед созданием бекапа мы просматриваем backup-каталог и удаляем файлы которые хранятся более 7 дней. Для вычисления сколько архив находится в файловой системе мы использовали атрибут файла mtime. В этом атрибуте сохраняется время последней модификации файла;

9.Начинаем цикл for и последовательно для каждого каталога в переменной backupFS сделаем ряд действий;

10.Начинаем новую итерацию цикла for;

11. В переменную j мы сохраняем результат выполнения регулярного выражения. Нам необходимо удалить символ “/” из путей каталогов в переменной i. Так как создать tar.gz-архив с “/” в имени файла у нас не получится;

12.Архивируем нужную нам директорию. Имя файла мы генерируем динамически. В имени будет использован результат выполнения команды hostname, То есть мы подставим имя нашего сервера, что весьма полезно при хранение бекапов в централизованном месте, где могут быть бекапы с десятка серверов. Далее в название файла добавляем текущее время в соответствие с форматом переменной timestamp. После добавления времени добавляем название резервируемого каталога с заменой символов “/” на “-”;

13.Выводим сообщение, что архивация директории завершена. Впрочем для скрипта висящего в cron в этом нет необходимости;

14.Завершение итерации цикла for;

15.Это условие выполняется если backup-каталог отсутствует в файловой системе;

 

18

 

Модуль 1. Резервное копирование.

 

 

 

 

16.Выводим сообщение “backup-каталог отсутствует”;

17.Выходим из скрипта с ошибкой (код 1). Польза от этого есть когда это анализируется каким-то другим процессом. Но в целях правописания мы это добавим;

18.Завершение условного оператора и выход из программы.

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

0 4 * * 1-6 /root/backup.sh

Каталог для бекапа может быть NFS-ресурсом экспортированным на сервер. Так мы простым скриптом решаем важную задачу системного администрирования. Для более сложной инфраструктуры скорее всего понадобится что-то более функциональное и гибкое.

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

Rsync

Rsync (Remote Synchronization) — с помошью этой программы происходит копирование файлов между серверами, пришла на замену rcp.

centos52 — сервер куда будем делать бекап

unixbox — сервер с которого будем делать бекап

На сервере unixbox создадим пользователя rsync от которого будут запрашиваться файлы для бекапа.

Добавим пользователя rsync и установим ему пароль.

#useradd rsync

#passwd rsync

Добавим его в нужные группы чтобы он мог получить право на чтение если такого еще нет.

Скопируем каталог /etc с сервера unixbox в наш локальный каталог /var/ backup

$ rsync -e ssh -avz --delete-after --force rsync@unixbox:/etc /var/backup/

Вводим пароль и все.

Модуль 1. Резервное копирование.

 

19

 

 

 

Если хочется процедуру автоматизировать то нужно будет сгенерировать public ключ на сервере centos52 и положить его в файл authorized_keys пользователю rsync на сервере unixbox. Давайте сделаем это.

#ssh-keygen -t rsa

#ssh-copy-id -i ~/.ssh/id_rsa.pub rsync@unixbox

Все. Теперь можно поместить выполнение команды в crontab

#crontab -e

* */4 * * * rsync -e ssh -avz --delete-after --force rsync@unixbox:/etc /var/backup

Каждые 4 часа будем копировать каталог /etc с сервера unixbox в локальный каталог /var/backup

Пояснения

Внимание: если после /etc нет “/” то будет скопирован сам каталог и его содержимое. Если “/” есть, то будет скопировано только содержимое этого

каталога.

-e ssh – этим ключем мы показываем что будем использовать ssh, то есть наш трафик будет шифроваться;

-a – работа в режиме архивирования, сохраняются права доступа и информация о владельцах;

-v – выводить больше информативной информации;

-z – архивировать передаваемые данные;

--delete-after – удалять файлы которые отсутствуют в источнике после того как закончится передача файлов по сети. Мы хотим иметь полную копию контента с удаленного сервера. Можете включать эту опцию периодически. Вдруг кто-нибудь случайно удалит файл на удаленном сервере и во время ближайшей синхронизации мы удалим его тоже;

--force – не удалять директорию пока в ней есть файлы.

rsyncd

Также есть сервис – rsyncd который работает на порту 873 TCP. При запущенном сервисе строка доступа может выглядеть так:

rsync://[USER@]HOST[:PORT]/SRC [DEST]

то есть в начале будет добавлено rsync:// а остальное также как и в примере выше. Аутентификация в rsyncd основана на 128 bit MD4, что очень не надежно в наше время. К тому же данные передаются в открытом виде, что явно не в пользу этого сервиса, когда есть такие средства как rsync+ssh и scp. Поэтому подробно рассматривать его не вижу смысла.

20

 

Модуль 1. Резервное копирование.