Spec-Zone .ru
спецификации, руководства, описания, API

15.5. Используя Репликацию ZF

15.5.1. Используя ZF для Репликации Файловой системы
15.5.2. Конфигурирование MySQL для Репликации ZF
15.5.3. Обработка MySQL Recovery с ZF

Поддерживать высоконадежные среды, обеспечивая мгновенную копию информации и о в настоящий момент активной машине и о горячем резервном копировании - критическая часть решения для HA. Есть много решений этой проблемы, включая Главу 16, Репликацию и Раздел 15.2, "Краткий обзор MySQL с DRBD/Pacemaker/Corosync/Oracle Linux".

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

Следующий пример показывает простую систему Соляриса, работающую с единственным пулом ZF, смонтированным в /scratchpool:

Filesystem             size   used  avail capacity  Mounted on/dev/dsk/c0d0s0        4.6G   3.7G   886M    82%    //devices                 0K     0K     0K     0%    /devicesctfs                     0K     0K     0K     0%    /system/contractproc                     0K     0K     0K     0%    /procmnttab                   0K     0K     0K     0%    /etc/mnttabswap                   1.4G   892K   1.4G     1%    /etc/svc/volatileobjfs                    0K     0K     0K     0%    /system/object/usr/lib/libc/libc_hwcap1.so.1                       4.6G   3.7G   886M    82%    /lib/libc.so.1fd                       0K     0K     0K     0%    /dev/fdswap                   1.4G    40K   1.4G     1%    /tmpswap                   1.4G    28K   1.4G     1%    /var/run/dev/dsk/c0d0s7         26G   913M    25G     4%    /export/homescratchpool             16G    24K    16G     1%    /scratchpool

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

total 17drwxr-xr-x  31 root     bin           50 Jul 21 07:32 DTT/drwxr-xr-x   4 root     bin            5 Jul 21 07:32 SUNWmlib/drwxr-xr-x  14 root     sys           16 Nov  5 09:56 SUNWspro/drwxrwxrwx  19 1000     1000          40 Nov  6 19:16 emacs-22.1/

Чтобы создать снимок файловой системы, Вы используете zfs snapshot, определение пула и имени снимка:

root-shell> zfs snapshot scratchpool@snap1

Перечислять снимки, уже взятые:

root-shell> zfs list -t snapshotNAME                USED  AVAIL  REFER  MOUNTPOINTscratchpool@snap1      0      -  24.5K  -scratchpool@snap2      0      -  24.5K  -

Сами снимки сохранены в пределах метаданных файловой системы, и пространство, требуемое сохранить их, изменяется со временем из-за способа, которым создаются снимки. Начальное создание снимка очень быстро, потому что вместо того, чтобы делать всю копию данных и метаданных, требуемых содержать весь снимок, ZF записывают только момент времени и метаданные того, когда снимок создавался.

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

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

Например, чтобы выписать снимок к файлу:

root-shell> zfs send scratchpool@snap1 >/backup/scratchpool-snap1

Или лента:

root-shell> zfs send scratchpool@snap1 >/dev/rmt/0

Можно также выписать инкрементные изменения между двумя использованиями снимков zfs send:

root-shell> zfs send scratchpool@snap1 scratchpool@snap2 >/backup/scratchpool-changes

Чтобы восстановить снимок, Вы используете zfs recv, который применяет информацию о снимке или к новой файловой системе, или к существующему.