SAN + RHEL: Последовательность нумерации SCSI устройств
Модераторы: Trinity admin`s, Free-lance moderator`s
SAN + RHEL: Последовательность нумерации SCSI устройств
Господа!
такая вот проблема:
есть сервер (RHEL4) с 2 SCSI дисками. система проинсталирована на sda, sdb используется для хранения данных. + в сервере есть FC-адаптеры по которым с SAN стораджа презентуются виртуальные диски, которые для сервера видятся как локальные SCSI. И вот ведь какая неприятность: при работе сервера ему презентуется диск, он у него появляется как sdc, мы его размечаем, монтируем, всё пучком. Но вот стоит перезагрузиться и этот sdc становится sda, а системный диск который был sda переезжает на sdb и т.д... последствия очевидны. Я догадываюсь, что это происходит из-за того, что первыми по SCSI инициализируются FC-адаптеры, а только потом уже локальные диски. Что я пробовал:
1) использовать udev для переименовывания дисков. я прописывал в правила (которые шли ДО дефолтных) KERNEL="sd*", BUS="scsi", SYSFS={vendor}="HSV210", NAME="hsv%n" Он работал как то странно - т.е. создавал устройство hsv1 но при этом оставлял sda для диска со стораджа. (хотя я не использовал в правиле SYMLINK)
2) Я пробовал в /etc/modprobe.conf ставить модули локальных SCSI карт в начало, а модули FC-карт в конец списка - не помогло.
кто-нибудь может дать дельный совет?
такая вот проблема:
есть сервер (RHEL4) с 2 SCSI дисками. система проинсталирована на sda, sdb используется для хранения данных. + в сервере есть FC-адаптеры по которым с SAN стораджа презентуются виртуальные диски, которые для сервера видятся как локальные SCSI. И вот ведь какая неприятность: при работе сервера ему презентуется диск, он у него появляется как sdc, мы его размечаем, монтируем, всё пучком. Но вот стоит перезагрузиться и этот sdc становится sda, а системный диск который был sda переезжает на sdb и т.д... последствия очевидны. Я догадываюсь, что это происходит из-за того, что первыми по SCSI инициализируются FC-адаптеры, а только потом уже локальные диски. Что я пробовал:
1) использовать udev для переименовывания дисков. я прописывал в правила (которые шли ДО дефолтных) KERNEL="sd*", BUS="scsi", SYSFS={vendor}="HSV210", NAME="hsv%n" Он работал как то странно - т.е. создавал устройство hsv1 но при этом оставлял sda для диска со стораджа. (хотя я не использовал в правиле SYMLINK)
2) Я пробовал в /etc/modprobe.conf ставить модули локальных SCSI карт в начало, а модули FC-карт в конец списка - не помогло.
кто-нибудь может дать дельный совет?
спасибо, уже разобрался.
Для тех кто интересуется решением проблемы
я просто стал использовать не имена дисков при монтировании (всех дисков и локальных и со стораджа), а их ID.
т.е. в /etc/fstab заместо
/dev/sda1 /disk1 ext3 defaults 1 1
я стал использовать
/dev/disk/by-id/scsi-3600508b40010802f0001000000130000-part1 /disk1 ext3 defaults 1 1
и всё сразу стало на свои места и никуда больше не терялось.
спасибо!
Для тех кто интересуется решением проблемы
я просто стал использовать не имена дисков при монтировании (всех дисков и локальных и со стораджа), а их ID.
т.е. в /etc/fstab заместо
/dev/sda1 /disk1 ext3 defaults 1 1
я стал использовать
/dev/disk/by-id/scsi-3600508b40010802f0001000000130000-part1 /disk1 ext3 defaults 1 1
и всё сразу стало на свои места и никуда больше не терялось.
спасибо!
НО. тут возникло требование обеспечить отказоустойчивость с помощью программного RAID1 по локальным SCSI sda и sdb.
т.е. в /etc/fstab можно будет монтировать по /dev/mdX и т.д.. но вот ведь проблема:
КАК обеспечить для md привязку к определенным партициям дисков? Ведь если не ошибаюсь mdadm работает с /proc/partition а там не содержится UUID. получается если я сейчас соберу md raid, а потом подключу со стораджа дополнительные диски у моего md raid окажутся неверные партиции.
как с этим побороться?
заранее спасибо!
т.е. в /etc/fstab можно будет монтировать по /dev/mdX и т.д.. но вот ведь проблема:
КАК обеспечить для md привязку к определенным партициям дисков? Ведь если не ошибаюсь mdadm работает с /proc/partition а там не содержится UUID. получается если я сейчас соберу md raid, а потом подключу со стораджа дополнительные диски у моего md raid окажутся неверные партиции.
как с этим побороться?
заранее спасибо!
1. Linux именует блочные устройства (диски) в порядке их обнаружения при загрузке системы. Т. е. если у вас первым подгружается модуль fc hba - соот-но LUNs, которые выданы с SAN будут именоваться по порядку начиная с первой буквы (sda, sdb и т. п.) Т. о. в вашем случае надо поменять порядок загрузки модулей (/etc/modprobe.conf для RH начиная с 4-ки или /etc/modules.conf для 3-ки)
2. Если вы хотите уйти от привязки к именам устройств в fstab - самый простой путь для этого- использовать LABEL на диске. С помощью parted задаете метки и прописываете их в fstab в виде
LABEL=/boot /boot ext3 defaults 1 2
Удачи
2. Если вы хотите уйти от привязки к именам устройств в fstab - самый простой путь для этого- использовать LABEL на диске. С помощью parted задаете метки и прописываете их в fstab в виде
LABEL=/boot /boot ext3 defaults 1 2
Удачи
Вся драма состоит в том, что mkinitrd по умолчанию добавляет модули всех установленных контроллеров в initrd. И при загрузке они загружаются по алфавиту, так что lpfc.ko от Emulex загружается раньше, чем mpt-xxx.ko от внутренних дисков на LSI logic.
И получается, что при первых ребутах без SAN sda -- это внутренний диск, а после подключения LUN'ов, sda становится диском из массива и все идентификаторы меняются.
Решение - заставить mkinitrd не добавлять в бутархив драйверы FC HBA - lpfc.ko и ql2*.ko.
А mdadm действительно оперирует UUID'ами устройств, просто их явно не видно. Чтобы показать их вместе с остальными метаданными массива, есть опция --examine:
mdadm --examine /dev/hdb2 | grep UUID
UUID : 1c8261bf:e7fa5787:f3741843:6a6b4222
И получается, что при первых ребутах без SAN sda -- это внутренний диск, а после подключения LUN'ов, sda становится диском из массива и все идентификаторы меняются.
Решение - заставить mkinitrd не добавлять в бутархив драйверы FC HBA - lpfc.ko и ql2*.ko.
А mdadm действительно оперирует UUID'ами устройств, просто их явно не видно. Чтобы показать их вместе с остальными метаданными массива, есть опция --examine:
mdadm --examine /dev/hdb2 | grep UUID
UUID : 1c8261bf:e7fa5787:f3741843:6a6b4222
Не совсем понимаю, причем тут mkinitrd и сортировка при создании загрузочного имиджа..
Еще раз проверил поведение rhel as 4 при разном порядке перечисления модулей в /etc/modprobe.conf
1. cat /etc/modprobe.conf
alias scsi_hostadapter qla2322
alias scsi_hostadapter1 mptbase
alias scsi_hostadapter2 mptscsih
Делаем mkinitrd и перезагружаемся.
#cat /proc/scsi/scsi
Host: scsi3 Channel: 00 Id: 00 Lun: 00
Vendor: HP Model: HSV210 Rev: 5110
Type: RAID ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 01
Vendor: HP Model: HSV210 Rev: 5110
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi0 Channel: 00 Id: 02 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
2. cat /etc/modprobe.conf
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptscsih
alias scsi_hostadapter2 qla2322
Делаем mkinitrd и перезагружаемся.
#cat /proc/scsi/scsi
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi0 Channel: 00 Id: 02 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi0 Channel: 00 Id: 02 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
Соот-но в первом случае мы видим, что диск /dev/sda указывает на FC LUN, во втором - на локальный HDD. И никакая сортировка тут ни при чем.
Еще раз проверил поведение rhel as 4 при разном порядке перечисления модулей в /etc/modprobe.conf
1. cat /etc/modprobe.conf
alias scsi_hostadapter qla2322
alias scsi_hostadapter1 mptbase
alias scsi_hostadapter2 mptscsih
Делаем mkinitrd и перезагружаемся.
#cat /proc/scsi/scsi
Host: scsi3 Channel: 00 Id: 00 Lun: 00
Vendor: HP Model: HSV210 Rev: 5110
Type: RAID ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 01
Vendor: HP Model: HSV210 Rev: 5110
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi0 Channel: 00 Id: 02 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
2. cat /etc/modprobe.conf
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptscsih
alias scsi_hostadapter2 qla2322
Делаем mkinitrd и перезагружаемся.
#cat /proc/scsi/scsi
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi0 Channel: 00 Id: 02 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
Host: scsi0 Channel: 00 Id: 02 Lun: 00
Vendor: SEAGATE Model: ST373207LC Rev: 0003
Type: Direct-Access ANSI SCSI revision: 03
Соот-но в первом случае мы видим, что диск /dev/sda указывает на FC LUN, во втором - на локальный HDD. И никакая сортировка тут ни при чем.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 17 гостей