# Конфигурация по умолчанию для Open-iSCSI. # # Примечание: Чтобы установить любое из этих значений для конкретного узла/сессии, # используйте команду iscsiadm --mode node --op для соответствующего значения. # Подробности о команде --op см. в файле README и в справочной странице для iscsiadm. # ###################### # Конфигурация демона iscsid ###################### # # Если вы хотите, чтобы iscsid запускался при первом обращении к нему инструмента iSCSI, # вместо запуска при выполнении инициализационных скриптов, укажите команду запуска iscsid здесь. # Обычно это требуется только для сопровождающих пакетов дистрибутивов. # Если демон iscsid работает постоянно, оставьте этот атрибут закомментированным. # # По умолчанию для Fedora и RHEL. Раскомментируйте для активации. # iscsid.startup = /bin/systemctl start iscsid.socket iscsiuio.socket # # По умолчанию для Debian и Ubuntu. Раскомментируйте для активации. # iscsid.startup = /bin/systemctl start iscsid.socket # # По умолчанию, если не используется systemd. Раскомментируйте для активации. # iscsid.startup = /usr/bin/service start iscsid # Проверять наличие активных точек монтирования на устройствах, доступных через сессию, # и отказываться от выхода из сессии, если такие точки есть. По умолчанию "No". # iscsid.safe_logout = Yes # Требовать только UID-аутентификацию для MGMT IPC, а не имя пользователя. # Проверка имени пользователя — устаревшая практика безопасности, и она находится на пути к устареванию. # Установите "No" для совместимости с устаревшими системами. # По умолчанию "Yes". # iscsid.ipc_auth_uid = No ############################# # Настройки NIC/HBA и драйверов ############################# # Open-iSCSI может создавать сессию и привязывать её к NIC/HBA. # Для настройки см. пример файла конфигурации iface. #***************** # Настройки запуска #***************** # Чтобы запросить запуск сессии скриптами службы iSCSI, используйте "automatic": # node.startup = automatic # # Для ручного запуска сессии используйте "manual". По умолчанию — manual. node.startup = manual # Для узлов с автоматическим запуском установка этого параметра в "Yes" приведёт к попыткам # входа на каждом доступном интерфейсе, пока одна не завершится успешно, после чего попытки прекращаются. # По умолчанию "No" — попытки входа выполняются на всех доступных интерфейсах одновременно. node.leading_login = No # ************* # Настройки CHAP # ************* # Чтобы включить аутентификацию CHAP, установите node.session.auth.authmethod в CHAP. # По умолчанию — None. # # ПРИМЕЧАНИЕ: В настоящее время этот атрибут проверяется на валидность, но затем игнорируется, # поэтому даже если он установлен в None, CHAP будет использоваться, если заданы учетные данные # (имя пользователя/пароль и, возможно, username_in/password_in). Это поведение устарело, # и в будущем CHAP не будет использоваться, если authmethod установлен в None. # #node.session.auth.authmethod = CHAP # Чтобы настроить, какие алгоритмы CHAP включать, установите # node.session.auth.chap_algs в список, разделённый запятыми. # Алгоритмы должны быть перечислены в порядке убывания предпочтения, # в частности, наиболее предпочтительный алгоритм должен быть первым. # Допустимые значения: MD5, SHA1, SHA256 и SHA3-256. # По умолчанию — MD5. #node.session.auth.chap_algs = SHA3-256,SHA256,SHA1,MD5 # Чтобы задать имя пользователя и пароль CHAP для аутентификации инициатора # целевым устройством, раскомментируйте следующие строки: #node.session.auth.username = username #node.session.auth.password = password # Чтобы задать имя пользователя и пароль CHAP для аутентификации целевого устройства # инициатором, раскомментируйте следующие строки: #node.session.auth.username_in = username_in #node.session.auth.password_in = password_in # Чтобы включить аутентификацию CHAP для сессии обнаружения цели, # установите discovery.sendtargets.auth.authmethod в CHAP. По умолчанию — None. # # См. ПРИМЕЧАНИЕ выше о том, что node.session.auth.authmethod в основном игнорируется. # #discovery.sendtargets.auth.authmethod = CHAP # Чтобы задать имя пользователя и пароль CHAP для сессии обнаружения # для аутентификации инициатора целевым устройством, раскомментируйте следующие строки: #discovery.sendtargets.auth.username = username #discovery.sendtargets.auth.password = password # Чтобы задать имя пользователя и пароль CHAP для сессии обнаружения # для аутентификации целевого устройства инициатором, раскомментируйте следующие строки: #discovery.sendtargets.auth.username_in = username_in #discovery.sendtargets.auth.password_in = password_in # ******** # Таймауты # ******** # # См. раздел "Расширенная конфигурация" в README iSCSI для советов # по настройке таймаутов при использовании multipath или корневой файловой системы через iSCSI. # # Чтобы указать время ожидания восстановления сессии # перед возвратом ошибки SCSI-команд приложению при использовании обработчика ошибок Linux SCSI Layer, # отредактируйте следующую строку. # Значение в секундах, по умолчанию — 120 секунд. # Особые значения: # - Если значение равно 0, ввод-вывод будет немедленно завершён с ошибкой. # - Если значение меньше 0, ввод-вывод останется в очереди до восстановления сессии # или до выполнения пользователем команды logout. node.session.timeo.replacement_timeout = 120 # Чтобы указать время ожидания завершения входа, отредактируйте следующую строку. # Значение в секундах, по умолчанию — 15 секунд. node.conn[0].timeo.login_timeout = 15 # Чтобы указать время ожидания завершения выхода, отредактируйте следующую строку. # Значение в секундах, по умолчанию — 15 секунд. node.conn[0].timeo.logout_timeout = 15 # Интервал времени ожидания перед отправкой пинга по соединению. # Значение в секундах, по умолчанию — 5 секунд. node.conn[0].timeo.noop_out_interval = 5 # Чтобы указать время ожидания ответа на Nop-out перед завершением соединения с ошибкой, # отредактируйте эту строку. Ошибка соединения приведёт к возврату ввода-вывода в слой SCSI. # Если используется dm-multipath, ввод-вывод будет передан в слой multipath. # Значение в секундах, по умолчанию — 5 секунд. node.conn[0].timeo.noop_out_timeout = 5 # Чтобы указать время ожидания ответа на команду abort # перед завершением операции с ошибкой и попыткой сброса логического устройства, # отредактируйте следующую строку. # Значение в секундах, по умолчанию — 15 секунд. node.session.err_timeo.abort_timeout = 15 # Чтобы указать время ожидания ответа логического устройства # перед завершением операции с ошибкой и попыткой восстановления сессии, # отредактируйте следующую строку. # Значение в секундах, по умолчанию — 30 секунд. node.session.err_timeo.lu_reset_timeout = 30 # Чтобы указать время ожидания ответа цели # перед завершением операции с ошибкой и попыткой восстановления сессии, # отредактируйте следующую строку. # Значение в секундах, по умолчанию — 30 секунд. node.session.err_timeo.tgt_reset_timeout = 30 # Значение в секундах, по умолчанию — 60 секунд. node.session.err_timeo.host_reset_timeout = 60 #****** # Повторы #****** # Чтобы указать количество попыток входа, которые должен выполнить iscsid, # если попытка входа завершилась с ошибкой из-за истечения node.conn[0].timeo.login_timeout, # измените следующую строку. Обратите внимание, что если вход завершается быстро # (до истечения node.conn[0].timeo.login_timeout) из-за ошибки сетевого уровня или цели, # iscsid может повторить попытку входа больше, чем node.session.initial_login_retry_max раз. # # Это количество повторов вместе с node.conn[0].timeo.login_timeout # определяет максимальное время, которое iscsid будет пытаться # установить начальный вход. node.session.initial_login_retry_max умножается # на node.conn[0].timeo.login_timeout для определения максимального времени. # # По умолчанию node.session.initial_login_retry_max равно 8, # а node.conn[0].timeo.login_timeout равно 15, так что: # # node.conn[0].timeo.login_timeout * node.session.initial_login_retry_max = 120с # # Допустимые значения — любое целое число. Это влияет только на начальный вход. # Установка высокого значения может замедлить запуск службы iSCSI. # Установка низкого значения может привести к тому, что сессия не будет установлена, # если во время запуска есть сбои или сеть не готова. node.session.initial_login_retry_max = 8 ################################ # Глубина очереди сессии и устройства ################################ # Чтобы контролировать, сколько команд будет помещено в очередь сессии, # установите node.session.cmds_max в целое число от 2 до 2048, являющееся степенью 2. # По умолчанию — 128. node.session.cmds_max = 128 # Чтобы контролировать глубину очереди устройства, # установите node.session.queue_depth в значение от 1 до 1024. # По умолчанию — 32. node.session.queue_depth = 32 ################################## # НАСТРОЙКИ ПРОИЗВОДИТЕЛЬНОСТИ СИСТЕМЫ ################################## # Для программного iSCSI (iscsi_tcp) и iser (ib_iser) каждая сессия # имеет поток, используемый для передачи или постановки данных в очередь на оборудование. # Для cxgb3i создаётся поток на каждый хост. # # Установка более низкого приоритета потока может привести к более высокой пропускной способности # и меньшим задержкам. Наименьшее значение — -20. Установка более высокого приоритета # может снизить производительность ввода-вывода, но если потоки iSCSI или SCSI # доминируют в использовании процессора, вы можете захотеть установить более высокое значение. # # Примечание: Для cxgb3i все сессии должны иметь одинаковое значение. # В противном случае поведение не определено. # # Это делается путём сканирования /proc/PID/stat, и это не работает в # новых ядрах (6.* и выше), так как поток передачи workqueue может быть # пассивным и не отображаться в таблице процессов, когда он не выполняет работу. # Если соответствующий процесс workqueue найден и приоритет не равен нулю, # то при создании сессии приоритет этого процесса будет изменён. # # Примечание: как указано выше, значение по умолчанию теперь равно нулю, что означает, # что мы не изменяем приоритет процесса передачи workqueue по умолчанию. # Если вы хотите получить предыдущее поведение, установите это значение в -20. # В будущем эта функциональность будет удалена, когда она больше не понадобится. # # Значение по умолчанию — 0. Значение должно быть в диапазоне от -20 до 20. # node.session.xmit_thread_priority = 0 #*************** # Настройки iSCSI #*************** # Чтобы включить управление потоком R2T (т.е. инициатор должен ждать команду R2T # перед отправкой данных), раскомментируйте следующую строку: # #node.session.iscsi.InitialR2T = Yes # # Чтобы отключить управление потоком R2T (т.е. инициатор имеет неявный # начальный R2T в размере "FirstBurstLength" с нулевым смещением), # раскомментируйте следующую строку: # # По умолчанию — No. node.session.iscsi.InitialR2T = No # # Чтобы отключить немедленную передачу данных (т.е. инициатор не отправляет # неподтверждённые данные вместе с PDU команды iSCSI), # раскомментируйте следующую строку: # #node.session.iscsi.ImmediateData = No # # Чтобы включить немедленную передачу данных (т.е. инициатор отправляет # неподтверждённые данные вместе с пакетом команды iSCSI), # раскомментируйте следующую строку: # # По умолчанию — Yes. node.session.iscsi.ImmediateData = Yes # Чтобы указать максимальное количество неподтверждённых байтов данных, # которые инициатор может отправить в PDU iSCSI цели, # отредактируйте следующую строку. # # Значение — количество байтов в диапазоне от 512 до (2^24-1), # по умолчанию — 262144. node.session.iscsi.FirstBurstLength = 262144 # Чтобы указать максимальную полезную нагрузку SCSI, # которую инициатор будет согласовывать с целью, # отредактируйте следующую строку. # # Значение — количество байтов в диапазоне от 512 до (2^24-1), # по умолчанию — 16776192. node.session.iscsi.MaxBurstLength = 16776192 # Чтобы указать максимальное количество байтов данных, # которые инициатор может получить в PDU iSCSI от цели, # отредактируйте следующую строку. # # Значение — количество байтов в диапазоне от 512 до (2^24-1), # по умолчанию — 262144. node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144 # Чтобы указать максимальное количество байтов данных, # которые инициатор будет отправлять в PDU iSCSI цели, # отредактируйте следующую строку. # # Значение — количество байтов в диапазоне от 512 до (2^24-1). # Ноль — особый случай. Если установлено в ноль, инициатор будет использовать # MaxRecvDataSegmentLength цели для MaxXmitDataSegmentLength. # По умолчанию — 0. node.conn[0].iscsi.MaxXmitDataSegmentLength = 0 # Чтобы указать максимальное количество байтов данных, # которые инициатор может получить в PDU iSCSI от цели во время сессии обнаружения, # отредактируйте следующую строку. # # Значение — количество байтов в диапазоне от 512 до (2^24-1), # по умолчанию — 32768. discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768 # Чтобы позволить целям контролировать настройку проверки дайджеста, # с инициатором, запрашивающим предпочтение включения проверки, # раскомментируйте одну или обе следующие строки: #node.conn[0].iscsi.HeaderDigest = CRC32C,None #node.conn[0].iscsi.DataDigest = CRC32C,None # # Чтобы позволить целям контролировать настройку проверки дайджеста, # с инициатором, запрашивающим предпочтение отключения проверки, # раскомментируйте одну или обе следующие строки: #node.conn[0].iscsi.HeaderDigest = None,CRC32C #node.conn[0].iscsi.DataDigest = None,CRC32C # # Чтобы включить проверку дайджеста CRC32C для заголовка и/или данных # PDU iSCSI, раскомментируйте одну или обе следующие строки: #node.conn[0].iscsi.HeaderDigest = CRC32C #node.conn[0].iscsi.DataDigest = CRC32C # # Чтобы отключить проверку дайджеста для заголовка и/или данных # PDU iSCSI, раскомментируйте одну или обе следующие строки: #node.conn[0].iscsi.HeaderDigest = None #node.conn[0].iscsi.DataDigest = None # # По умолчанию DataDigests и HeaderDigests не используются. # # Для конфигураций с множественными путями вы можете захотеть, # чтобы на каждом iface создавалось более одной сессии. # Если node.session.nr_sessions больше 1, выполнение 'login' для этого узла # гарантирует создание соответствующего количества сессий. node.session.nr_sessions = 1 # Когда iscsid запускается, он восстанавливает существующие сессии (если это возможно). # Если цель для сессии исчезла во время этого процесса, # демон iscsid обычно пытается восстановить каждую сессию # последовательно в фоновом режиме, повторяя попытки каждые две секунды, # пока все сессии не будут восстановлены. Эта конфигурационная переменная # может ограничить количество повторных попыток для каждой сессии. # Например, установка reopen_max=150 означает, что восстановление каждой сессии # будет ограничено примерно пятью минутами. node.session.reopen_max = 0 # Когда цели iSCSI исчезают по любой причине, например, из-за отключения портов, # проблем с сетью или других причин, существующие сессии будут повторно пытаться # восстановиться демоном iSCSI, и каждая попытка будет иметь интервал # 3 секунды/DefaultTime2Wait. Таким образом, логирование повторного открытия сессии # происходит каждые 3 секунды и может перегружать систему логирования. # Чтобы избежать перегрузки системы логирования, # раскомментируйте следующий параметр конфигурации и измените значение # с 1 на желаемое, например, 2, 3 или 4, и перезапустите iscsid, # а также выполните повторное обнаружение целей iSCSI. # Если значение этого параметра равно 4, # то логи повторного открытия сессий будут записываться каждые 12 секунд # (4 * 3 секунды = 12 секунд). Значения ниже 1 интерпретируются как 1 (по умолчанию). # node.session.sess_reopen_log_freq = 1 #************ # Обходные решения #************ # Некоторые цели, такие как IET, предпочитают, чтобы инициатор не отвечал на PDU, # такие как R2T, после отправки функции управления задачами, например, ABORT TASK # или LOGICAL UNIT RESET. Чтобы использовать это поведение, # раскомментируйте следующую строку. # По умолчанию — Yes. node.session.iscsi.FastAbort = Yes # Некоторые цели, такие как Equalogic, предпочитают, чтобы инициатор продолжал # отвечать на R2T после отправки функции управления задачами, например, ABORT TASK # или LOGICAL UNIT RESET. Чтобы использовать это поведение, # раскомментируйте следующую строку. # node.session.iscsi.FastAbort = No # Чтобы предотвратить автоматическое сканирование, которое может добавить # нежелательные LUN в систему, можно отключить его и разрешить сессиям # выполнять только вручную запрошенные сканирования. # Автоматическое сканирование выполняется при запуске, при входе # и при получении AEN/AER на устройствах, которые это поддерживают. # Для аппаратных драйверов все сессии будут использовать значение, # определённое в файле конфигурации. Этот параметр конфигурации # независим от параметра scsi_mod.scan. По умолчанию — auto. node.session.scan = auto