Не удалось отправить zfs | zfs получает наборы данных в том же zpool

У меня две среды: постановка ( постановка ) и развитие ( чанг ). Я не могу реплицировать ( включая моментальные снимки ) из набора данных zfs/staging.assets в другой набор данных zfs/choang.assets пределах того же zpool zfs .

ПРИМЕЧАНИЕ. Я предполагаю, что мне нужно размонтировать как исходные, так и целевые наборы данных.

 zfs unmount zfs/staging.assets zfs unmount zfs/choang.assets zfs send -R zfs/staging.assets | zfs receive -F zfs/choang.assets 

При выполнении вышеуказанных команд генерируется следующая ошибка:

 Error: Unsupported flag with filesystem or bookmark. cannot receive: failed to read from stream 

Когда я удаляю параметр -R и выполняю команды, он преуспевает:

 zfs send zfs/staging.assets | zfs receive -F zfs/choang.assets 

Однако моментальные снимки не получены, и создается один снимок zfs/choang.assets@--head-- .

Наконец, я попытался отправить снимок – подумав, может быть, я могу отправить снимок за раз:

 zfs send zfs/staging.assets@sha512_hash | zfs receive -Fduv zfs/choang.assets 

Это также не сработало и возникла следующая ошибка:

 internal error: Invalid argument cannot receive: failed to read from stream 

Как я могу копировать все снимки?

3 Solutions collect form web for “Не удалось отправить zfs | zfs получает наборы данных в том же zpool”

Используя Send / Receive on ZFS, вы можете использовать его только с моментальными снимками, и нет необходимости размонтировать наборы данных. Вы не сможете отправлять / получать тома.

Команда zfs send создает представление потока моментального снимка, которое записывается на стандартный вывод. По умолчанию генерируется полный поток. Вы можете перенаправить вывод в файл или в другую систему. Команда получения zfs создает моментальный снимок, содержимое которого указано в потоке, который предоставляется на стандартном входе. Если получен полный поток, создается новая файловая система. Вы можете отправлять данные моментального снимка ZFS и получать данные снимков и файловые системы ZFS с помощью этих команд.

Собственные команды:

 zfs send tank/data@snap1 | zfs recv spool/ds01 

Лучший способ отправить / получить снимок zfs – использовать mbuffer для минимизации риска задержки ввода-вывода и заполнения сетевого буфера.

На отправляющей машине:

 zfs send pool/image@test | mbuffer -s 128k -m 1G -O 127.0.0.1:9090 

На приемной машине:

 mbuffer -s 128k -m 1G -I 9090 | zfs receive -F pool/image1 

Поскольку вы можете использовать 127.0.0.1 для одного и того же компьютера или xx.xx.xx.xx для удаленной машины.

Источник: https://docs.oracle.com/cd/E18752_01/html/819-5461/gbchx.html

Здесь важно несколько вещей. Ваши ошибки связаны с их комбинациями:

  • Обычно вы отправляете конкретный снимок или несколько снимков вместо целой файловой системы. Это означает, что вам не нужно размонтировать наборы данных и нарушить работу ваших пользователей, и вы можете поэтапно send/recv позже.
  • Если вы не укажете моментальный снимок источника, вы получите автоматически сгенерированный снимок @--head-- , который является состоянием вашего источника в момент отправки (если бы вы отправили существующий моментальный снимок, этот снимок будет @--head-- место @--head-- на стороне назначения).
  • send -R | recv -F send -R | recv -F означает полную репликацию (рекурсивную и включающую свойства в исходное состояние, уничтожение старых объектов по назначению), поэтому вам нужно решить, как расширить иерархию файловой системы: вы можете использовать флаг -e , -d или no при получении (флаг не означает объединение содержимого в новом наборе данных без сохранения имени родительского набора данных на стороне источника):

     The -d and -e options cause the file system name of the target snapshot to be determined by appending a portion of the sent snapshot's name to the specified target filesystem. If the -d option is specified, all but the first element of the sent snapshot's file system path (usually the pool name) is used and any required intermediate file systems within the specified one are created. If the -e option is specified, then only the last element of the sent snapshot's file system name (ie the name of the source file system itself) is used as the target file system name. 
  • Ваша последняя идея (единая отправка, полный прием) должна работать (я протестировал ее в простой среде, и это действительно сработало), но в любом случае это не так.

Итак, подведем итоги и применим к вашей конкретной ситуации:

  1. Сначала рекурсивно создайте текущий снимок или выберите более старый, содержащий все старые файлы, которые вы хотите реплицировать):

     zfs snapshot -r zfs/staging.assets@now 
  2. Уничтожьте все старые снимки на стороне назначения, которые находятся на стороне источника (показать все снимки с помощью zfs list -Hr -o name -t snap zfs/choang.assets или взять подсказки из сообщения об ошибке). Альтернативно уничтожить набор данных назначения и воссоздать его, если он не содержит ничего важного.

  3. Отправить рекурсивно и полностью получать, уничтожая все старые наборы данных во втором наборе данных, объединяя подданные в место назначения, чтобы они отражали источник:

     zfs send -R zfs/staging.assets@now | zfs recv -Fu zfs/choang.assets 

Обновление ядра недавно произошло на сервере (через CPanel), и сервер не был перезапущен. После просмотра файлов журналов я заметил, что ZFS также обновлен. Я считаю, что команды в этом вопросе не работают из-за конфликта версий между модулем ядра и инструментами CLI.

Я пришел к такому выводу после успешного выполнения следующего на другом сервере.

 # zfs send -R tank1@--refresh-- | zfs recv -Fu tank2 # zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT tank1@turtle 9K - 34K - tank1@tiger 9K - 47.5K - tank1@squirrel 10K - 58.5K - tank1@rabbit 10K - 70K - tank1@owl 11K - 80.5K - tank1@deer 11K - 90.5K - tank1@bear 0 - 106K - tank1@--refresh-- 0 - 106K - tank2@turtle 9K - 34K - tank2@tiger 9K - 47.5K - tank2@squirrel 10K - 58.5K - tank2@rabbit 10K - 70K - tank2@owl 11K - 80.5K - tank2@deer 11K - 90.5K - tank2@bear 1K - 106K - tank2@--refresh-- 0 - 106K - 

Затем я вернулся на исходный сервер и переключил модуль ZFS с DKMS на систему модулей kABI для ядра и перезапустил сервер. Команды выполнены правильно. См. https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS

  • Состояние поддержки ZFS xattr во FreeBSD
  • Получение возвратов Nagios из скрипта через NRPE
  • Почему система не реагирует, когда сетевая нагрузка составляет 90-95 Мбит / с?
  • rsync терпит неудачу / зависает при копировании из Linux ext4 в FreeBSD ZFS (через SSH)
  • Почему dd работает навсегда на диске с 8 ГБ
  • Есть ли способ создания коровьей копии в ZFS?
  • Open ZFS: недавно использованная / часто используемая статистика
  • Получение уровня версии FreeBSD для загрузочной среды ZFS, которая смонтирована, но не загружена
  • Будущее OpenSolaris
  • FreeBSD zfs создает gpt
  • скорость сети по локальной сети
  • Interesting Posts

    Условия, отправленные через ssh, выполняются локально, а не удаленно

    Как установить Ubuntu на динамический диск Windows (схема MBR)?

    Начать bash, затем автозапуск рыбы с помощью терминатора

    Сеть в LXC, не переходящая через мост

    Как автоматически перезапустить программу, когда она приближается к максимальному пределу потока?

    Как я могу получить записи за определенный период времени из файла журнала 400 МБ +?

    Найти последний файл по расширению

    Найдите самые большие файлы или каталоги

    Обновление истории bash на других терминалах при выходе из одного терминала

    Как синхронизировать процессы, запущенные в разных панелях TMUX?

    Что делает CTRL + 4 (и CTRL + \) в bash?

    Создайте символическую ссылку рекурсивно, если файл 1.JPG существует, переименуйте его в 1A.JPG

    Bicon. Неправильный выход из оболочки, открытый в рейнджере

    Переход между Windows и Linux

    Можете ли вы законно продавать модифицированные версии дистрибутивов Linux?

    Linux и Unix - лучшая ОС в мире.