이게 내가 한 일이야
다음과 같은 가상 머신이 있습니다.
- 세프 클라이언트
- TGT 서버
- DHCP 서버
머신은 Ceph(RHEL)에 있는 이미지를 노출하고 PXE는 원격 노드(즉, 개시자)를 부팅합니다.
VM을 복제하고 DHCP 서버를 꺼서 복제된 VM에 Ceph 클라이언트와 TGT 서버가 모두 포함되도록 했습니다. 이제 동일한 대상을 노출하는 두 개의 TGT 서버가 있고 파일에 두 TGT 서버의 IP가 있습니다 tftpboot
. 예를 들면 다음과 같습니다.
#!ipxe
sleep 23
set keep-san 1
ifconf --configurator=dhcp net0
sanboot iscsi:10.20.30.1:tcp:3260:1:kumo-dan-installscript-img37 \
iscsi:10.20.30.2:tcp:3260:1:kumo-dan-installscript-img37
boot
노출된 대상은 다음과 같습니다.
[root@bmi-introspect conf.d]# tgt-admin -s
Target 1: kumo-dan-installscript-img37
System information:
Driver: iscsi
State: ready
I_T nexus information:
I_T nexus: 4
Initiator: iqn.2010-04.org.ipxe:4c4c4544-0034-4410-8056-cac04f4c3032 alias: localhost.localdomain
Connection: 0
IP Address: 10.20.30.70
LUN information:
LUN: 0
Type: controller
SCSI ID: IET 00010000
SCSI SN: beaf10
Size: 0 MB, Block size: 1
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
SWP: No
Thin-provisioning: No
Backing store type: null
Backing store path: None
Backing store flags:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 10737 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
SWP: No
Thin-provisioning: No
Backing store type: rbd
Backing store path: bmi-introspect/kumo-dan-installscript-img37
Backing store flags:
Account information:
ACL information:
ALL
노드가 부팅되면 두 개의 드라이브가 표시됩니다.
- 부팅 드라이브가 존재하는 sdb
- sda는 다른 드라이브입니다(멀티패스로 사용됨). 3.device-multimapper-multipath를 설치합니다.
mpathconf --enable --with_multipathd y
mpathconf --enable
파일이 다음과 같이 변경되었습니다
/etc/multipath.conf
.(uncommenting the defaults settings) defaults { polling_interval 10 path_selector "round-robin 0" path_grouping_policy multibus uid_attribute ID_SERIAL # prio alua path_checker readsector0 rr_min_io 100 max_fds 8192 rr_weight priorities failback immediate no_path_retry 5 user_friendly_names yes find_multipaths yes }
systemctl start multipathd; systemctl enable multipathd
- 이제 multipath -ll에서는 장치가 표시되지 않으며
lsblk
드라이브가 mpath로 표시 되지 않습니다. - 노드를 다시 시작하면 하나의 드라이브가 다중 경로 드라이브로 표시됩니다(
lsblk
).
이제 저는 이렇게 합니다:
$ multipath -a /dev/sdb (which is where my boot drive is)
$ dracut --force -H --add multipath
...그런 다음 시스템을 종료하고 다시 시작했습니다.
표시된 노드에 로그인하세요.
[root@localhost ~]# multipath -l mpatha (360000000000000000e00000000010001) dm-0 IET ,VIRTUAL-DISK size=10G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=0 status=active |- 7:0:0:1 sda 8:0 active undef unknown `- 8:0:0:1 sdb 8:16 active undef unknown [root@localhost ~]# multipath -ll mpatha (360000000000000000e00000000010001) dm-0 IET ,VIRTUAL-DISK size=10G features='1 queue_if_no_path' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active |- 7:0:0:1 sda 8:0 active ready running `- 8:0:0:1 sdb 8:16 active ready running [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 10G 0 disk +-mpatha 253:0 0 10G 0 mpath +-mpatha1 253:1 0 476M 0 part /boot +-mpatha2 253:2 0 5G 0 part / sdb 8:16 0 10G 0 disk +-mpatha 253:0 0 10G 0 mpath +-mpatha1 253:1 0 476M 0 part /boot +-mpatha2 253:2 0 5G 0 part /
노트:TGT 서버 중 하나에 오류가 발생하더라도 다중 경로가 작동하고 노드는 두 번째 서버로 동적으로 전송됩니다.
질문
- 이것이 올바른 접근 방식입니까, 아니면 뭔가 빠졌습니까?
- 노드를 다시 시작하려고 하면 두 TGT 서버가 모두 시작될 때까지 기다리고 두 서버에 모두 연결할 수 없으면 시작되지 않습니다(따라서 목적이 무산됨).
이 문제를 해결할 방법이 있나요?