Использование пула ZFS с двумя поочередно работающими операционными системами

Использование пула ZFS с двумя поочередно работающими операционными системами

Я перехожу со старой установки Ubuntu на новую. Во время перехода я хочу иметь возможность использовать один и тот же пул из старой и новой ОС.

Новая ОС будет на другом диске. Я выбираю ОС во время загрузки. Только одна ОС будет использовать пул в любой конкретный момент времени.

Это вообще возможно? Рискую ли я повреждением данных или потерей всего пула?

решение1

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

ZFS действительно, действительно,Действительноне любит, когда один и тот же пул используется несколькими системами одновременно, даже в режиме только для чтения ( -o readonly=onпредоставленном zpool import), но это, похоже, не относится к вашей ситуации.

Чтобы сохранить совместимость между двумя версиями, вам следует убедиться,нетдля запуска zpool upgradeили zfs upgradeособенно из новой установки. Любой из них может привести к потере доступа к пулу или файловой системе при запуске старой установки, но ни один из них не должен приводить к потере пула или файловой системы при запуске системы, поддерживающей обновленную версию ZFS на диске.

После завершения обновления, если вы захотите, вы сможете обновить пул до новейшего формата на диске и функций с помощью zpool upgradeи/или zfs upgradeпо мере необходимости.

решение2

Если предположить, что вы говорите об использовании пула в качестве хранилища данных, а не о запуске в нем системного корня, то все будет в порядке.

В настоящее время у меня установлено две системы, одна на разделе EXT4, а другая в наборе данных zfs, который имеет sudo zfs set mountpoint=/ tank/my/dataset.
Доступ к этому пулу из системы EXT4 — это проблема, потому что zfs mount -aне получится смонтировать root. Поэтому вместо этого вот три способа.

В обоих случаях вам потребуется импортировать пул без его автоматического монтирования.

sudo zpool import tank -N

А) Изменение собственности

sudo mkdir /mnt/mydataset
sudo zfs set mountpoint=/mnt/mydataset tank/my/dataset
sudo zfs mount tank/my/dataset
# [do stuff in /mnt/mydataset]
# ...
sudo zfs unmount tank/my/dataset
# restore mountpoint so that the other system is able to boot from it
sudo zfs set mountpoint=/ tank/my/dataset

Б) Избегатьzfs mount

Если вам надоедает устанавливать точку монтирования туда-сюда, я обнаружил, что следующее тоже работает. Нет никаких гарантий, насколько это хакерски.

sudo mkdir /mnt/mydataset
sudo mount -t zfs -o zfsutil tank/my/dataset /mnt/mydataset
# [do stuff in /mnt/mydataset]
# ...
sudo umount /mnt/mydataset

Обратите внимание, что у меня возникли некоторые проблемы, когда я использовал этот вариант B) для chroot /mnt/mydatasetи затем использовал команды zfs другой системы. Я не знаю, связаны ли эти проблемы. Пока вы не сделаете что-то похожее, у вас все должно быть в порядке.

C) альтернативный корень

Вы можете указать altrootсвойство в пуле.

альтрут
Альтернативный корневой каталог. Если задано, этот каталог добавляется к любым точкам монтирования в пуле. Это может использоваться при проверке неизвестного пула, где точкам монтирования нельзя доверять, или в альтернативной среде загрузки, где типичные пути недействительны. не является
altrootпостоянным свойством. Оно действительно только во время работы системы. Настройка altroot по умолчанию на использование, cachefile = noneхотя это можно переопределить с помощью явной настройки.

Связанный контент