Страница 1 из 1

использование zfs снимков для восстановления "/"

Добавлено: 2012-09-25 3:11:15
carharot
Люди. куда искать, как правильно восстанавливать снимки корневого раздела и таких разделов, как /usr (someone/usr@дата.создания).
Ведь, на лету явно этого делать нельзя, когда открыто много файлов.

Как я понял - только с live-cd. в голове только импровизация, но какая-то не хорошая она получается.

zpool import someone
пул выстрелится туда же, где и live-cd в памяти. в перемешку будут разделы же.

делать zpool import -R someone /другая точка/ - но а точно ли это хорошая идея?
ведь у лэйблов фс инфа, что она есть на корню, а не где-то там в /другая точка/

Прежде чем написать вопрос, рылся в гугле и по мануалам zfs. Есть еще офф руководство. Но там одни "танки/home/test" примеры. То есть, примеры, когда можно делать откат на лету. Не то место, где море конфигов и исполняемых открытых файлов.

Импровизировать желания особого нет, прочитав лишь руководства. Чего велосипед-то открывать.

В надежде, что сюда заглянет человек, кто сам воспроизводил такие действия и не вслепую воспроизводил их.

Re: использование zfs снимков для восстановления "/"

Добавлено: 2012-09-25 11:43:38
skeletor
Я делал это на тестовом серваке http://skeletor.org.ua/?p=2921 . Почитайте полностью. Думаю вам нужно будет импортировать пул в /a и сделать chroot. Дальше уже как обычно zfs rollback. ZFS хранит метки относительно корня пула, так что все потомки будут отталкиваться именно от этого, что очень удобно.
После ребута всё нормально грузиться.

Re: использование zfs снимков для восстановления "/"

Добавлено: 2012-09-25 13:13:54
carharot
мм. Это очень даже очень-супер. надо попробовать.

Re: использование zfs снимков для восстановления "/"

Добавлено: 2012-09-25 13:42:55
carharot
zfs import -f -R /tmp/a zroot прошел на ура, а вот при команде zfs list -t shapsot ругань - failed to initialize ZFS library. live cd девятой fbsd.

как я понял, до чрутенья нужно биндить /proc и /dev. копаю правильное монтирование этих фс.
ибо
mount -t proc none /tmp/a/proc выдает operation not supported by device

2. чрут действительно нужен при роллбэке?

Re: использование zfs снимков для восстановления "/"

Добавлено: 2012-09-25 13:52:11
carharot
сделал rollback без захода. так работает.
во я туплю. вы, наверное, имели ввиду, что чрут нужен для работы в корне такой системы, уже после восстановления.

Re: использование zfs снимков для восстановления "/"

Добавлено: 2012-09-25 13:54:41
skeletor
chroot - не обязательно. Так же мне кажется, что необязательно и биндить /proc, /dev.

Re: использование zfs снимков для восстановления "/"

Добавлено: 2012-09-25 15:52:52
carharot
ну.
сделал себе три файлика.
снимок:

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

#!/bin/sh
#
zfs snapshot zroot@"${1}"
zfs snapshot zroot/usr@"${1}"
zfs snapshot zroot/usr/home@"${1}"
zfs snapshot zroot/usr/home/iron@"${1}"
zfs snapshot zroot/usr/ports@"${1}"
zfs snapshot zroot/usr/ports/distfiles@"${1}"
zfs snapshot zroot/usr/ports/packages@"${1}"
zfs snapshot zroot/usr/src@"${1}"
zfs snapshot zroot/var@"${1}"
zfs snapshot zroot/var/db@"${1}"
zfs snapshot zroot/var/db/pkg@"${1}"
zfs list -t snapshot
пускается он, как snap.sh "тут дату латиницей, без кавычек, или еще что, по желанию".

восстановление. как сработает окружение live cd на #!/bin/sh, правда, еще не в курсе.

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

#!/bin/sh
#
zfs rollback zroot@"${1}"
zfs rollback zroot/usr@"${1}"
zfs rollback zroot/usr/home@"${1}"
zfs rollback zroot/usr/home/iron@"${1}"
zfs rollback zroot/usr/ports@"${1}"
zfs rollback zroot/usr/ports/distfiles@"${1}"
zfs rollback zroot/usr/ports/packages@"${1}"
zfs rollback zroot/usr/src@"${1}"
zfs rollback zroot/var@"${1}"
zfs rollback zroot/var/db@"${1}"
zfs rollback zroot/var/db/pkg@"${1}"
zfs list
удаление:

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

#!/bin/sh
#
zfs destroy zroot@"${1}"
zfs destroy zroot/usr@"${1}"
zfs destroy zroot/usr/home@"${1}"
zfs destroy zroot/usr/home/iron@"${1}"
zfs destroy zroot/usr/ports@"${1}"
zfs destroy zroot/usr/ports/distfiles@"${1}"
zfs destroy zroot/usr/ports/packages@"${1}"
zfs destroy zroot/usr/src@"${1}"
zfs destroy zroot/var@"${1}"
zfs destroy zroot/var/db@"${1}"
zfs destroy zroot/var/db/pkg@"${1}"
zfs list -t snapshot
Неподвижные данные хранятся на других датасетах. фильмы и проч. они часто удаляются, добавляются, а весят дофигищче и я их отдельно засунул. ну и логи не стал добавлять

zfs list
NAME USED AVAIL REFER MOUNTPOINT
zroot 763G 607G 158M /
zroot/swap 4,13G 611G 341M -
zroot/tmp 208K 607G 208K /tmp
zroot/usr 758G 607G 2,88G /usr
zroot/usr/home 754G 607G 244K /usr/home
zroot/usr/home/iron 754G 607G 916M /usr/home/iron
zroot/usr/home/iron/1 753G 607G 753G /usr/home/iron/1
zroot/usr/ports 1,40G 607G 1,16G /usr/ports
zroot/usr/ports/distfiles 250M 607G 250M /usr/ports/distfiles
zroot/usr/ports/packages 144K 607G 144K /usr/ports/packages
zroot/usr/src 499M 607G 499M /usr/src
zroot/var 170M 607G 1,98M /var
zroot/var/crash 148K 607G 148K /var/crash
zroot/var/db 166M 607G 160M /var/db
zroot/var/db/pkg 5,22M 607G 5,22M /var/db/pkg
zroot/var/empty 144K 607G 144K /var/empty
zroot/var/log 1,73M 607G 1,73M /var/log
zroot/var/mail 160K 607G 160K /var/mail
zroot/var/run 296K 607G 296K /var/run
zroot/var/tmp 164K 607G 164K /var/tmp

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

zpool status
  pool: zroot
 state: ONLINE
 scan: resilvered 934G in 3h4m with 0 errors on Sun Sep 23 05:30:08 2012
config:

	NAME        STATE     READ WRITE CKSUM
	zroot       ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    ada0p2  ONLINE       0     0     0
	    ada1p2  ONLINE       0     0     0
	    ada2p2  ONLINE       0     0     0

errors: No known data errors
Еще понравилось то, что при синхронизации нового устройства, с зеркалом, не весь диск клонируется, а лишь информационная его часть.

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

Re: использование zfs снимков для восстановления "/"

Добавлено: 2012-09-25 16:07:08
skeletor
А почему не пользуетесь ключиком -R , что бы рекурсивно удалить, восстанавливать, снапшотить? Сейчас у вас 10 Zfs, а будет 100, что тогда?

Re: использование zfs снимков для восстановления "/"

Добавлено: 2012-09-25 16:11:20
carharot
потому, что там есть датасеты, которые не нужно снапшотить.
если произвести рекурсию, то захватятся и они, как я понял.
будет 10 - пусть будет. потом, я не планирую делать 1000 снимков.