Перемещение файловой системы ZFS от одного пула до другого

От man batch:

пакет выполняет команды, когда уровни системной нагрузки разрешают; другими словами, когда среднее число загрузки опускается ниже 1.5, или значение, указанное в вызове фактического времени отправления.

Я думаю, что это могло бы быть тем, что Вы ищете. Это - часть Debian at пакет.

18
задан 26 November 2009 в 21:02
4 ответа

Вопрос об отключении сервисов по существу зависит от самих сервисов:

  • Они активно пишут в файловую систему, которую Вы планируете переместить?
  • Они хранят персистентные данные, которые Вы хотите сохранить.

В любом случае отправка файловой системы ZFS могла бы занять много времени. Возможно минимизировать сервисную недоступность путем сохранения их онлайн большую часть времени тем путем:

  • создайте снимок
  • отправьте тому снимку путь, ранее предложенный, но при сохранении всех сервисов активными
  • когда фс будет получена на другом пуле, отключите критические сервисные границы к той файловой системе. Удостоверьтесь, что новая файловая система на целевом пуле не изменяется, поскольку изменения будут отменены позже так или иначе.
  • создайте второй снимок (например, snapshot2)
  • отправьте тот второй снимок инкрементно, который будет намного более быстрым что предыдущая передача. например:

    zfs отправляют,-i rpool/filesystem@snapshot rpool/filesystem@snapshot2 | zfs получают-F destinationpool/filesystem

  • при выполнении переместите точку монтирования файловой системы от старого набора данных до нового. например:

    zfs set mountpoint=/application/directory.old rpool/filesystem
    

    zfs устанавливают точку монтирования =/application/directory место назначения/файловая система

Необходимо удостовериться, что никакой процесс не связывается с /application/filesystem (например: доступ к файлам или наличие его как его текущий каталог) для достижения этого.

  • повторно включите сервис (сервисы), и Вы сделаны.
15
ответ дан 2 December 2019 в 20:21

Я не думаю, что это может быть выполнено онлайн, но мой процесс должен был бы завершить работу необходимых сервисов, взять снимок и использовать zfs, отправляют/получают для создания миграции. Что-то как:

zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem

Править:

При установке "команды" представления канала (объем плазмы) можно контролировать состояние передачи с:

zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem
10
ответ дан 2 December 2019 в 20:21

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

Если у вас есть подфайловые системы, вы захотите использовать флаг -r в команде zfs snapshot и -r Флаг или -R в команде zfs send . -R в верхнем регистре перемещает все свойства , снимки и клоны.

Чтобы переместить весь пул:

zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool

затем синхронизировать изменения для более короткого периода миграции завершение работы приложений, завершение работы samba, nfs

zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool

Если вы создаете несколько промежуточных моментальных снимков для миграции, прочтите страницу руководства о переключателе zfs send -I .

10
ответ дан 2 December 2019 в 20:21

Вы также найдете некоторые преимущества в использовании такого инструмента, как «mbuffer» в конвейере; очевидно, что производительность отправки / получения ZFS значительно улучшается, если оба конца могут в основном передавать данные непрерывно, а без mbuffer (или чего-то подобного) вы получаете эффект пинг-понга, когда один постоянно блокирует другой.

4
ответ дан 2 December 2019 в 20:21

Теги

Похожие вопросы