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

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

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

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

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

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

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

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

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

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

вы сделайте

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SSH:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

swapon /dev/da0p2
«Вы никогда не сумеете решить возникшую проблему,
если сохраните то же мышление и тот же подход,
который привёл вас к этой проблеме.»
© Альберт Эйнштейн

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

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

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

Спасибо.