zfs: продолжаем send/receive после обрыва связи

Раньше приходилось заново копировать после каждого обрыва. Но потом придумали механизм, основанный на bookmark’ах, который позволяет продолжить копирование с места разрыва.

Solaris (oracle zfs) – доступно в 11.4

# zfs snapshot rpool/test@test
# zfs send -rvp rpool/test@test | zfs receive data/test
  estimating full stream rpool/test@test (size = 1G)
estimated total stream size: 1G
^C
# zfs receive -C data/test | zfs send -rvp -C rpool/test@test | zfs receive data/test
  found bookmark 1:8:c800000:c829000:f18d828d3d3e339a:0:5a1521180b65777a:9dc1777d for rpool/test@test
  send bookmark 8:c800000 in  estimating full stream rpool/test@test (size = 825M)
estimated total stream size: 825M
^C
# zfs receive -C data/test | zfs send -rvp -C rpool/test@test | zfs receive data/test
  found bookmark 1:8:27c00000:27c33a00:f18d828d3d3e339a:0:5a1521180b65777a:9dc0dd7d for rpool/test@test
  send bookmark 8:27c00000 in  estimating full stream rpool/test@test (size = 389M)
estimated total stream size: 389M

Как видим, можно прерывать не один раз и каждый раз продолжит с точки останова. Тоже самое, если на другую машину:

# zfs send pool/diant@snap1 | ssh system2 zfs recv pool/hsolo
^C
# ssh system2 zfs receive -C pool/hsolo | zfs send -C pool/diant@snap1 | ssh system2 zfs receive pool/hsolo

Linux/FreeBSD/Illumos/… (openzfs)

# zfs send pool/diant@snap1 | ssh system2 zfs recv pool/hsolo
^C
system2# zfs get receive_resume_token pool/hsolo
1-d4f61d893-c0-789c636064000310a500c....
# zfs send -v -t 1-d4f61d893-c0-789c636064000310a500c.... pool/diant@snap1 | ssh system2 zfs recv -s pool/hsolo
resume token contents:
nvlist version: 0
 object = 0x8
 offset = 0x35a00000
 bytes = 0x35c35630
 toguid = 0xc237c4c4522d8045
 toname = pool/hsolo@snap1
full send of pool/hsolo@snap1 estimated size is 1.16G
TIME       SENT  SNAPSHOT
17:38:20   263M  pool/hsolo@snap1
17:38:21   472M  pool/hsolo@snap1

В обычном режиме это свойство пустое:

# zfs get receive_resume_token remotepool/to
NAME           PROPERTY              VALUE    SOURCE
remotepool/to  receive_resume_token      -    -

Если вы хотите запретить режим продолжения, нужно использовать ключ -A на принимающей стороне, то есть

zfs send pool/diant@snap1 | ssh system2 zfs recv -A pool/hsolo

3 коментарі до “zfs: продолжаем send/receive после обрыва связи

  1. Антон

    Здравствуйте
    Извиняюсь, что немного не в тему.
    1) Подскажите плз, если есть сервер Sparc T3-1 с системой Solaris 10, то чтобы обновиться до 11.4 мне нужно сначала установить с нуля на этот сервер Solaris 11?
    2) Саппорт давно кончился на сервер, но нашёл на трекере Solaris 11.1 под спарк. Значит мне можно, по идее, установить его и потом обновиться до 11.4?

    1. skeletor Автор запису

      Здравствуйте.
      11.4 не поддерживает Sparc T3-1 (подробнее, здесь https://docs.oracle.com/cd/E37838_01/html/E60973/glmru.html ), поэтому, максимум, что станет – 11.3. Берёте сразу 11.3 и ставите с нуля. Нету обновления с Solaris 10 на 11 – только полный переинстал с нуля с потерей всех данных. В вашем случае, можно даже попробовать перенести Solaris 10 в зону, а global zone оставить в 11.3, если там есть старое ПО, которое не работает с 11.

      1. Антон

        Да, уже перевёл Solaris 10 с ufs на zfs.
        Пробовал накатить на свободные диски Solaris 11, и само собой выдало, то что платформа не поддерживается. После этого еще раз внимательнее глянул сайт и увидел, что там не T3-1 не в “supported platforms”, а в “not supported”.
        Установил 11.3. Пытаюсь завести нативно там ems ericsson.
        Если не взлетит, то попробую в зону с Solaris 10.

        Спасибо!

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься.