У меня есть настройка, в которой одно хранилище SAN, подключенное через FibreChannel, доступно для двух хостов (на уровне блоков). И я хочу создать на хранилище два физических тома lvm2: pv1
и pv2
, пока единственные члены двух групп томов: vg1
и vg2
соответственно. Мои хозяева должны использовать их исключительно и «не трогать друг друга».
Поскольку SAN виден обоим хостам, структура lvm будет видна обоим. (Я тестировал это: создание логических томов на одном хосте приводит к тому, что они становятся видимыми для другого в / dev / mapper). Я хочу убедиться, что host1
будет только изменять vg1
и host2
будет только изменять vg2
для предотвращения повреждения данных.
Гарантируется ли, что когда я явно не выполняю какие-либо команды lvm, демоны lvm и ядро не будут перетасовывать экстенты / оптимизировать группу томов, принадлежащую другому хосту, тем самым разрушая ее?
Нет, это ничего не повредит, если группы VG будут видны в обеих системах, но наличие VG, видимых на обоих хостах, опасно (из-за вероятности того, что какой-то процесс, сценарий или человек испортят и выберут неправильный диск для работы. на). Вы можете отфильтровать их, чтобы при выполнении сканирования PV каждый хост игнорировал LUN, к которому он не должен прикасаться. Таким образом, каждый будет обнаруживать только одну группу VG за раз. Это полезно в вашем сценарии и во многих других.
В стороне (и прежде чем я углублюсь в это) вы можете рассмотреть возможность обработки этого на уровне SAN и разделения этих LUN на отдельные цели. Таким образом, базовые блочные устройства никогда даже не попадают в руки «неправильных» инициаторов. Я бы рекомендовал этот вариант по сравнению с другими, если нет действительно хорошая причина, по которой вы хотите, чтобы LUN были видны на обоих хостах одновременно.
В дальнейшем мы рассматриваем создание фильтров в конфигурации LVM. Это контролируется с помощью ряда регулярных выражений, чтобы запретить "pvscan" обнаруживать определенные блочные устройства (или классы блочных устройств). Мы вносим это изменение в файл /etc/lvm/lvm.conf.
Внутри этой конфигурации вы найдете (примерно на полпути) строку, в которой указано «global_filter =». Файл должен дать некоторые подсказки о том, как это использовать, но давайте рассмотрим некоторые концепции.
Во-первых, вы должны разрешать и ограничивать блочные устройства на основе путей, которые не подлежат изменению. НЕ используйте такие вещи, как / dev / sda для выбора диска. Это может измениться, и ваши фильтры не будут надежными. Вместо этого используйте что-то вроде / dev / disk / by-id / или / dev / disk / by-path /. Оба этих каталога содержат символические ссылки, которые используют фактическую информацию о ваших LUN для их идентификации. by-id использует идентификатор SCSI, а by-path использует физический путь хоста и тип шины. По возможности используйте by-id, так как он самый надежный. Поскольку это символические ссылки в вышеупомянутых каталогах, вы можете использовать `ls -l ', чтобы сопоставить их с путями / dev / sd *, которым они соответствуют.
Используя этот путь по идентификатору, вы можете создать глобальный фильтр LVM, чтобы сканирование отклоняло это нежелательное блочное устройство при будущих сканированиях. При построении этой строки сначала ставьте разрешающие записи (обозначается «a»), а затем отклоняйте записи (обозначается «r»). Пример того, как этот фильтр может выглядеть так:
global_filter=[ "a|.*|","r|/dev/disk/by-id/id-of-unwanted-disk.*|" ]
Заявления заключены в квадратные скобки. Заявления заключаются в кавычки и разделяются запятыми. Полосы используются для открытия и закрытия операторов, содержащих косую черту (например, эти). В этом операторе отклонения в соответствии со стандартом регулярных выражений перед звездочкой ставится точка, чтобы определить общий групповой символ. В этой строке говорится: «Разрешить все, кроме этого диска, и все разделы, которые могут быть созданы с этого диска». Этот диск, о котором идет речь, будет LUN, на который LVM не должен смотреть.
Когда вы сохранили это изменение, проверьте его с помощью «pvscan». Если все пошло так, как вы хотели, нежелательный VG больше не будет отображаться. Сделайте то же самое на другом хосте, и у вас будет безопасный фильтр.
А если серьезно, по возможности изолируйте эти LUNS, используя цели iSCSI. Это намного проще и не требует настройки на обоих хостах для успеха.