BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
СообщениеДобавлено: Чт 12 апр, 2018 11:51 am 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Доброго всем времени суток.
Прежде чем писать пост, я изучал freebsd с начала года, читал много статей, старался вникнуть во все, что с этим связано, постоянно спотыкался и вставал вновь, но сейчас я решился обратиться сюда.
Мне была поставлена задача настроить backup-копирование или репликацию сервера Freebsd 10.3, сервер боевой, крутится БД Postgress, php, веб-сервер и т.д., гасить его ни в коем случае нельзя.
На тот момент я в глаза не видел ZFS и всё, что с ним связано.
Прочитал мануал от oracle по zfs я понял, что смогу реализовать два варианта:
1. Выгрузить все дата сеты в архив, скопировать архивы из удаленного сервера на новый и развернуть локально.
2. Отправить целиком пул с датасетами на новый сервер zfs send & zfs receive по ssh.
Вариант 1 мне не понравился сразу, т.к. когда я запустил выгрузку всех снэпшотов в архив
Код:
cd /var/backups/                               
zfs send main-pool@snapshot_2018.03.19 | gzip -9 > backup_main-pool_`date +%Y.%m.%d`.gz
zfs send main-pool/ROOT@snapshot_2018.03.19 | gzip -9 > backup_main-pool_root_`date +%Y.%m.%d`.gz
zfs send main-pool/ROOT/default@snapshot_2018.03.19 | gzip -9 > backup_main-pool_root_default_`date +%Y.%m.%d`.gz
zfs send main-pool/tmp@snapshot_2018.03.19 | gzip -9 > backup_main-pool_tmp_`date +%Y.%m.%d`.gz
zfs send main-pool/usr@snapshot_2018.03.19 | gzip -9 > backup_main-pool_usr_`date +%Y.%m.%d`.gz
zfs send main-pool/usr/home@snapshot_2018.03.19 | gzip -9 > backup_main-pool_usr_home_`date +%Y.%m.%d`.gz
zfs send main-pool/usr/ports@snapshot_2018.03.19 | gzip -9 > backup_main-pool_usr_ports_`date +%Y.%m.%d`.gz
zfs send main-pool/usr/src@snapshot_2018.03.19 | gzip -9 > backup_main-pool_usr_src_`date +%Y.%m.%d`.gz
zfs send main-pool/var@snapshot_2018.03.19 | gzip -9 > backup_main-pool_var_`date +%Y.%m.%d`.gz
zfs send main-pool/var/audit@snapshot_2018.03.19 | gzip -9 > backup_main-pool_var_audit_`date +%Y.%m.%d`.gz
zfs send main-pool/var/crash@snapshot_2018.03.19 | gzip -9 > backup_main-pool_var_crash_`date +%Y.%m.%d`.gz
zfs send main-pool/var/log@snapshot_2018.03.19 | gzip -9 > backup_main-pool_var_log_`date +%Y.%m.%d`.gz
zfs send main-pool/var/mail@snapshot_2018.03.19 | gzip -9 > backup_main-pool_var_mail_`date +%Y.%m.%d`.gz
zfs send main-pool/var/tmp@snapshot_2018.03.19 | gzip -9 > backup_main-pool_var_tmp_`date +%Y.%m.%d`.gz

сервер начал работать на пределе (хотя сервер у нас арендован не самой слабой мощности), и получилось так, что обработка 500GB данных main-pool/ROOT/default@snapshot_2018.03.19 практически парализовало работу офиса днем, хотя запускал процесс вечером и за ночь он не завершился.
Вариант запуска на выходные можно конечно рассматривать, но я решил идти по пути варианта 2, он мне показался менее нагруженным.
Постараюсь описать подробно, возможно вы мне поможете скорректировать инструкцию, за это вам будет плюс к карме :).

Один сервер находится в Германии, виртуальный сервер я развернул в Москве.

Загружаемся на новом сервере "Freebsd03" с liveCD
Настраиваем сетку. У меня сетевой интерфейс называется em0.
Код:
ifconfig em0 add 192.168.0.9 netmask 255.255.255.0
route add default 192.168.0.254

Для настройки ssh подгружаемся в файловую систему unionfs.
Код:
mkdir /tmp/etc
mount_unionfs /tmp/etc /etc

Редактируем конфиг sshd чтобы подключаться по ssh root-ом.
Код:
ee /etc/ssh/sshd_config
Строка "PermitRootLogin yes"

Создаем любой простой пароль для подключения к этому хосту по ssh.
Код:
passwd root

Запускаем сервис sshd.
Код:
service sshd onestart

Далее я уже подключился для удобства к новому серверу по ssh для вставки всех команд.
Смотрим диски в системе. У меня диск называется da0.
Код:
sysctl -a | grep disk

Смотрим таблицу разметки.
Код:
gpart show

Удаляем ее командой. У меня диск пустой, поэтому аккуратнее с этой командой надо быть :)
Код:
gpart destroy -F da0

Создаем новую таблицу и делаем разметку диска. Постарался сделать по аналогии с сервером в Германии, только у меня на виртуальном сервере нет зеркала и размер диска будет 800gb.
Цитата:
=> 34 3907029101 ada0 GPT (1.8T)
34 6 - free - (3.0K)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 4194304 2 freebsd-swap (2.0G)
4196352 3902832640 3 freebsd-zfs (1.8T)
3907028992 143 - free - (72K)

=> 34 3907029101 ada1 GPT (1.8T)
34 6 - free - (3.0K)
40 1024 1 freebsd-boot (512K)
1064 984 - free - (492K)
2048 4194304 2 freebsd-swap (2.0G)
4196352 3902832640 3 freebsd-zfs (1.8T)
3907028992 143 - free - (72K)

Код:
gpart create -s GPT da0
gpart add -t freebsd-boot -s 512 da0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
gpart add -t freebsd-swap -s 2G da0
gpart add -t freebsd-zfs da0

Создаем pool "main-pool".
Вот тут я долго топтался, если исключал ключ -m, то у меня была ошибка, что нельзя смонтировать в "/". Так же читал по другим ключам, но информации по ним очень мало...
Еще на будущее зафиксировал себе, что -f используем в случае, когда устройства при создании зеркала имеют разный размер, пул создастся, но размер будет соответствовать меньшему устройству.
Код:
zpool create -f -O canmount=off -m none main-pool /dev/da0p3

Если посмотреть боевой сервер и новый, то разница в mount-point, я не знаю пока, критично это или нет, но я стараюсь сделать идентичные настройки.
Цитата:
Боевой сервер
zfs list
NAME USED AVAIL REFER MOUNTPOINT
main-pool 1.59G 866G 96K /main-pool
main-pool/ROOT 449M 866G 96K none
main-pool/ROOT/default 449M 866G 448M /
main-pool/tmp 160K 866G 96K /tmp
main-pool/usr 1.15G 866G 96K /usr
main-pool/usr/home 96K 866G 96K /usr/home
main-pool/usr/ports 628M 866G 628M /usr/ports
main-pool/usr/src 547M 866G 547M /usr/src
main-pool/var 900K 866G 96K /var
main-pool/var/audit 104K 866G 96K /var/audit
main-pool/var/crash 96K 866G 96K /var/crash
main-pool/var/log 336K 866G 240K /var/log
main-pool/var/mail 172K 866G 108K /var/mail
main-pool/var/tmp 96K 866G 96K /var/tmp

Новый сервер
zfs list
NAME USED AVAIL REFER MOUNTPOINT
main-pool 85K 771G 19K none
root@:~ # zfs list

Перешел на боевой сервер, с которого буду переносить "main-pool".
Сделал рекурсивный снэпшот пула с дочерними файловыми системами.
Код:
zfs snapshot -r main-pool@snapshot

Список снэпшотов.
Код:
zfs list -t snapshot

Цитата:
NAME USED AVAIL REFER MOUNTPOINT
main-pool@snapshot 0 - 96K -
main-pool/ROOT@snapshot 0 - 96K -
main-pool/ROOT/default@snapshot 460K - 447M -
main-pool/tmp@snapshot 64K - 96K -
main-pool/usr@snapshot 0 - 96K -
main-pool/usr/home@snapshot 0 - 96K -
main-pool/usr/ports@snapshot 8K - 628M -
main-pool/usr/src@snapshot 0 - 547M -
main-pool/var@snapshot 0 - 96K -
main-pool/var/audit@snapshot 8K - 96K -
main-pool/var/crash@snapshot 0 - 96K -
main-pool/var/log@snapshot 96K - 144K -
main-pool/var/mail@snapshot 64K - 96K -
main-pool/var/tmp@snapshot 0 - 96K -

Далее я отправил снэпшот со старого на новый сервер, на котором буду разворачивать main-pool.
Список ключей отметил для себя:
Цитата:
// -R zfs send используется для отправки потока репликации всех дочерних файловых систем
-i zfs send создает инкрементные снэпшоты
-F zfs receive означает перезаписать файловую систему, в том случае если она уже создана
-v zfs receive отображение текущего прогресса

Код:
zfs send -R main-pool@snapshot | ssh 192.168.0.9 zfs receive -vFd main-pool

Прописываем загрузку пула. (Начиная с FreeBSD версии 10, у нас корень является "/ROOT/default", я убил на это понимание 2 дня)
Код:
zpool set bootfs=main-pool/ROOT/default main-pool

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

Делаем экспорт хранилища.
Код:
zpool export main-pool

Подгружаем pool. Импорт экспортированного хранилища.
Цитата:
Если ключ -d не задан, команда ищет /dev/disk. но я все равно указал.
Если размонтировать какую-либо из файловых систем не удается, ее можно размонтировать принудительно с помощью параметра "-f"

Проверяю какой пул готов для импорта
Код:
zpool import

Цитата:
root@:~ # zpool import
pool: main-pool
id: 18244119390875913029
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:

main-pool ONLINE
da0p3 ONLINE


Далее моя проблема, в которую я упёрся и не могу понять, что я сделал не так...
Подгружаем pool. Импорт экспортированного хранилища.
Код:
zpool import -f -d /dev/da0p3 main-pool

Далее я проверяю список zfs
Код:
zpool list

И у меня валится ошибка инициализации библиотеки ZFS
Цитата:
root@:~ # zpool list
internal error: failed to initialize ZFS library
root@:~ #



Теперь вопросы по существу:
1. Как мне победить ошибку "failed to initialize ZFS library". Я явно накосячил либо в "zpool create", либо zpool export/import.
2. Подскажите мне как работать со снэпшотами, если их выгрузить в архив, скачать и пытаться развернуть локально. Конкретно я не понимаю как указать эти архивы в livecd и запустить zfs receive из архива в пул. Буду очень рад конструктивному ответу.
3. И третий момент вылез буквально вчера: При тестировании с виртуального сервера на виртуальный, в рамках одного гипервизора, у меня 25GB передает по ssh минут 5, но когда я запустил "zfs send -R main-pool@snapshot | ssh 192.168.0.9 zfs receive -vFd main-pool" из Германии в Москву через интернет - у меня за сутки передалось всего 26GB, причем на сервере-приемнике загрузка памяти была максимальная 10GB из 10GB, и мне кажется, что передача данных застопорилась именно из-за этого.

Пробелы у меня есть, но сразу всю систему осилить после windows очень сложно. Спасибо всем за внимание.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт 13 апр, 2018 11:08 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 26 мар, 2007 6:04 pm
Сообщения: 1117
Откуда: Kiev
Цитата:
Далее моя проблема, в которую я упёрся и не могу понять, что я сделал не так...
Подгружаем pool. Импорт экспортированного хранилища.
Код:
zpool import -f -d /dev/da0p3 main-pool



Что по вашему тут должен сделать ключ '-d', если в man'e про него написано следующее:

Цитата:
-d dir Searches for devices or files in dir. The -d option can be
specified multiple times.


?

Мне кажется вы сами себе создали проблему, и пытаетесь её решить. Если сделать пул в livecd и потом zpool export/import то он должен проходить даже без ключа '-f'.

Почему бы вам не проделать тоже самое, но по официальной доке https://wiki.freebsd.org/RootOnZFS/GPTZFSBoot ? У вас какие-то куски из разных источников.

1) Может модуль ZFS побился, а может что-то ещё. Ещё как вариант попробовать удалить /boot/zfs/zpool.cache, перегрузиться, и попробовать ещё раз импортировать.
2) С ними можно работать по разному (можно в файл, можно просто пересылать). Что бы понять суть работы, зачем оно нужно желательно прочитать доку по работе zfs/zpool, можно даже взять с сайта oracle (там совместимость 95%)
3) Если вы хотите передать максимально быстро, то не используйте ssh для передачи (достаточно простого nc). Дополнительно можно использовать mbuffer (https://dan.langille.org/2014/05/03/zfs ... g-mbuffer/)

_________________
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт 13 апр, 2018 11:17 am 
Не в сети

Зарегистрирован: Пт 13 апр, 2018 10:28 am
Сообщения: 1
1) Пересоздай zpool.cache (тот который ты принес с "боевого сервера" не подойдет :)

2) Про mbuffer уже написали.

3) поскольку обьем все же большой то сжать тоже не помешает, только не тормозным gzip, а что нибудь типа lz4, zstd и не как файлы, а через pipe при пересылке.
В freebsd 11 у zfs send есть опция -e (пересылать уже сжатые блоки lz4)

4) Переносить через zfs send работающую базу нельзя, только остановленную.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт 13 апр, 2018 11:34 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 26 мар, 2007 6:04 pm
Сообщения: 1117
Откуда: Kiev
NetUser писал(а):
4) Переносить через zfs send работающую базу нельзя, только остановленную.

Если останов базы - критичен, то можно (это совсем не означает, что нельзя, а то, что можно, но не желательно). Лично переносил снепшоты mysql/postgresql с работающих баз. Из около 20-30 раз таких переносов неудач не было. Единственный момент - снепшоты базы и логов должны быть сделаны в один и тот же момент (если они находятся на разных zfs)

_________________
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт 13 апр, 2018 2:02 pm 
Не в сети

Зарегистрирован: Пт 03 сен, 2004 1:26 pm
Сообщения: 2261
ramzes508 писал(а):
Теперь вопросы по существу:
1. Как мне победить ошибку "failed to initialize ZFS library". Я явно накосячил либо в "zpool create", либо zpool export/import.


явно и про это уже намекали...

простая логика: "failed to initialize ZFS library"
- либо модули zfs не подгружены, что врядли
- либо корень не смонтирован и где уж тут найти библиотки

значит, скорей всего zpool create с указанием альтернативного корня
и перед импортом, правильно задать mountpoint для корня.
либо import с указанием альтернативного монтирования чтобы посмотреть
затем характеристики пула и mountpoint'ы

верхнее, всего лишь личное мнение, что мешает потренироваться в Виртуалке?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 17 апр, 2018 6:30 pm 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Доброго времени дня!

1. Перепробовал все ваши советы...Какой день подряд я бьюсь над этой проблемой и у меня не получается решить "failed to initialize ZFS library".
Вот пример из видео на youtube, делаю уже один в один как автор, или я с ума схожу или чего-то еще! ссылка
Код:
# ifconfig vtnet0 add 10.0.0.191 netmask 255.255.255.0
# route add default 10.0.0.176
# mkdir /tmp/etc
# mount_unionfs /tmp/etc /etc
# vi /etc/ssh/sshd_config
PermitRootLogin yes
# service sshd onestart
# passwd Password
# sysctl -a | grep disk
# gpart show
# gpart destroy -F vtbd0
# gpart create -s gpt vtbd0
# gpart add -t freebsd-boot -s 512 vtbd0
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 vtbd0
# gpart add -t freebsd-swap -s 1G vtbd0
# gpart add -t freebsd-zfs vtbd0
# zpool create -m /mnt example2 /dev/vtbd0p3
# zfs snapshot -r example@23-03-2017
# zfs list -t snaphot
# zfs send -R example@23-03-2017 | ssh 10.0.0.191 zfs receive -vFd example2
# reboot
# zpool import -f example2
# zpool list
# df -h

Вот у него работает zpool list после zpool import -f example2, у меня же валится ошибка "internal error: failed to initialize ZFS library".
Скажу так, что после перезагрузки система подгружается, все работает, я вижу поднятую копию сервера виртуалки 1, но я не уверен, что из-за этой ошибки все будет работать корректно, если я буду переносить боевой сервер.

Пункт номер два.
Я так же скоро с ума сойду, я 3 дня сидел читал форумы, гуглил но так и не понял 2 вещи:
1. я гружусь в Livecd, предварительно выгрузил с основго сервера архив со снэпшотами, мне нужно указать на архив снэпшота, чтобы выполнить zfs send /receive в рамках одной виртуалки, без использования передачи пула по сети... но я абсолютно не понимаю как это сделать, как в livecd указать на снэпшот, куда его надо поместить на usb диск или сетевую папку и как мне вообще примонитровать это, какой командой будет отображаться и доступен сетевой ресурс в локалке.

2. mbuffer должен работать с двух сторон, ты настраиваешь его слушать на сервере приемнике и потом отправляешь с основного сервера. Но как мне поднять mbuffer в livecd? я пытался установить порты на livecd, пытался гуглить, но в интернете просто каша полная. я реально не понимаю

Прошу вас, помогите! :cry:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 17 апр, 2018 6:34 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 26 мар, 2007 6:04 pm
Сообщения: 1117
Откуда: Kiev
1) подключить диск, папку, ... любым удобным способом
2) можно и без mbuffer, если это livecd.

_________________
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Чт 19 апр, 2018 2:54 pm 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Проблему так и не победил с "internal error: failed to initialize ZFS library". Решил забить на неё. Жаль, что никто не дал решения.
Делаю так
Код:
# zpool create -o cachefile=/boot/zfs/zpool.cache -m /mnt -f main-pool /dev/da0p3
# zpool set bootfs=main-pool/ROOT/default main-pool

Переношу пул, перегружаюсь, снова Livecd
Код:
# zpool import -f -o altroot=/mnt main-pool
# zfs set mountpoint=/main-pool main-pool
# zpool export main-pool
# zpool import main-pool
Тут ошибка "internal error: failed to initialize ZFS library"
# reboot


Еще
Может кто-то даст решение как настроить периодическую отправку снэпшотов всего пула из сервера А на сервер Б (наполнение постоянными инкрементными снепшотами)? Получается, что сейчас мне надо грузиться в LiveCD и ждать приема снэпшота пула. Держать постоянно сервер-приемник в режиме live-cd для приема постоянных снэпшотов не есть хорошо. Электричество или еще чего..
Хотелось бы настроить периодичную отправку zfs send/receive без моего участия. Я пробовал на работающий полноценный сервер Б с пулом test-pool отправлять пул main-pool с сервера А . Но на полностью рабочей машине так просто второй пул не принимается. У меня не получилось пока что.. Может подскажете какое решение?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Сб 28 апр, 2018 10:18 am 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Доброго времени суток! Прошу помочь, очередная проблема.
Решил пойти путем zfs send reveive через архивирование, .т.к вариант по сети потерпел фиаско.
Но у меня возникла теперь новая проблема при выполнении тех же действий, у меня просто не грузится система и снова выкидывает в livecd

Код:
На боевом сервере.
Делаем рекурсивный снэпшот:
# zfs snapshot -r main-pool@snapshot

Монтируем шару с архивами:
# mkdir /var/snapshots
# mount_smbfs -I 192.168.0.200 -E koi8-r:cp866 //guest@TEAM/distr/snapshot/ /var/snapshots

Отправляем снэпшоты в файл:
# zfs send -Rv main-pool@snapshot | gzip > /var/snapshots/snapshot/main-pool.snapshot.gz

Грузимся на новом сервере Freebsd02 с liveCD.
Настроим сетку. У меня сетевой интерфейс называется em0:
# ifconfig em0 add 192.168.0.8/24
# route add default 192.168.0.254

Для настройки ssh подгрузим файловую систему unionfs:
# mkdir /tmp/etc
# mount_unionfs /tmp/etc /etc
 
Редактируем конфиг sshd:
# ee /etc/ssh/sshd_config
Строка "PermitRootLogin yes"

Создадим любой простой пароль для подключения к этому хосту по ssh:
# passwd

Запускаем сервис sshd:
# service sshd onestart

Смотрим диски в системе. У меня диск называется da0:
# sysctl -a | grep disk

Смотрим таблицу разметки:
# gpart show

Если она есть удаляем ее командой:
# gpart destroy -F da0

Создаем GPT диск:
# gpart create -s GPT da0

Создаем раздел boot:
# gpart add -t freebsd-boot -s 512 da0

Создание swap размером 2G:
# gpart add -t freebsd-swap -s 4G da0

Создаем раздел ZFS:
# gpart add -t freebsd-zfs /dev/da0

Устанавливаем pMBR и gptzfsboot загрузчик:
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0

Load ZFS kernel module:
# kldload /boot/kernel/opensolaris.ko
# kldload /boot/kernel/zfs.ko
 
Создаем pool main-pool:
# zpool create -m /mnt main-pool da0

Монтируем шару с архивами:
# mkdir /var/snapshots
# mount_smbfs -I 192.168.0.200 -E koi8-r:cp866 //guest@TEAM/distr/snapshot/ /var/snapshots

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

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

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

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

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

# reboot


Прошу помочь, куда копать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Сб 28 апр, 2018 10:23 am 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Пробовал так же с командами
Код:
# mkdir /boot/zfs
# zpool export main-pool && zpool import main-pool
# cp /boot/zfs/zpool.cache /main-pool/boot/zfs

ругается, что нету такой директории.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Сб 28 апр, 2018 4:51 pm 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Смог скопировать кэш, но толку мне это дало целых 0.

Код:
Восстанавливаем пул со всеми дочерними датасетами:
# 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


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 01 май, 2018 7:15 pm 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Кто-нибудь может подсказать, куда смотреть?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср 02 май, 2018 5:32 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 26 мар, 2007 6:04 pm
Сообщения: 1117
Откуда: Kiev
Цитата:
Устанавливаем pMBR и gptzfsboot загрузчик:
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0

Load ZFS kernel module:
# kldload /boot/kernel/opensolaris.ko
# kldload /boot/kernel/zfs.ko

Создаем pool main-pool:
# zpool create -m /mnt main-pool da0

Вы сначала ставите загрузчик, а потом отдаёте весь диск под пул, соответственно, загрузчик перетирается zfs'ом. Либо бы отдаёте весь диск da0 под zfs (тогда морока с gpart add ... отпадает), либо вы делаете (создаёте пул на разделе da0p3, а не на всём da0)
Код:
zpool create -m /mnt main-pool da0p3

И ещё: не пробуйте куски инструкций с разных источников. Возьмите официальный и делайте через него. Тренироваться можно и в virtualbox'e.

_________________
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пн 07 май, 2018 11:00 am 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Спасибо, да, нашел свою ошибку. Никакой кэш в итоге не трогал, все заработало на тестовых серверах без проблем. Буду пробовать в эти дни разворачивать боевой сервер.
Выложу два своих варианта по 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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пт 11 май, 2018 10:59 am 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Кто-нибудь сталкивался с работой инкрементных снэпшотов через архивы? Как я понимаю, если у нас имеется снэпшот full, далее я в архив выгружаю снепшоты с ключом "-i" inc1, inc2, inc3, inc4, inc5. При восстановлении нужно развернуть full снэпшот и продолжать разворачивать каждый инкрементный архив руками отдельно - inc1, inc2, inc3, inc4, inc5 ?
И как я понимаю, я не могу запустить передачу комбинированных снимков в новую файловую систему их архивов, как на примере передачи по ssh:
Код:
# zfs receive -d -F pool/fs < /snaps/fs@all-I
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
pool                      428K  16.5G    20K  /pool
pool/fs                    71K  16.5G    21K  /pool/fs
pool/fs@snapA              16K      -  18.5K  -
pool/fs@snapB              17K      -    20K  -
pool/fs@snapC              17K      -  20.5K  -
pool/fs@snapD                0      -    21K  -


Доку oracle читал уже.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пн 14 май, 2018 1:41 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 26 мар, 2007 6:04 pm
Сообщения: 1117
Откуда: Kiev
Тут нет понятия full/не-full снепшотов. снепшотов - это снимок ФС на конкретный момент времени и он хранит лишь дельту между датой снимка и текущим моментом. Если есть несколько снепшотов, то все промежуточные снепшоты хранят тоже дельту, между временем создания и ближайшим следующим снепшотом.
Что такое комбинированные снимки?

_________________
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пн 14 май, 2018 4:50 pm 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Добрый день! После переноса боевого сервера на новый, возникла проблема со свапом, точнее отсутствием...
Кто может подсказать, куда смотреть?

Код:
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:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 15 май, 2018 11:42 am 
Не в сети

Зарегистрирован: Ср 11 апр, 2018 6:15 pm
Сообщения: 11
Поправил /etc/fstab.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot], Google Feedfetcher


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика