Как клонировать диск с ZFS?
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
Можете немного конкретнее написать? Я бьюсь головой уже не первый день, с этим кэшем вообще скоро с ума сойду. Как посмотреть где находится пул при импортировании?
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
не совсем понимаю, зачем Вы мне указываете на кэш, если у меня система не грузится после выполнения всех действий. Ведь когда я отправлял 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
-
- подполковник
- Сообщения: 3923
- Зарегистрирован: 2008-09-04 11:51:25
- Откуда: Санкт-Петербург
Как клонировать диск с ZFS?
вы сделайте
на исходном сервере, после монтирования через altroot, после unmount...
Помните что пул - это набор файловых систем, каждая из которых может монтироваться в любую точку...
Код: Выделить всё
zfs list
Помните что пул - это набор файловых систем, каждая из которых может монтироваться в любую точку...
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
Вот посмотрите, пожалуйста, мою последовательность действий, я или схожу с ума или я напоролся на какой-то баг системы FreeBSD 10.3. (Боевой сервер на 10.3).
На новом сервере.
При выполнении команды # zpool create main-pool ada0 - получаю ошибку:
Проверяю командами, вроде бы пул на месте:
Ошибка меня смущает, я удаляю пул и создаю пул в /mnt. Хотя во всех инструкциях создают так пул без проблем
При обычном импорте
получаю ошибку
и в этой сессии уже не могу работать с zfs:
Делаю reboot и снова livecd
Проверяю пул после импорта:
Все вроде бы ОК
Меняю /mnt на /main-pool
Далее черный экран, курсор моргает, никаких действий не происходит. У меня уже слов не хватает.
На новом сервере.
Код: Выделить всё
# 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
Код: Выделить всё
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
Код: Выделить всё
# 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]
Код: Выделить всё
# 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
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
Код: Выделить всё
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
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
Никакой кэш в итоге не трогал, все заработало на тестовых серверах без проблем. Буду пробовать в эти дни разворачивать боевой сервер.
Выложу два своих варианта по SSH и SMB.
SSH:
SMB
Выложу два своих варианта по 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
Код: Выделить всё
На боевом сервере.
# 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
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
Добрый день! После переноса боевого сервера на новый, возникла проблема со свапом, точнее отсутствием...
Кто может подсказать, куда смотреть?
Кто может подсказать, куда смотреть?
Код: Выделить всё
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
- капитан
- Сообщения: 1946
- Зарегистрирован: 2008-09-08 21:59:56
Как клонировать диск с ZFS?
swapon /dev/da0p2
Physics is mathematics with the constraint of reality.
Engineering is physics with the constraint of money.
LOR захватили ситхи.
Добро пожаловать на светлую сторону!
Engineering is physics with the constraint of money.
LOR захватили ситхи.
Добро пожаловать на светлую сторону!
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
Спасибо.
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
Доброго времени суток! Прошу в очередной раз помощи.
Моя прошлая реализация по бэкап-копированию оказалась не очень быстрым решением, а если быть точным - сутки на архивацию снэпшота в 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.
Моя прошлая реализация по бэкап-копированию оказалась не очень быстрым решением, а если быть точным - сутки на архивацию снэпшота в 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.
-
- подполковник
- Сообщения: 3923
- Зарегистрирован: 2008-09-04 11:51:25
- Откуда: Санкт-Петербург
Как клонировать диск с ZFS?
Нифига не могу понять что вы делаете...
1. Если хотите бэкап баз данных, то вам надо тормозить соответствующие сервисы, потом делать снапшот, затем стартовать эти сервисы, в противном случае тр***е с запуском баз не оберетесь...
2. вы на другой пул кидаете снапшот, при этом приемный пул судя по всему у вас не пустой, тогда, где вы разворачиваете снапшот...
1. Если хотите бэкап баз данных, то вам надо тормозить соответствующие сервисы, потом делать снапшот, затем стартовать эти сервисы, в противном случае тр***е с запуском баз не оберетесь...
2. вы на другой пул кидаете снапшот, при этом приемный пул судя по всему у вас не пустой, тогда, где вы разворачиваете снапшот...
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
К сожалению остановка сервисов не приемлема, поэтому снэпшоты я снимаю на горячую с боевого сервера.
я создал пул с нуля
Код: Выделить всё
# 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
-
- подполковник
- Сообщения: 3923
- Зарегистрирован: 2008-09-04 11:51:25
- Откуда: Санкт-Петербург
Как клонировать диск с ZFS?
Т.е. все это вы делаете на бэкапном сервере, т.е. на нем есть 2-пула, zroot и main-pool, вы на main-pool засылаете снапшот от боевого сервера и хотите без телодвижений загружаться с этого пула... Или же вы хотите чтобы ваш main-pool уже при старте был примонтирован в систему, ну тогда изучайте т.е. создавайте пул main-pool уже с указанием точки его монтирования...
Код: Выделить всё
zpool create
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
Да, передача пула main-pool из сервера A на сервер B и в любой момент на сервере B переключиться с zroot на main-pool.
Примонтирован только для того, чтобы в случае рестарта рестарта сервера B он был доступен и снэпшоты продолжали дальше по расписанию передаваться в 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
не важно абсолютно, на одном или на нескольких дисках HDD.
Последний раз редактировалось ramzes508 2019-01-28 10:11:55, всего редактировалось 1 раз.
-
- подполковник
- Сообщения: 3923
- Зарегистрирован: 2008-09-04 11:51:25
- Откуда: Санкт-Петербург
Как клонировать диск с ZFS?
Если вы хотите иметь и то и другое, то самый простой способ, это сделать костылечек, т.е. скриптик, который монтировал бы main-pool в нужную точку при старте с zroot... Такое было сделано, правда на боевом, и там перед монтированием проверялось, если вообще нужный пул и диск...
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
Неужели репликацию нельзя реализовать штатно в zfs?snorlov писал(а): ↑2019-01-28 10:11:35Если вы хотите иметь и то и другое, то самый простой способ, это сделать костылечек, т.е. скриптик, который монтировал бы main-pool в нужную точку при старте с zroot... Такое было сделано, правда на боевом, и там перед монтированием проверялось, если вообще нужный пул и диск...
А можно ли устанавливать в один пул две операционные системы freebsd и выполнять между ними перезагрузку?
-
- подполковник
- Сообщения: 3923
- Зарегистрирован: 2008-09-04 11:51:25
- Откуда: Санкт-Петербург
Как клонировать диск с ZFS?
Проблема не в репликации, а в том, что
1. у пула есть точка монтирования по умолчанию
2. у вас 2-а пула на бекапном сервере
3. вы реплицируете загрузочный пул, кстати можно же реплицировать не весь пул...
4. вы без телодвижений хотите грузиться то с одного, то с другого пула, при этом и тот и другой пул должны быть видны.
Можно конечно в качестве эксперимента попробовать указать с какого пула грузиться в loader.conf,
Кстати, а чем простая перезагрузка отличается от перезагрузки с ковырянием в биосе...))))
1. у пула есть точка монтирования по умолчанию
2. у вас 2-а пула на бекапном сервере
3. вы реплицируете загрузочный пул, кстати можно же реплицировать не весь пул...
4. вы без телодвижений хотите грузиться то с одного, то с другого пула, при этом и тот и другой пул должны быть видны.
Можно конечно в качестве эксперимента попробовать указать с какого пула грузиться в loader.conf,
Кстати, а чем простая перезагрузка отличается от перезагрузки с ковырянием в биосе...))))
-
- проходил мимо
Как клонировать диск с ZFS?
loader.conf тут не поможет.4. вы без телодвижений хотите грузиться то с одного, то с другого пула, при этом и тот и другой пул должны быть видны.
Можно конечно в качестве эксперимента попробовать указать с какого пула грузиться в 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 может сыграть злую шутку, но ТП не понимает.
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2018-04-06 16:46:29
Как клонировать диск с ZFS?
Хорошо, если не усложнять все на столько с двумя пулами, то как самое простое держать всегда в онлайн бэкап сервер для репликации и в случае чего с него быстро запуститься? Мне не важна супер сложная реализация.
Мне нужно из Сервера "A" точная копия всего пула zfs send/receive ssh на сервер "B" без использования gzip и архива.
Мне нужно из Сервера "A" точная копия всего пула zfs send/receive ssh на сервер "B" без использования gzip и архива.
-
- проходил мимо
Как клонировать диск с ZFS?
сложно - это когда кто-то хочет БЫСТРО, не задумываясь об архитектуре, объемах и реализации.Хорошо, если не усложнять все на столько с двумя пулами, то как самое простое держать всегда в онлайн бэкап сервер для репликации и в случае чего с него быстро запуститься? Мне не важна супер сложная реализация.
Мне нужно из Сервера "A" точная копия всего пула zfs send/receive ssh на сервер "B" без использования gzip и архива.
Архитектура:
- разбить на куски-сервисы проект и посмотреть как для этих кусков
организовать failover или может быть проксирование?
-
- сержант
- Сообщения: 252
- Зарегистрирован: 2013-08-10 14:28:38
- Контактная информация:
Как клонировать диск с ZFS?
Код: Выделить всё
~ /usr/ports/sysutils/beadm
~ make install clean
- fathernet
- рядовой
- Сообщения: 36
- Зарегистрирован: 2008-05-13 7:58:29
Как клонировать диск с ZFS?
и тут все и встало. Я сделал все как было указано во всех пунктах. Вынул диск на который все переносил и поставил в новую машину, но то одно то другое и не выходит сделать 10 пункт. То кеша нет...То просто не монтируется. А если смонтирован уже, то в корень и все равно файла кеша нет
- fathernet
- рядовой
- Сообщения: 36
- Зарегистрирован: 2008-05-13 7:58:29
Как клонировать диск с ZFS?
В общем с клоном все вышло но запустить систему я так и не смог. проблема с загрузчиком.
-
- подполковник
- Сообщения: 3923
- Зарегистрирован: 2008-09-04 11:51:25
- Откуда: Санкт-Петербург
Как клонировать диск с ZFS?
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?
Я сделал иначе... я создал разделы и с помощью dd клонировал 1 и 2 разделы старого на новый диски. и в первый раз вышло... диск запросил отсутствующий пул zfs. по снапшот я в тот раз не перенес в последующий не получилось и я начал заново. Так теперь даже после dd загрузчика нет. и я понял что я не переносил zpool.cache как в тот раз что вышел удачно. Как бы я не любил фрюху.... но ghost под виндами творит чудеса.
PS # присвоение метки
gpart modify -l <метка> -i <номер раздела> da0 - это зачем?
PS # присвоение метки
gpart modify -l <метка> -i <номер раздела> da0 - это зачем?