Как клонировать диск с ZFS?

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2018-04-28 13:25:04

Можете немного конкретнее написать? Я бьюсь головой уже не первый день, с этим кэшем вообще скоро с ума сойду. Как посмотреть где находится пул при импортировании?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2018-04-28 15:49:36

не совсем понимаю, зачем Вы мне указываете на кэш, если у меня система не грузится после выполнения всех действий. Ведь когда я отправлял zfs via ssh у меня такой проблемы не было.

Код: Выделить всё

Восстанавливаем пул со всеми дочерними датасетами:
# gunzip -c -d /var/snapshots/snapshot/main-pool.snapshot.gz | zfs receive -vFd main-pool

Выгружаем пул:
# zpool export main-pool

Подгружаем pool:
# zpool import -f -o cachefile=/tmp/zpool.cache -o altroot=/mnt main-pool

Копируем:
# cp /tmp/zpool.cache /mnt/boot/zfs

Прописываем загрузку пула:
# zpool set bootfs=main-pool/ROOT/default main-pool

Выгружаем пул:
# zfs unmount -a

Указываем mountpoint для пула main-pool:
# zfs set mountpoint=/main-pool main-pool

Перегружаемся:
# reboot
Теперь имею то, что имею. Тупик полнейший.

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Как клонировать диск с ZFS?

Непрочитанное сообщение snorlov » 2018-04-28 19:01:57

вы сделайте

Код: Выделить всё

zfs list
на исходном сервере, после монтирования через altroot, после unmount...
Помните что пул - это набор файловых систем, каждая из которых может монтироваться в любую точку...

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2018-05-01 17:41:48

Вот посмотрите, пожалуйста, мою последовательность действий, я или схожу с ума или я напоролся на какой-то баг системы FreeBSD 10.3. (Боевой сервер на 10.3).

На новом сервере.

Код: Выделить всё

# ifconfig em0 add 172.20.10.11/28
# route add default 172.20.10.1
# mkdir /tmp/etc 
# mount_unionfs /tmp/etc /etc
# ee /etc/ssh/sshd_config 
Строка "PermitRootLogin yes"
# passwd
# service sshd onestart 
# gpart destroy -F da0
# gpart create -s GPT ada0
# gpart add -t freebsd-boot -s 512 ada0 
# gpart add -t freebsd-swap -s 2G ada0
# gpart add -t freebsd-zfs /dev/ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
# kldload /boot/kernel/opensolaris.ko
При выполнении команды # zpool create main-pool ada0 - получаю ошибку:

Код: Выделить всё

cannot mount '/main-pool': failed to create mountpoint
Проверяю командами, вроде бы пул на месте:

Код: Выделить всё

# zpool list
NAME        SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
main-pool  49.8G  98.5K  49.7G         -     0%     0%  1.00x  ONLINE  -
# zfs list
NAME        USED  AVAIL  REFER  MOUNTPOINT
main-pool    76K  48.2G    19K  /main-pool
Ошибка меня смущает, я удаляю пул и создаю пул в /mnt. Хотя во всех инструкциях создают так пул без проблем

Код: Выделить всё

# zpool create -m /mnt main-pool ada0
# zpool list
NAME        SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
main-pool  49.8G   124K  49.7G         -     0%     0%  1.00x  ONLINE  -
root@:~ # zfs list
NAME        USED  AVAIL  REFER  MOUNTPOINT
main-pool    85K  48.2G    19K  /mnt
# mkdir /var/snapshots
# mount_smbfs -I 172.20.10.5 -E koi8-r:cp866 //guest@WINXP/share/ /var/snapshots
# gunzip -c -d /var/snapshots/main-pool.zfs.gz | zfs receive -vFd main-pool
# zpool export main-pool
При обычном импорте

Код: Выделить всё

# zpool import -f main-pool 
получаю ошибку
и в этой сессии уже не могу работать с zfs:

Код: Выделить всё

[b]# zpool list
internal error: failed to initialize ZFS library
root@:~ # zfs list
internal error: failed to initialize ZFS library[/b]
Делаю reboot и снова livecd

Код: Выделить всё

# zpool import
   pool: main-pool
     id: 13663271659995344837
  state: ONLINE
 action: The pool can be imported using its name or numeric identifier.
 config:

        main-pool   ONLINE
          ada0      ONLINE
# zpool import -f -o cachefile=/tmp/zpool.cache -o altroot=/mnt main-pool 
# cp /tmp/zpool.cache /mnt/boot/zfs
# zpool set bootfs=main-pool/ROOT/default main-pool
Проверяю пул после импорта:

Код: Выделить всё

# zfs list
NAME                     USED  AVAIL  REFER  MOUNTPOINT
main-pool                966M  47.3G    19K  /mnt/mnt
main-pool/ROOT           410M  47.3G    19K  none
main-pool/ROOT/default   410M  47.3G   410M  /mnt
main-pool/tmp             19K  47.3G    19K  /mnt/tmp
main-pool/usr            555M  47.3G    19K  /mnt/usr
main-pool/usr/home        19K  47.3G    19K  /mnt/usr/home
main-pool/usr/ports      166M  47.3G   166M  /mnt/usr/ports
main-pool/usr/src        389M  47.3G   389M  /mnt/usr/src
main-pool/var            172K  47.3G    19K  /mnt/var
main-pool/var/audit       19K  47.3G    19K  /mnt/var/audit
main-pool/var/crash       19K  47.3G    19K  /mnt/var/crash
main-pool/var/log         75K  47.3G    62K  /mnt/var/log
main-pool/var/mail        21K  47.3G    21K  /mnt/var/mail
main-pool/var/tmp         19K  47.3G    19K  /mnt/var/tmp         
# zpool list
NAME        SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
main-pool  49.8G   966M  48.8G         -     1%     1%  1.00x  ONLINE  /mnt
Все вроде бы ОК
Меняю /mnt на /main-pool

Код: Выделить всё

# zfs unmount -a
# zfs set mountpoint=/main-pool main-pool
# reboot
Далее черный экран, курсор моргает, никаких действий не происходит. У меня уже слов не хватает.

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2018-05-01 17:47:56

snorlov писал(а):
2018-04-28 19:01:57
вы сделайте
zfs list
на исходном сервере, после монтирования через altroot, после unmount...
Помните что пул - это набор файловых систем, каждая из которых может монтироваться в любую точку...

Код: Выделить всё

root@:~ # zpool import -f -o cachefile=/tmp/zpool.cache -o altroot=/mnt main-pool
root@:~ # cp /tmp/zpool.cache /mnt/boot/zfs
root@:~ # zpool set bootfs=main-pool/ROOT/default main-pool
root@:~ # zfs unmount -a
root@:~ # zfs list
NAME                     USED  AVAIL  REFER  MOUNTPOINT
main-pool                966M  47.3G    19K  /mnt/main-pool
main-pool/ROOT           410M  47.3G    19K  none
main-pool/ROOT/default   410M  47.3G   410M  /mnt
main-pool/tmp             19K  47.3G    19K  /mnt/tmp
main-pool/usr            555M  47.3G    19K  /mnt/usr
main-pool/usr/home        19K  47.3G    19K  /mnt/usr/home
main-pool/usr/ports      166M  47.3G   166M  /mnt/usr/ports
main-pool/usr/src        389M  47.3G   389M  /mnt/usr/src
main-pool/var            172K  47.3G    19K  /mnt/var
main-pool/var/audit       19K  47.3G    19K  /mnt/var/audit
main-pool/var/crash       19K  47.3G    19K  /mnt/var/crash
main-pool/var/log         75K  47.3G    62K  /mnt/var/log
main-pool/var/mail        21K  47.3G    21K  /mnt/var/mail
main-pool/var/tmp         19K  47.3G    19K  /mnt/var/tmp

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2018-05-07 10:07:32

Никакой кэш в итоге не трогал, все заработало на тестовых серверах без проблем. Буду пробовать в эти дни разворачивать боевой сервер.
Выложу два своих варианта по SSH и SMB.

SSH:

Код: Выделить всё

На боевом сервере:
# zfs snapshot -r main-pool@snap
# zfs list -t snapshot
NAME                          USED  AVAIL  REFER  MOUNTPOINT
main-pool@snap                   0      -    96K  -
main-pool/ROOT@snap              0      -    96K  -
main-pool/ROOT/default@snap      0      -   455M  -
main-pool/tmp@snap               0      -    96K  -
main-pool/usr@snap               0      -    96K  -
main-pool/usr/home@snap          0      -    96K  -
main-pool/usr/ports@snap         0      -   634M  -
main-pool/usr/src@snap           0      -   547M  -
main-pool/var@snap               0      -    96K  -
main-pool/var/audit@snap         0      -    96K  -
main-pool/var/crash@snap         0      -    96K  -
main-pool/var/log@snap           0      -   164K  -
main-pool/var/mail@snap          0      -   100K  -
main-pool/var/tmp@snap           0      -    96K  -
# zfs list
NAME                     USED  AVAIL  REFER  MOUNTPOINT
main-pool               1.60G  44.7G    96K  /main-pool
main-pool/ROOT           455M  44.7G    96K  none
main-pool/ROOT/default   455M  44.7G   455M  /
main-pool/tmp             96K  44.7G    96K  /tmp
main-pool/usr           1.15G  44.7G    96K  /usr
main-pool/usr/home        96K  44.7G    96K  /usr/home
main-pool/usr/ports      634M  44.7G   634M  /usr/ports
main-pool/usr/src        547M  44.7G   547M  /usr/src
main-pool/var            648K  44.7G    96K  /var
main-pool/var/audit       96K  44.7G    96K  /var/audit
main-pool/var/crash       96K  44.7G    96K  /var/crash
main-pool/var/log        164K  44.7G   164K  /var/log
main-pool/var/mail       100K  44.7G   100K  /var/mail
main-pool/var/tmp         96K  44.7G    96K  /var/tmp

На новом сервере:
# ifconfig em0 add 172.20.10.11/28
# route add default 172.20.10.1
# mkdir /tmp/etc 
# mount_unionfs /tmp/etc /etc
# ee /etc/ssh/sshd_config 
Строка "PermitRootLogin yes"
# passwd
# service sshd onestart
# sysctl -a | grep disk
# gpart show
# gpart destroy -F ada0
# gpart create -s GPT ada0
# gpart add -t freebsd-boot -s 512 ada0
# gpart add -t freebsd-swap -s 2G ada0
# gpart add -t freebsd-zfs ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
# zpool create -f -m /mnt main-pool /dev/ada0p3

На боевом сервере:
# zfs send -R main-pool@snap | ssh 172.20.10.11 zfs receive -vFd main-pool

На новом сервере:
# zpool set bootfs=main-pool/ROOT/default main-pool
# reboot
# zpool import -f -o altroot=/mnt main-pool
Проверяю пул после импорта:
# zfs list
# zpool list
# zpool get bootfs main-pool
Меняю точку монтирования:
# zfs set mountpoint=/main-pool main-pool
# reboot
SMB

Код: Выделить всё

На боевом сервере.
# mkdir /var/snapshots
# mount_smbfs -I 172.20.10.5 -E koi8-r:cp866 //guest@WINXP/share/ /var/snapshots
# zfs snapshot -r main-pool@snap
# df -h
Filesystem                Size    Used   Avail Capacity  Mounted on
main-pool/ROOT/default     45G    455M     45G     1%    /
devfs                     1.0K    1.0K      0B   100%    /dev
main-pool                  45G     96K     45G     0%    /main-pool
main-pool/tmp              45G     96K     45G     0%    /tmp
main-pool/usr/home         45G     96K     45G     0%    /usr/home
main-pool/usr/ports        45G    634M     45G     1%    /usr/ports
main-pool/usr/src          45G    547M     45G     1%    /usr/src
main-pool/var/audit        45G     96K     45G     0%    /var/audit
main-pool/var/crash        45G     96K     45G     0%    /var/crash
main-pool/var/log          45G    164K     45G     0%    /var/log
main-pool/var/mail         45G    100K     45G     0%    /var/mail
main-pool/var/tmp          45G     96K     45G     0%    /var/tmp
//GUEST@WINXP/SHARE        50G    2.9G     47G     6%    /var/backups
# zfs send -Rv main-pool@snap | gzip -1 > /var/snapshots/main-pool.zfs.gz

На новом сервере:
# ifconfig em0 add 172.20.10.11/28
# route add default 172.20.10.1
# mkdir /tmp/etc 
# mount_unionfs /tmp/etc /etc
# ee /etc/ssh/sshd_config 
Строка "PermitRootLogin yes"
# passwd
# service sshd onestart
# sysctl -a | grep disk
# gpart show
# gpart destroy -F ada0
# gpart create -s GPT ada0
# gpart add -t freebsd-boot -s 512 ada0
# gpart add -t freebsd-swap -s 2G ada0
# gpart add -t freebsd-zfs ada0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0
# zpool create -f -m /mnt main-pool /dev/ada0p3
# mkdir /var/snapshots
# mount_smbfs -I 172.20.10.5 -E koi8-r:cp866 //guest@WINXP/share/ /var/snapshots
# gunzip -c -d /var/snapshots/main-pool.zfs.gz | zfs receive -vFd main-pool
# zpool set bootfs=main-pool/ROOT/default main-pool
# reboot
# zpool import -f -o altroot=/mnt main-pool
Проверяю пул после импорта:
# zfs list
# zpool list
# zpool get bootfs main-pool
Меняю точку монтирования:
# zfs set mountpoint=/main-pool main-pool
# reboot

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2018-05-14 15:50:09

Добрый день! После переноса боевого сервера на новый, возникла проблема со свапом, точнее отсутствием...
Кто может подсказать, куда смотреть?

Код: Выделить всё

root@global-card:~ # gpart show
=>        34  1887436733  da0  GPT  (900G)
          34         512    1  freebsd-boot  (256K)
         546     4194304    2  freebsd-swap  (2.0G)
     4194850  1883241917    3  freebsd-zfs  (898G)

root@global-card:~ # swapon -a
swapon: /dev/ada0p2: No such file or directory
swapon: /dev/ada1p2: No such file or directory

root@global-card:~ # top -b 0
last pid: 32290;  load averages:  0.22,  0.15,  0.23  up 3+22:46:05    15:48:02
43 processes:  1 running, 41 sleeping, 1 stopped

Mem: 471M Active, 174M Inact, 1347M Wired, 292K Cache, 7933M Free
ARC: 805M Total, 170M MFU, 356M MRU, 912K Anon, 10M Header, 268M Other
Swap:

Аватара пользователя
Neus
капитан
Сообщения: 1977
Зарегистрирован: 2008-09-08 21:59:56

Как клонировать диск с ZFS?

Непрочитанное сообщение Neus » 2018-05-14 16:06:12

swapon /dev/da0p2
Physics is mathematics with the constraint of reality.
Engineering is physics with the constraint of money.

LOR захватили ситхи.
Добро пожаловать на светлую сторону!

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2018-05-16 11:58:44

Спасибо.

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2019-01-26 15:38:23

Доброго времени суток! Прошу в очередной раз помощи.
Моя прошлая реализация по бэкап-копированию оказалась не очень быстрым решением, а если быть точным - сутки на архивацию снэпшота в gzip и передачу по сети.
И сутки на разворачивание на резервном сервере.
Я решил организовать репликацию на второстепенный сервер, чтобы в случае чего просто загрузиться с этого пула.
Я создаю бэкап сервер с двумя HDD da0, da1.
На da0 установлен голый FreeBSD 10.3, пул zroot.
На da1 я сделал разметку согласно инструкциям

Код:
# gpart create -s GPT da1
# gpart add -t freebsd-boot -s 512 da1
# gpart add -t freebsd-swap -s 4G da1
# gpart add -t freebsd-zfs da1
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da1
# zpool create main-pool /dev/da1p3
# gpart show
=> 34 1048575933 da0 GPT (500G)
34 6 - free - (3.0K)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 8388608 2 freebsd-swap (4.0G)
8390656 1040183296 3 freebsd-zfs (496G)
1048573952 2015 - free - (1.0M)

=> 34 1929379773 da1 GPT (920G)
34 512 1 freebsd-boot (256K)
546 8388608 2 freebsd-swap (4.0G)
8389154 1920990653 3 freebsd-zfs (916G)

root@freebsd01:~ #

отправляю снэпшот на второй пул
Код:
# zfs send -Rv zroot@full | zfs receive -vFd main-pool


Загружаюсь с livecd
Код:
# zpool import -f -o altroot=/mnt zroot
# zpool import -f -o altroot=/mnt main-pool
# zpool set bootfs=main-pool/ROOT/default main-pool
# zfs set mountpoint=/main-pool main-pool

# zpool get bootfs
NAME PROPERTY VALUE SOURCE
zroot bootfs zroot/ROOT/default local
main-pool bootfs main-pool/ROOT/default local

# zpool export main-pool
# zpool export zroot


Первое чего я не смог настроить, так это выбрать загрузку между двумя пулами, у меня получилось только через BIOS поменять приоритет загрузки с диска da1, и тогда пул main-pool смог самостоятельно загрузиться.

Далее, когда я переключился обратно на загрузку с пула zroot da0 и вернулся в него, я уже не смог подключить к системе пул main-pool с диска da1


Код:
root@freebsd01:~ # zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
zroot 492G 1.54G 490G - 0% 0% 1.00x ONLINE -

root@freebsd01:~ # zpool status
pool: zroot
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
zroot ONLINE 0 0 0
da0p3 ONLINE 0 0 0

errors: No known data errors

root@freebsd01:~ # zpool import
pool: main-pool
id: 4608178919354020060
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

main-pool ONLINE
da1p3 ONLINE


Выполняю
root@freebsd01:~ # zpool import main-pool

И всё, На все команды zpool и zfs такая ошибка.
internal error: failed to initialize ZFS library

Если выполняю команду как указано ниже, то работает, но получается какое-то временное монтирование, т.к. после рестарта сервера пул main-pool с диска da1 опять не примонтирован.
Код:
root@freebsd01:~ # zpool import -f -o altroot=/mnt main-pool
root@freebsd01:~ # zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
main-pool 912G 909M 911G - 0% 0% 1.00x ONLINE /mnt
zroot 492G 1.54G 490G - 0% 0% 1.00x ONLINE -
root@freebsd01:~ # zfs list
NAME USED AVAIL REFER MOUNTPOINT
main-pool 909M 883G 19K /mnt/main-pool
main-pool/ROOT 364M 883G 19K none
main-pool/ROOT/default 364M 883G 364M /mnt
main-pool/tmp 28K 883G 19K /mnt/tmp
main-pool/usr 544M 883G 19K /mnt/usr
main-pool/usr/home 19K 883G 19K /mnt/usr/home
main-pool/usr/ports 155M 883G 155M /mnt/usr/ports
main-pool/usr/src 389M 883G 389M /mnt/usr/src
main-pool/var 172K 883G 19K /mnt/var
main-pool/var/audit 19K 883G 19K /mnt/var/audit
main-pool/var/crash 19K 883G 19K /mnt/var/crash
main-pool/var/log 66.5K 883G 47K /mnt/var/log
main-pool/var/mail 29.5K 883G 20.5K /mnt/var/mail
main-pool/var/tmp 19K 883G 19K /mnt/var/tmp
zroot 1.54G 475G 96K /zroot
zroot/ROOT 406M 475G 96K none
zroot/ROOT/default 406M 475G 406M /
zroot/tmp 160K 475G 96K /tmp
zroot/usr 1.15G 475G 96K /usr
zroot/usr/home 96K 475G 96K /usr/home
zroot/usr/ports 625M 475G 625M /usr/ports
zroot/usr/src 547M 475G 547M /usr/src
zroot/var 824K 475G 96K /var
zroot/var/audit 96K 475G 96K /var/audit
zroot/var/crash 104K 475G 96K /var/crash
zroot/var/log 268K 475G 176K /var/log
zroot/var/mail 164K 475G 100K /var/mail
zroot/var/tmp 96K 475G 96K /var/tmp
root@freebsd01:~ #


Смысл всего заключается в том, чтобы выполнялась репликацию с удаленного сервера на мой бэкап-сервер, в пул main-pool da1. В случае сбоя в любой момент сделать рестарт и загрузиться из этого пула, посмотреть или сохранить из него данные в БД, потом опять перезагрузиться в пул zroot da0 и продолжать делать снэпшоты репликации.
Сервер удаленный это БД, если бы были просто файлы, то было бы конечно все проще.
Это мое видение ситуации по решению данной проблемы.
Может быть мне дадут более грамотный совет, как мне будет правильнее реализовать репликацию с возможностью выполнить быстрый откат до нужного состояния и сразу же загрузиться с реплики. Сервер с БД примерно 500GB.

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Как клонировать диск с ZFS?

Непрочитанное сообщение snorlov » 2019-01-26 23:43:46

Нифига не могу понять что вы делаете...
1. Если хотите бэкап баз данных, то вам надо тормозить соответствующие сервисы, потом делать снапшот, затем стартовать эти сервисы, в противном случае тр***е с запуском баз не оберетесь...
2. вы на другой пул кидаете снапшот, при этом приемный пул судя по всему у вас не пустой, тогда, где вы разворачиваете снапшот...

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2019-01-27 14:23:17

snorlov писал(а):
2019-01-26 23:43:46
Нифига не могу понять что вы делаете...
1. Если хотите бэкап баз данных, то вам надо тормозить соответствующие сервисы, потом делать снапшот, затем стартовать эти сервисы, в противном случае тр***е с запуском баз не оберетесь...
К сожалению остановка сервисов не приемлема, поэтому снэпшоты я снимаю на горячую с боевого сервера.
snorlov писал(а):
2019-01-26 23:43:46
2. вы на другой пул кидаете снапшот, при этом приемный пул судя по всему у вас не пустой, тогда, где вы разворачиваете снапшот...
я создал пул с нуля

Код: Выделить всё

# gpart create -s GPT da1
# gpart add -t freebsd-boot -s 512 da1
# gpart add -t freebsd-swap -s 4G da1
# gpart add -t freebsd-zfs da1
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da1
# zpool create main-pool /dev/da1p3
далее отправил в него снэпшот

Код: Выделить всё

# zfs send -Rv zroot@full | zfs receive -vFd main-pool
Я и хочу постоянно передавать ему снэпшоты, чтобы в любой момент загрузить с этого пула в этой системе.

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Как клонировать диск с ZFS?

Непрочитанное сообщение snorlov » 2019-01-28 9:57:50

Т.е. все это вы делаете на бэкапном сервере, т.е. на нем есть 2-пула, zroot и main-pool, вы на main-pool засылаете снапшот от боевого сервера и хотите без телодвижений загружаться с этого пула... Или же вы хотите чтобы ваш main-pool уже при старте был примонтирован в систему, ну тогда изучайте

Код: Выделить всё

zpool create
т.е. создавайте пул main-pool уже с указанием точки его монтирования...

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2019-01-28 10:09:37

snorlov писал(а):
2019-01-28 9:57:50
Т.е. все это вы делаете на бэкапном сервере, т.е. на нем есть 2-пула, zroot и main-pool, вы на main-pool засылаете снапшот от боевого сервера и хотите без телодвижений загружаться с этого пула...
Да, передача пула main-pool из сервера A на сервер B и в любой момент на сервере B переключиться с zroot на main-pool.
snorlov писал(а):
2019-01-28 9:57:50
Или же вы хотите чтобы ваш main-pool уже при старте был примонтирован в систему, ну тогда изучайте
Примонтирован только для того, чтобы в случае рестарта рестарта сервера B он был доступен и снэпшоты продолжали дальше по расписанию передаваться в main-pool.
snorlov писал(а):
2019-01-28 9:57:50
т.е. создавайте пул main-pool уже с указанием точки его монтирования...
Я так и делаю после первого получения снэпшота.
Загружаюсь с livecd

Код: Выделить всё

# zpool import -f -o altroot=/mnt zroot
# zpool import -f -o altroot=/mnt main-pool
# zpool set bootfs=main-pool/ROOT/default main-pool
# zfs set mountpoint=/main-pool main-pool
Какой будет эталон структуры zfs, если на ней установлены две операционные системы FreeBSD и между ними нужно выполнять только переключение загрузки?
не важно абсолютно, на одном или на нескольких дисках HDD.
Последний раз редактировалось ramzes508 2019-01-28 10:11:55, всего редактировалось 1 раз.

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Как клонировать диск с ZFS?

Непрочитанное сообщение snorlov » 2019-01-28 10:11:35

Если вы хотите иметь и то и другое, то самый простой способ, это сделать костылечек, т.е. скриптик, который монтировал бы main-pool в нужную точку при старте с zroot... Такое было сделано, правда на боевом, и там перед монтированием проверялось, если вообще нужный пул и диск...

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2019-01-28 10:14:30

snorlov писал(а):
2019-01-28 10:11:35
Если вы хотите иметь и то и другое, то самый простой способ, это сделать костылечек, т.е. скриптик, который монтировал бы main-pool в нужную точку при старте с zroot... Такое было сделано, правда на боевом, и там перед монтированием проверялось, если вообще нужный пул и диск...
Неужели репликацию нельзя реализовать штатно в zfs?

А можно ли устанавливать в один пул две операционные системы freebsd и выполнять между ними перезагрузку?

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Как клонировать диск с ZFS?

Непрочитанное сообщение snorlov » 2019-01-28 10:34:39

Проблема не в репликации, а в том, что
1. у пула есть точка монтирования по умолчанию
2. у вас 2-а пула на бекапном сервере
3. вы реплицируете загрузочный пул, кстати можно же реплицировать не весь пул...
4. вы без телодвижений хотите грузиться то с одного, то с другого пула, при этом и тот и другой пул должны быть видны.
Можно конечно в качестве эксперимента попробовать указать с какого пула грузиться в loader.conf,
Кстати, а чем простая перезагрузка отличается от перезагрузки с ковырянием в биосе...))))

guest
проходил мимо

Как клонировать диск с ZFS?

Непрочитанное сообщение guest » 2019-01-28 13:46:13

4. вы без телодвижений хотите грузиться то с одного, то с другого пула, при этом и тот и другой пул должны быть видны.
Можно конечно в качестве эксперимента попробовать указать с какого пула грузиться в loader.conf,
Кстати, а чем простая перезагрузка отличается от перезагрузки с ковырянием в биосе...))))
loader.conf тут не поможет.

# man zfsboot (на случай загрузки с партиции MBR или dedicated разметки)
или
# man gptzfsboot

Единственный вариант -> BootManager - который позволит загржаться
с разных дисков, если BIOS традиционный - только GRUB2 (заодно проверить как он
поддерживает загрузку с ZFS), если UEFI - либо reFINd, либо man efivar.

Далее все просто, один pool всегда by default корневой, для монтирования другого
- скрипт в /usr/local/etc/rc.d с указанием альтернативного mount point, если
хочется "видеть" оба пула.

GRUB2 у меня работал с традиционным BIOS, reFINd с UEFI, использование efivar не пробовал.

Важное: на нагруженных базах, snapshot может сыграть злую шутку, но ТП не понимает.

ramzes508
рядовой
Сообщения: 19
Зарегистрирован: 2018-04-06 16:46:29

Как клонировать диск с ZFS?

Непрочитанное сообщение ramzes508 » 2019-01-28 13:55:31

Хорошо, если не усложнять все на столько с двумя пулами, то как самое простое держать всегда в онлайн бэкап сервер для репликации и в случае чего с него быстро запуститься? Мне не важна супер сложная реализация.
Мне нужно из Сервера "A" точная копия всего пула zfs send/receive ssh на сервер "B" без использования gzip и архива.

guest
проходил мимо

Как клонировать диск с ZFS?

Непрочитанное сообщение guest » 2019-01-28 14:09:31

Хорошо, если не усложнять все на столько с двумя пулами, то как самое простое держать всегда в онлайн бэкап сервер для репликации и в случае чего с него быстро запуститься? Мне не важна супер сложная реализация.
Мне нужно из Сервера "A" точная копия всего пула zfs send/receive ssh на сервер "B" без использования gzip и архива.
сложно - это когда кто-то хочет БЫСТРО, не задумываясь об архитектуре, объемах и реализации.

Архитектура:
- разбить на куски-сервисы проект и посмотреть как для этих кусков
организовать failover или может быть проксирование?

lazhu
сержант
Сообщения: 254
Зарегистрирован: 2013-08-10 14:28:38
Контактная информация:

Как клонировать диск с ZFS?

Непрочитанное сообщение lazhu » 2019-01-28 14:44:31

ramzes508 писал(а):
2019-01-28 10:14:30
А можно ли устанавливать в один пул две операционные системы freebsd и выполнять между ними перезагрузку?

Код: Выделить всё

~ /usr/ports/sysutils/beadm
~ make install clean
и будет вам щасстье

Аватара пользователя
fathernet
рядовой
Сообщения: 36
Зарегистрирован: 2008-05-13 7:58:29

Как клонировать диск с ZFS?

Непрочитанное сообщение fathernet » 2023-03-09 12:31:28

iMoJo писал(а):
2013-01-15 6:22:13
10) монтируем пул в /mnt и прописываем кэш файл:
и тут все и встало. Я сделал все как было указано во всех пунктах. Вынул диск на который все переносил и поставил в новую машину, но то одно то другое и не выходит сделать 10 пункт. То кеша нет...То просто не монтируется. А если смонтирован уже, то в корень и все равно файла кеша нет

Аватара пользователя
fathernet
рядовой
Сообщения: 36
Зарегистрирован: 2008-05-13 7:58:29

Как клонировать диск с ZFS?

Непрочитанное сообщение fathernet » 2023-03-09 15:47:46

В общем с клоном все вышло но запустить систему я так и не смог. проблема с загрузчиком.

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Как клонировать диск с ZFS?

Непрочитанное сообщение snorlov » 2023-03-10 23:07:20

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

Код: Выделить всё

Разметка диска используя gpart

gpart create -s GPT da0
gpart add -a 4k -s 128k -t freebsd-boot da0
# ufs-ные разделы надо форматировать
gpart add  -a 4k -s размер -t freebsd-ufs -l <метка> da0
newfs -U -L _label_ da0p2
# zfs-ные разделы форматировать не надо
gpart add  -s размер -t freebsd-zfs da0
gpart add  -s размер -t freebsd-swap da0
# присвоение метки
gpart modify -l <метка> -i <номер раздела> da0
#загрузчик GPT+UFS
grapt bootcode -b /boot/pmbr -p /boot/gptboot -i 1 da0
#загрузчик GPT+ZFS
grapt bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
Как то так

Аватара пользователя
fathernet
рядовой
Сообщения: 36
Зарегистрирован: 2008-05-13 7:58:29

Как клонировать диск с ZFS?

Непрочитанное сообщение fathernet » 2023-03-11 6:40:42

Я сделал иначе... я создал разделы и с помощью dd клонировал 1 и 2 разделы старого на новый диски. и в первый раз вышло... диск запросил отсутствующий пул zfs. по снапшот я в тот раз не перенес в последующий не получилось и я начал заново. Так теперь даже после dd загрузчика нет. и я понял что я не переносил zpool.cache как в тот раз что вышел удачно. Как бы я не любил фрюху.... но ghost под виндами творит чудеса.

PS # присвоение метки
gpart modify -l <метка> -i <номер раздела> da0 - это зачем?