![Использование пула ZFS с двумя поочередно работающими операционными системами](https://rvso.com/image/154469/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%83%D0%BB%D0%B0%20ZFS%20%D1%81%20%D0%B4%D0%B2%D1%83%D0%BC%D1%8F%20%D0%BF%D0%BE%D0%BE%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D0%BD%D0%BE%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D1%8E%D1%89%D0%B8%D0%BC%D0%B8%20%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%D0%BC%D0%B8.png)
Я перехожу со старой установки 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
хотя это можно переопределить с помощью явной настройки.