diff --git a/README.md b/README.md index 6645145..f978378 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Конфигурационные файлы сервисов и утилит Linux +- [open-iscsi](services/open-iscsi/) - [open-isns](services/open-isns/) - [openslp](services/openslp/) diff --git a/services/open-iscsi/etc/iscsi/iscsid.conf b/services/open-iscsi/etc/iscsi/iscsid.conf new file mode 100644 index 0000000..66c8ab4 --- /dev/null +++ b/services/open-iscsi/etc/iscsi/iscsid.conf @@ -0,0 +1,384 @@ +# Конфигурация по умолчанию для 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