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
Сообщения: 1124
Откуда: 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
Сообщения: 2
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
Сообщения: 1124
Откуда: Kiev
NetUser писал(а):
4) Переносить через zfs send работающую базу нельзя, только остановленную.

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

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


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

Зарегистрирован: Пт 03 сен, 2004 1:26 pm
Сообщения: 2305
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
Сообщения: 1124
Откуда: 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
Сообщения: 1124
Откуда: 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
Сообщения: 1124
Откуда: 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], Majestic-12 [Bot]


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

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