О резервировании SCSI

Я пытаюсь написать программу для блокировки LUN с использованием резервирования SCSI 2.

В резервировании SCSI 2 может ли LUN быть зарезервирован тем же хостом с другим путем или нексус I-T-L - это только один путь.

Например: Допустим, хост пытается зарезервировать уже зарезервированный LUN с той же цели, но с другим портом цели. Это возможно?

По сути, резервирование LUN ​​будет по-прежнему одним и тем же хостом, но с разными путями.

[EDIT] Я получил требуемый ответ по вышеупомянутой проблеме, но у меня есть другой вопрос. Допустим, у хоста есть резервирование на LUN X, и соединение обрывается или хост выдает выход из системы. Что происходит с бронированием? Независимо от того, зависит ли это от драйвера хоста, чтобы очистить резервирование и очистить его данные, или резервирование останется, и другие хосты столкнутся с конфликтом, если попытаются зарезервировать тот же LUN. Я пытался погуглить, но не смог найти характеристики, связанные с этой проблемой.


person lokesharo    schedule 26.05.2015    source источник
comment
Я только что заметил ваше редактирование и ответил ниже. Как правило, на StackOverflow, если у вас есть дополнительные вопросы — даже вопросы в той же области — лучше опубликовать их как собственные (индивидуальные) вопросы. Как только объем вопроса становится слишком широким, ответы перестают быть полезными для других. Это работает лучше всего, когда вопрос и ответ имеют лазерный фокус. Спасибо, но продолжайте задавать вопросы!   -  person Mike Andrews    schedule 26.06.2015


Ответы (1)


Каждая связь I_T_L представляет собой один путь. Когда вы используете команды RESERVE(6) или RESERVE(10), описанные в SPC-2, это то, что вы резервируете. Таким образом, одновременно может быть активен только один путь. Если ты этого хочешь, то ты молодец! (Редактировать: чтобы было ясно, вторая связь I_T_L для выдачи RESERVE получает конфликт резервирования.)

Если ваш инициатор и цель могут справиться с этим, команды PERSISTENT RESERVE/RELEASE в SPC-3 обеспечивают гораздо большую гибкость. Вы можете зарегистрировать каждый нексус в LU, а затем установить резервирование «исключительный доступ только для зарегистрированных», которое блокирует доступ для всех остальных, но разрешает его для зарегистрированных нексусов.

Пример этого можно увидеть в описании ошибки в сценарии ограждения SCSI, используемом в программном обеспечении кластеризации Redhat. Существующее решение не взаимодействовало с многопутевым вводом-выводом, поскольку избыточные пути постоянно сталкивались с конфликтами резервирования. Решение состояло в том, чтобы зарегистрировать все пути: https://bugzilla.redhat.com/show_bug.cgi?id=661134

[EDIT], чтобы ответить на ваш дополнительный вопрос: если соединение обрывается, резервирование все еще сохраняется. Из СПЦ-2:

Эта команда должна запрашивать, чтобы вся логическая единица была зарезервирована для исключительного использования инициатором до тех пор, пока резервирование не будет заменено другой действительной командой RESERVE от того же инициатора или пока не будет освобождено командой RELEASE от того же инициатора, который сделал резервирование, TARGET RESET Функция управления задачей, выполняемая любым инициатором, условием полной перезагрузки или циклом включения.

person Mike Andrews    schedule 27.05.2015
comment
Одновременно может быть активен только один путь. Это звучит правильно. Но предположим, что у хоста есть резервирование SCSI 2 из Target1 Port1, и если хост снова попытается зарезервировать тот же LUN ​​из Target1 Port2, приведет ли это к конфликту резервирования? - person lokesharo; 28.05.2015
comment
Да, с резервированием SCSI-2 (SPC-2) это приведет к конфликту. Это другая связь I_T_L. Такая конфигурация является одной из причин, побудивших разработать постоянное резервирование в SPC-3. Проверьте эту ветку электронной почты на T10 для получения дополнительных разъяснений: t10.org/t10/ t10r/2007/r0701022.htm - person Mike Andrews; 28.05.2015