4.3. Настройка постоянного хранилища
В окружениях с внешними накопителями (например, на основе Fibre Channel или iSCSI) рекомендуется настроить постоянные имена устройств, что облегчит выполнение живой миграции, так как в разных системах будут использоваться одни и те же имена.
Уникальные идентификаторы UUID (Universally Unique Identifier) — стандарт идентификации компьютеров и устройств в распределенных компьютерных окружениях. В этой секции идентификаторы UUID будут использоваться для идентификации LUN iSCSI и Fibre Channel. UUID аналогичен метке устройства и сохраняется между перезагрузками, отключениями и сменой устройств.
Внесите изменения в файл /etc/scsi_id.config
.
Убедитесь, что строка
options=-b
отмечена как комментарий.
# options=-b
Добавьте строку
options=-g
При этом udev
будет подразумевать, что все подключенные устройства SCSI возвращают UUID.
Чтобы отобразить UUID для конкретного устройства, выполните команду scsi_id -g -s /block/sd*
. Пример:
# scsi_id -g -s /block/sd*
3600a0b800013275100000015427b625e
Вывод команды содержит UUID устройства /dev/sdc
.
Убедитесь, что UUID, полученный в результате выполнения команды scsi_id -g -s /block/sd*
, совпадает с идентификатором, получаемым компьютером, который обращается к устройству.
Далее следует создать правило для назначения имени устройству. В каталоге /etc/udev/rules.d
создайте файл 20-names.rules
, в который мы будем добавлять все новые правила. Формат правил:
KERNEL="sd*", BUS="scsi", PROGRAM="/sbin/scsi_id -g -s", RESULT=UUID
, NAME=имя_устройства
Замените UUID
полученным ранее значением, а имя_устройства
именем. Пример правила:
KERNEL="sd*", BUS="scsi", PROGRAM="/sbin/scsi_id -g -s", RESULT="3600a0b800013275100000015427b625e", NAME="rack4row16"
Демон udev
теперь будет искать в правиле все устройства /dev/sd*
для заданного UUID. После подключения найденного устройства в систему ему будет присвоено заданное правилом имя. Так, в нашем примере устройству с UUID равным 3600a0b800013275100000015427b625e будет присвоено имя /dev/rack4row16
.
В файл /etc/rc.local
добавьте строку
/sbin/start_udev
Скопируйте изменения в файлы /etc/scsi_id.config
, /etc/udev/rules.d/20-names.rules
, /etc/rc.local
на всех узлах.
/sbin/start_udev
Сетевые устройства хранения с настроенными правилами теперь будут использовать одинаковые имена на всех узлах, где вы применили изменения. Теперь при миграции гостевых систем между узлами можно использовать общее хранилище, а гостевые системы смогут обращаться к устройствам хранения с помощью своих файлов конфигурации.
В системах с несколькими физическими путями к устройствам хранения используется пакет multipath
, обеспечивающий высокую отказоустойчивость и производительность сетевых устройств хранения, подключенных к системам Linux.
Чтобы обеспечить сохранение постоянства LUN в окружении multipath
, необходимо присвоить псевдонимы многопутевым устройствам. Каждому устройству хранения соответствует UUID, который выполняет функции ключа для создаваемых имен. Определить UUID устройства можно с помощью команды scsi_id
.
# scsi_id -g -s /block/sdc
Многопутевые устройства создаются в каталоге /dev/mpath
. В приведенном ниже примере будет определено 4 устройства в файле /etc/multipath.conf
:
multipaths {
multipath {
wwid 3600805f30015987000000000768a0019
alias oramp1
}
multipath {
wwid 3600805f30015987000000000d643001a
alias oramp2
}
mulitpath {
wwid 3600805f3001598700000000086fc001b
alias oramp3
}
mulitpath {
wwid 3600805f300159870000000000984001c
alias oramp4
}
}
В результате будет создано четыре LUN с именами /dev/mpath/oramp1
, /dev/mpath/oramp2
, /dev/mpath/oramp3
и /dev/mpath/oramp4
. Теперь сопоставление идентификаторов именам будет сохраняться между перезагрузками.