Как подключить внешнюю файловую систему ZFS без слияния / изменения текущей или внешней файловой системы

Я использую FreeBSD 10.2, используя ZFS в качестве файловой системы (zroot01) . У меня есть внешний жесткий диск с файловой системой ZFS из другой системы FreeBSD 10.2 (zroot02), которую я хочу временно подключить , только для чтения, поэтому я могу удалить некоторые файлы, а затем отключить их. Я не хочу, чтобы внешняя система ZFS сжималась или меняла текущую файловую систему, а также не хочу, чтобы данные на внешнем языке были повреждены / изменены.

Чтобы продемонстрировать, что я пытаюсь выполнить, если бы я использовал UFS, я бы сделал что-то вроде этого:

mount -t ufs -o ro /dev/ada0s2 /mnt/my-fun-mountpoint 

… где /dev/ada0s2 – это раздел на моем внешнем диске, а /mnt/my-fun-mountpoint находится в каталоге /mnt моей существующей операционной системы.

Все поисковые и служебные страницы не дают кристально чистого метода для этого. Какие ответы, которые я нашел, закончили тем, что захватили мою текущую файловую систему и развратили ее без ремонта – явно не результат, который я ищу. Я пытался это сделать некоторое время назад, поэтому я не помню, какие команды я пытался, к сожалению.

Не могли бы вы дать четкие указания относительно того, как это сделать? Спасибо заранее за вашу помощь.

One Solution collect form web for “Как подключить внешнюю файловую систему ZFS без слияния / изменения текущей или внешней файловой системы”

Ну, это действительно зависит от того, как только вы можете читать пул. И нет, это не шутка.

Во-первых, немного терминология: в ZFS вы импортируете пул и, возможно, монтируете (какие-либо) файловые системы внутри него. Вы можете импортировать пул без установки каких-либо файловых систем, передав -N на zpool import а затем позже смонтировать любые требуемые файловые системы с помощью zfs mount . (Это вполне допустимый сценарий, если, например, вы хотите получить доступ только к одной файловой системе из многих или хотите сделать что-то похожее на автономный скраб пула).

ZFS не является большим поклонником по-настоящему доступного для чтения доступа. Например, если ZFS обнаруживает ошибку, которую он может восстановить, я считаю, что он исправит ошибку и напишет восстановленные данные на диск, даже если вы импортировали пул как только для чтения. Я понимаю, что в слове ZFS «только для чтения» применяется только к видимому пользователю состоянию пула и его наборов данных. Если, с другой стороны, вы делаете двоичную копию диска в файл (или набор файлов), делаете эти файлы по-настоящему доступными только для чтения и пытаетесь импортировать пул оттуда, ZFS не сможет импортировать бассейн вообще, как бы вы ни старались. Если вы сделаете файлы доступными для записи, он будет работать нормально. (Я действительно пробовал это всего несколько недель назад, хотя и использовал zvol, и ZFS яростно отказался импортировать пул. Когда я установил zvol для чтения / записи вместо чтения, пул был импортирован отлично.) Другие файловые системы, такие как (в Linux) ext4 и, возможно, другие обрабатывают эту ситуацию несколько изящно, но ZFS не работает.

Если вам не повезло и у вас нет ECC RAM, установленной в системе, в которой вы импортируете пул, то попытка ZFS исправить любые ошибки, с которыми он сталкивается, может на самом деле ухудшить ситуацию , хотя мнения различаются по поводу того, действительно ли это реальный риск на практике. Лично я придерживаюсь мнения, что любые данные, которые мне очень нужны, чтобы защитить с помощью ZFS и моментальных снимков, а также резервное копирование и резервное копирование на уровне хранилища и что еще не заслуживает защиты, предлагаемой ECC RAM, но на многих ПК нет ECC RAM.

Таким образом, вы можете импортировать пул в режиме только для чтения, с определенным альтернативным корнем, чтобы он не наступал на что-либо еще, но вам нужно знать, что он не обязательно действительно доступен только для чтения в криминалистическом смысле. (Тем не менее, он гарантирует, что вы случайно не измените что-либо в пуле.) Чтобы сделать импорт только для чтения, если предположить, что пул называется tank и что узел (-и) устройства доступен /dev доступен в /dev , вы должны использовать команду:

 # zpool import tank -d /dev -o readonly=on -R /mnt/someplace 

Это будет выглядеть в /dev для чего-либо, содержащего пул ZFS с tank имени, импортировать его, временно устанавливая свойство пула readonly на on (что означает, что все инициированные пользователем записи будут отклонены) и временно установив altroot свойства altroot значение /mnt/someplace . (Эти значения свойств являются «временными» в том смысле, что они не сохраняются на диске (дисках) как текущие значения свойств, поэтому, если вы экспортируете и повторно импортируете пул без них, значения вернутся к норме. возможно, будет записано в историю пула, хотя, как только пул будет импортирован, вы можете посмотреть с помощью zpool history tank если вы так склонны.) После того, как пул будет импортирован, вы увидите ваши файлы в / mnt / someplace и будете иметь нормальный, доступ к ним только для чтения, включая любые снимки, которые уже сделаны на наборах данных в пуле.

Учитывая ваш пример, я подозреваю, что вы будете использовать что-то вроде:

 # zpool import zroot02 -d /dev -o readonly=on -R /mnt/my-fun-mountpoint 

Когда вы закончите, не забудьте полностью экспортировать пул:

 # zpool export tank 

или, возможно,

 # zpool export zroot02 

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

  • Попытка проверить повреждение файловой системы ZFS с помощью dd не удается
  • Недопустимая файловая система ZFS не имеет данных
  • Обновление Solaris Live на ZFS: за и против загрузочной среды в новом корневом пуле против существующего корневого пула
  • ZFS в Linux снимок рекурсивно объема и подвыборки
  • Зеркало ZFS на том же диске для резервирования?
  • Сбой umount / home (ZFS) при завершении работы
  • Получение возвратов Nagios из скрипта через NRPE
  • Проблемы с zpool mount при загрузке
  • Как остановить людей, нарушающих dataset ZFS, который используется только для получения?
  • Solaris 11: Доступ к пулу на диске с живого DVD?
  • Неверный порядок запуска службы, когда не загружается в однопользовательский режим
  • Interesting Posts

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

    Команда Bash Получение данных из нескольких файлов и добавление имени файла

    Как вы «отключите» oh-my-zsh (и zsh), не удалив его?

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

    grep с количеством отдельных паттернов

    Двойные кавычки в bash

    Почему я не могу использовать политику REJECT в своей цепочке iptables OUTPUT?

    Как заставить «sox» признать «хромой»?

    утилита регистрации файлов типа буфера

    Сообщение motd, когда я вхожу в систему с помощью ssh, говорит мне, что у меня есть почта, как я могу проверить это?

    Система файлов становится чистой только для чтения; как отладить это?

    Беспроводной интерфейс доступен только при подключении кабеля Ethernet

    nginx: не удалось создать referer_hash, вы должны увеличить referer_hash_bucket_size: 64

    Как передать аргумент в файле .desktop

    Эквивалент ReportBug от Debian для Fedora / Gnome?

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