服务器重启后 CentOS7 Targetcli 配置丢失

服务器重启后 CentOS7 Targetcli 配置丢失

服务器重启后 Targetcli 配置丢失,我尝试从备份文件恢复配置,targetcli restoreconfig <backupFile>命令的输出信息为配置未恢复storageobjects or targets present, not restoring。下面是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.

答案1

确保重新启动之前已启用该服务:

systemctl 启用目标

在这里有帮助。

神秘

答案2

如果您使用 LVM 管理的存储池作为后台存储设备,则应确保 LVM/Devicemapper 丢弃第二层 VG/LV。

我所说的第二层 VG/LV 是指;例如:

假设下面的 LV(DISK_1)有另一个由 iSCSI 客户端初始化的 VG,用于客户端内的服务。一个磁盘中将有两个不同的 VG 层,一个 VG 位于另一个 VG 中。

如果您的 LVM 子系统扫描第一层 LV 中的 VG,则其中新发现的第二层 VG 和 LV 将映射到目标服务器。由于 LV 已映射到目标服务器(通过设备映射器),lio_target 模块将无法将它们加载为后端存储。

[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 和 LV。这就是您一开始没有意识到这个问题的原因。

您应该设置一个 LVM 过滤器来扫描磁盘中的新 VG。请参阅 lvm.conf 手册中的 global_filter。使用此配置,您将能够丢弃第二层 VG。以下是上述存储架构的示例,仅扫描 PV 中的 VG,并丢弃其余所有块设备。

[root@target ~]# diff /etc/lvm/lvm.conf{,.orginal}
152d151
<       global_filter = [ "a|/dev/mapper/mpath.|", "r|.*/|" ]
[root@target ~]#

您可以简单地使用脚本在启动后运行“vgchange -an 2nd_layer_VG”并恢复 LIO-target 配置。但我建议使用 LVM 的“global_filter”功能。

注意:在 CentOS 7/Red Hat 7 之前,初始化第二层 LV 没有问题,targetd 仍然能够将它们加载为 LUN。但是,新的 linux-iscsi(LIO) 在这种情况下会失败。我没有进一步研究这个问题。

问候...

答案3

您应该在启动时运行 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 子系统非常重要,因为运行后使用它很危险,因为您可能会对用户数据执行许多潜在的破坏性操作。

答案4

你可以尝试一下:

编辑 /etc/lvm/lvm.conf

添加此内容:

filter = [ "r|/dev/sdb|", "r|/dev/sdc|", "a/.*/" ]

然后在终端执行:

update-initramfs -u -k `uname -r`

然后重启

祝你好运!

相关内容