Назад | Перейти на главную страницу

при горячем подключении дисков из кабины с волоконно-оптическим каналом сообщается неправильный размер

Во-первых, мы даже не уверены, что это проблема udev, но нам нужно где-то начать спрашивать ... У нас есть Hitachi Fibre Channel SAN, обслуживающий тома на пару машин, на которых работает сервер ubuntu 12.04 amd64.

Для сопоставления мы используем идентификаторы / dev / disk / by-id, созданные udev.

...
/dev/disk/by-id/scsi-1HITACHI_750505270125
/dev/disk/by-id/scsi-1HITACHI_750505270125-part1
/dev/disk/by-id/scsi-1HITACHI_750505270126
/dev/disk/by-id/scsi-1HITACHI_750505270126-part1
...

где последние 4 цифры (0125, 0126, 0127 ...) определяют LUN, созданные на Hitachi, поэтому мы знаем, к какому физическому тому мы обращаемся.

Мы обнаружили странную проблему, когда у нас был том объемом 1,1 Т на LUN 125, и мы разбили его на более мелкие куски со стороны кабины. После переназначения одного из новых дисков серверу кажется, что размер тома кэшируется (см. 1150,5 ГБ размер)...

root@server1:~# fdisk -l /dev/disk/by-id/scsi-1HITACHI_750505270125

Disk /dev/disk/by-id/scsi-1HITACHI_750505270125: 1150.5 GB, 1150514364416 bytes
255 heads, 63 sectors/track, 139875 cylinders, total 2247098368 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

                                      Device Boot      Start         End      Blocks   Id  System
/dev/disk/by-id/scsi-1HITACHI_750505270125-part1              63  1048575999   524287968+  83  Linux

Странно то, что у нас одни и те же тома подключены к другой машине. Они не активны, но все еще видны. Мы наблюдали такое же поведение, но после перезагрузки диски выглядят так, как должны (см. 536,9 ГБ размер):

root@server2:~# fdisk -l /dev/disk/by-id/scsi-1HITACHI_750505270125

Disk /dev/disk/by-id/scsi-1HITACHI_750505270125: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders, total 1048576000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

                                      Device Boot      Start         End      Blocks   Id  System
/dev/disk/by-id/scsi-1HITACHI_750505270125-part1              63  1048575999   524287968+  83  Linux

Забавно то, что мы разбили диск на втором сервере (server2), тот, который видит правильный размер, и на первом сервере (server1) мы можем видеть этот раздел, хотя фактический размер диска все еще старый . Мы даже отформатировали его и смонтировали на server2, написали текстовый файл, размонтировали его, перемонтировали на server1 и, конечно же, мы можем увидеть текстовый файл и получить к нему доступ.

Похоже, где-то попутно кто-то кеширует размеры томов?

На всякий случай, после отсоединения и повторного подключения дисков мы повторно сканируем LUN и запускаем udevadm trigger чтобы обновить дерево udev ...

Нам не очень удобно использовать диски с таким несоответствием, и если нам нужно перезагрузить систему, чтобы показать реальные размеры, мы теряем все преимущества горячего подключения ... Любые идеи о том, как это происходит, и безопасно ли их использовать тома без перезапуска?

В качестве побочного вопроса, когда мы отсоединяем диски от кабины волокна, мы запускаем udevadm trigger и похоже, что udev просто добавляет новые диски (устройства), но не удаляет пропавшие устройства ... так ли это должно быть?

Есть несколько команд, которые используются, поскольку задействовано несколько уровней.

Для обновления / повторного сканирования

FC
Чтобы просто просканировать движение автобуса:

echo "1" > /sys/class/fc_host/hostXYZ/issue_lip
echo "- - -" > /sys/class/scsi_host/hostXYZ/scan

Если вы заранее знаете автобус / цель / лунку, то можете просто сказать:

echo "b t l" > /sys/class/scsi_host/hostXYZ/scan

вы заменяете b t l с автобусной целью и номерами lun.

А SCSI специальная команда для обновления уменьшенного / увеличенного размера диска

echo 1 > /sys/block/sdX/device/rescan

Вам необходимо знать каноническое имя соответствующего диска, например sda.


Чтобы удалить / удалить диск

(вам нужно заменить sda и 0: 0: 0, очевидно)

размонтировать все с этого диска

Удалить из SCSI слой

echo 1 > /sys/class/block/sda/device/delete

Удалить из FC слой

echo 1 > /sys/class/fc_transport/target0\:0\:0/device/0\:0\:0\:0/delete

Теперь вы можете безопасно удалить его из SAN.