Пока я изучаю RTNETLINK, я понимаю, что ядро отправит RTM_ADDLINK или RTM_DELLINK, если интерфейс добавлен / удален в пространстве ядра. Однако у меня есть вопрос относительно сообщения RTNETLINK при добавлении или удалении Ethernet к / от моста? Поскольку добавление или удаление Ethernet к / от моста фактически не добавляет или не удаляет интерфейс, ниже приведены выходные данные targetcli ls
и systemctl status -l target
targetcli ls
o- / ................................................................................................ [...]
o- backstores ..................................................................................... [...]
| o- block ......................................................................... [Storage Objects: 0]
| o- fileio ........................................................................ [Storage Objects: 0]
| o- pscsi ......................................................................... [Storage Objects: 0]
| o- ramdisk ....................................................................... [Storage Objects: 0]
o- iscsi ................................................................................... [Targets: 1]
| o- iqn.2017-01.com.urgroup-tz:target ........................................................ [TPGs: 1]
| o- tpg1 ...................................................................... [no-gen-acls, no-auth]
| o- acls ................................................................................. [ACLs: 1]
| | o- iqn.2017-01.com.urgroup-tz:initiator ........................................ [Mapped LUNs: 0]
| o- luns ................................................................................. [LUNs: 0]
| o- portals ........................................................................... [Portals: 1]
| o- 0.0.0.0:3260 ............................................................................ [OK]
o- loopback ................................................................................ [Targets: 0]
# systemctl status -l target
● target.service - Restore LIO kernel target configuration
Loaded: loaded (/usr/lib/systemd/system/target.service; enabled; vendor preset: disabled)
Active: active (exited) since Ij 2017-03-10 17:18:43 EST; 1 day 18h ago
Main PID: 1342 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/target.service
Mac 10 17:18:43 server1 target[1342]: Could not create StorageObject tools_disk: Cannot configure StorageObject because device /dev/cl/tools_lv is already in use, skipped
Mac 10 17:18:43 server1 target[1342]: Could not create StorageObject bamboo_disk: Cannot configure StorageObject because device /dev/cl/bamboo_lv is already in use, skipped
Mac 10 17:18:43 server1 target[1342]: Could not create StorageObject metadata_disk: Cannot configure StorageObject because device /dev/cl/ovirt_domain_metadata is already in use, skipped
Mac 10 17:18:43 server1 target[1342]: Could not find matching StorageObject for LUN 2, skipped
Mac 10 17:18:43 server1 target[1342]: Could not find matching StorageObject for LUN 1, skipped
Mac 10 17:18:43 server1 target[1342]: Could not find matching StorageObject for LUN 0, skipped
Mac 10 17:18:43 server1 target[1342]: Could not find matching TPG LUN 0 for MappedLUN 0, skipped
Mac 10 17:18:43 server1 target[1342]: Could not find matching TPG LUN 1 for MappedLUN 1, skipped
Mac 10 17:18:43 server1 target[1342]: Could not find matching TPG LUN 2 for MappedLUN 2, skipped
Mac 10 17:18:43 server1 systemd[1]: Started Restore LIO kernel target configuration.
Перед перезагрузкой убедитесь, что служба включена:
systemctl enable target
Здесь помогает.
mistige
Вы должны запустить target.service при загрузке, чтобы восстановить конфигурацию LIO, а также убедиться, что iscsid.service запущен для экспорта ваших устройств LIO и что tgtd не запущен, так как он будет конфликт с другими демонами LIO.
Должно выглядеть примерно так:
root@centos7host# systemctl | grep "target.service\|iscsi"
iscsi-shutdown.service
loaded active exited Logout off all iSCSI sessions on shutdown
iscsi.service
loaded active exited Login and scanning of iSCSI devices
iscsid.service
loaded active running Open-iSCSI
iscsiuio.service
loaded active running iSCSI UserSpace I/O driver
target.service
loaded active exited Restore LIO kernel target configuration
iscsid.socket
loaded active running Open-iSCSI iscsid Socket
iscsiuio.socket
loaded active running Open-iSCSI iscsiuio Socket
Вы также захотите очистить все, что вы делали до этого, потому что это запутается. У вас, вероятно, есть тома, которые были созданы вне LIO, поэтому, когда вы позже перейдете к управлению ими с помощью targetcli, у вас будут некоторые вещи, которые не экспортируются должным образом, и это может запутать.
Если возможно, я бы рекомендовал стереть систему и начать с чистого листа, если у вас есть такая возможность. Правильная настройка подсистемы iscsi с самого начала очень важна, так как работать с ней после ее запуска опасно, так как у вас есть много потенциально деструктивных действий, которые вы можете сделать с данными ваших пользователей.
В случае, если вы используете пул управляемого хранилища LVM для устройств поддержки, вы должны убедиться, что LVM/Devicemapper отбрасывает VGs/LVs второго уровня.
Что я имел в виду под VGs/LVs второго уровня; например:
Предположим, что нижележащие LVs (DISK_1) имеют другой VG, инициализированный клиентом iSCSI, и используемый для сервисов внутри клиента. Будет два разных VG слоя на одном диске, один VG внутри другого.
Если ваша подсистема LVM сканирует на наличие VG внутри LV первого уровня, вновь обнаруженные VG второго уровня и LV внутри него будут сопоставлены с целевым сервером. Так как LVs картируются на целевой сервер (Devicemapper), lio_target модули не смогут загрузить их в качестве backores.
[root@target ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/mapper/mpatha STORAGE_POOL lvm2 a-- 12.00t 2.50t
[root@target ~]# lvs
LV VG Attr LSize
DISK_1 STORAGE_POOL -wi-ao---- 5.00t
DISK_2 STORAGE_POOL -wi-ao---- 1.00t
DISK_3 STORAGE_POOL -wi-ao---- 2.50t
DISK_4 STORAGE_POOL -wi-ao---- 1.00t
[root@target ~]#
LVM ищет VG и LVs во время загрузки ОС. Поэтому вы не осознали проблему в первую очередь.
Вы должны установить LVM фильтр для поиска новых VG внутри дисков. Смотрите инструкцию lvm.conf для global_filter. Используя эту конфигурацию, вы сможете отбрасывать ВГ второго уровня. Ниже приведен пример вышеописанной архитектуры хранилища, только для сканирования VG внутри PV и отбрасывания остальных блочных устройств.
[root@target ~]# diff /etc/lvm/lvm.conf{,.orginal}
152d151
< global_filter = [ "a|/dev/mapper/mpath.|", "r|.*/|" ]
[root@target ~]#
Вы можете просто использовать скрипт для запуска "vgchange -an 2nd_layer_VG" после загрузки и восстановления LIO-целевой конфигурации. Однако я предлагаю использовать "global_filter" LVM.
Примечание: До CentOS 7/Red Hat 7 не было проблем с инициализацией LV второго уровня, targetd мог загружать их как LUN'ы. Однако, новый linux-iscsi(LIO) в этой ситуации провалился. Я не перенаправлял вопрос дальше.
Regards...