Нам приходится регулярно копировать довольно большие файлы из Solaris в Linux (по сети). Сейчас на один файл уходит почти полдня. Файлы в Solaris находятся в файловой системе ZFS.
Вот я и подумал, черт возьми, мы, наверное, сможем смонтировать ZFS на Linux.
Но ZFS не является кластерной (или кластеризуемой) файловой системой.
Гипотеза: Так что я подумал, что мы могли бы, поскольку мы просто копируем из Solaris - мы можем смонтировать ту же файловую систему ZFS только для чтения, так что в этом случае ее не нужно кластеризовать? Поскольку запись будет только на стороне Solaris (мы не можем ее там размонтировать).
Этот ящик Solaris очень занят, и сетевые сетевые карты почти всегда тоже очень заняты. Так что, переместив копирование файлов на FC, это должно быть намного быстрее.
Этот Linux box — виртуальный гость на хосте VMWare. Так что да, можно представить ту же самую FC-структуру этому гостю Linux.
Мысли? Я думаю, что эта часть гипотезы — то, на что я больше всего ищу откликов. Не уверен, возможно ли сделать монтирование ZFS только для чтения на Linux + одновременное монтирование для чтения и записи на Solaris.
решение1
Это вообще невозможно. ZFS не позволяет монтировать на двух хостах одновременно, независимо от прав чтения/прав. Если вы попытаетесь смонтировать его на Linux, пока он смонтирован на Solaris, вам придется сделать это принудительно. Если вы это сделаете, Solaris вылетит с kernel panic. У меня такое случалось с двумя Solaris, когда я принудительно импортировал второй Solaris, когда он был смонтирован на первом. Более того, версия ZFS также будет играть роль, сможете ли вы импортировать zpool на Linux. Если вы хотите попробовать, я предлагаю следующее:
- Клонировать логический том на хранилище
- Сопоставьте клонированный логический раздел с Linux-компьютером
- Попробуйте смонтировать zpool на Linux
решение2
Что мешает этому, так это то, что ZFS кэширует метаданные в памяти, поскольку предполагает, что это единственный, кто меняет состояние диска. Какой бы хост ни был смонтирован для чтения/записи, все должно быть в порядке. На другом хосте, смонтированном только для чтения, метаданные будут меняться из-под него, и в какой-то момент (довольно быстро) он прочитает блок с диска в месте, которое, как он считал, имело допустимые метаданные, но было перезаписано другой системой.
Вы можете попробовать метод клонирования lun, описанный BitsOfNix, или вы можете попробовать настроить периодический скрипт snapshot/send/recv, чтобы попытаться поддерживать актуальность. Или вы можете попробовать поделиться набором данных с хоста solaris и смонтировать его через NFS на хосте Linux.