![服务器重启后 CentOS7 Targetcli 配置丢失](https://linux22.com/image/700473/%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%87%8D%E5%90%AF%E5%90%8E%20CentOS7%20Targetcli%20%E9%85%8D%E7%BD%AE%E4%B8%A2%E5%A4%B1.png)
服务器重启后 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`
然后重启
祝你好运!