ฉันมีเป้าหมายpyTarget iSCSI ฉันสามารถใช้ iPXE เพื่อเชื่อมต่อกับเป้าหมายและติดตั้ง Ubuntu หลังจากติดตั้งแล้ว ฉันไม่สามารถบูตเข้าสู่อิมเมจได้

pyTarget config.xml:

<root>
    <!-- configure target console -->
    <console ip="" port="3260" debug_level="6" />

    <!-- configure the first target -->
    <target name="iscsi" ip="192.168.1.10" port="3260" portal="1">
        <!-- the first iqn of this target configured for disk array -->
        <host name="iqn.2006-11.1" target_pwd="" initiator_pwd="">
            <lun id="0" type="0" path="E:\pyTarget\ubuntu16.ima" capacity="81943040" />
        </host>
    </target>
</root>

คอนโซล pyTarget เมื่อเริ่มต้น:

INFO:   pyTarget 1.5.7.1 2010-12-26
INFO:   start iSCSI Service ...
INFO:   start iSNS Service ...
INFO:   initialize virtual device, please wait...
INFO:   start Http Service ...
DEBUG:  create target iscsi 192.168.1.10 3260 1
DEBUG:  create host iqn.2006-11.1
DEBUG:  target iscsi add host iqn.2006-11.1
DEBUG:  Disk(E:\pyTarget\ubuntu16.ima) : initialize finish!
DEBUG:  host iqn.2006-11.1 add lun 0.
DEBUG:  configure target done
INFO:   initialize finish, start to run ...

เมื่อการติดตั้งเริ่มต้นขึ้น:

DEBUG:  create connect
INFO:   initiator 192.168.1.15:38822 connect.
NEGOTIATION:    SessionType = Discovery
NEGOTIATION:    TargetName = iscsi
NEGOTIATION:    InitiatorName = iqn.2006-11.1
DEBUG:  create session 00023d000000-0001.
DEBUG:  host iqn.2006-11.1 add session 00023d000000-0001.
INFO:   SessionID: 00023d000000-0001
DEBUG:  session 00023d000000-0001 add connect 0.
INFO:   ConnectID: 0
NEGOTIATION:    TargetPortalGroupTag = 1
NEGOTIATION:    HeaderDigest = None
NEGOTIATION:    DataDigest = None
NEGOTIATION:    MaxRecvDataSegmentLength = 32768
NEGOTIATION:    TargetMaxRecvdataLength = 65536
NEGOTIATION:    ErrorRecoveryLevel = 0
NEGOTIATION:    DefaultTime2Retain = 0
NEGOTIATION:    DefaultTime2Wait = 2
NEGOTIATION:    OFMarker = No
NEGOTIATION:    IFMarker = No
DEBUG:  connect 0 login finish
COMMAND:        Text Request
DEBUG:  session 00023d000000-0001 add connect 0.
DEBUG:  host iqn.2006-11.1 remove session 00023d000000-0001.
DEBUG:  destroy session 00023d000000-0001.
DEBUG:  connect 0 finish.
DEBUG:  create connect
DEBUG:  destroy connect 0
INFO:   initiator 192.168.1.15:38824 connect.
NEGOTIATION:    SessionType = Discovery
NEGOTIATION:    TargetName = iscsi
NEGOTIATION:    InitiatorName = iqn.2006-11.1
DEBUG:  create session 00023d000000-0002.
DEBUG:  host iqn.2006-11.1 add session 00023d000000-0002.
INFO:   SessionID: 00023d000000-0002
DEBUG:  session 00023d000000-0002 add connect 0.
INFO:   ConnectID: 0
NEGOTIATION:    TargetPortalGroupTag = 1
NEGOTIATION:    HeaderDigest = None
NEGOTIATION:    DataDigest = None
NEGOTIATION:    MaxRecvDataSegmentLength = 32768
NEGOTIATION:    TargetMaxRecvdataLength = 65536
NEGOTIATION:    ErrorRecoveryLevel = 0
NEGOTIATION:    DefaultTime2Retain = 0
NEGOTIATION:    DefaultTime2Wait = 2
NEGOTIATION:    OFMarker = No
NEGOTIATION:    IFMarker = No
DEBUG:  connect 0 login finish
COMMAND:        Text Request
DEBUG:  session 00023d000000-0002 add connect 0.
DEBUG:  host iqn.2006-11.1 remove session 00023d000000-0002.
DEBUG:  destroy session 00023d000000-0002.
DEBUG:  connect 0 finish.
DEBUG:  create connect
DEBUG:  destroy connect 0
INFO:   initiator 192.168.1.15:38826 connect.
NEGOTIATION:    SessionType = Normal
NEGOTIATION:    TargetName = iscsi
NEGOTIATION:    InitiatorName = iqn.2006-11.1
DEBUG:  create session 00023d010000-0003.
DEBUG:  host iqn.2006-11.1 add session 00023d010000-0003.
INFO:   SessionID: 00023d010000-0003
DEBUG:  session 00023d010000-0003 add connect 0.
INFO:   ConnectID: 0
NEGOTIATION:    TargetPortalGroupTag = 1
NEGOTIATION:    TargetAlias = DESKTOP-54T1C9D
NEGOTIATION:    HeaderDigest = None
NEGOTIATION:    DataDigest = None
NEGOTIATION:    MaxRecvDataSegmentLength = 65536
NEGOTIATION:    TargetMaxRecvdataLength = 65536
NEGOTIATION:    ErrorRecoveryLevel = 0
NEGOTIATION:    DefaultTime2Retain = 0
NEGOTIATION:    DefaultTime2Wait = 2
NEGOTIATION:    OFMarker = No
NEGOTIATION:    IFMarker = No
NEGOTIATION:    MaxConnections = 1
NEGOTIATION:    InitialR2T = Yes
NEGOTIATION:    ImmediateData = Yes
NEGOTIATION:    DataPDUInOrder = Yes
NEGOTIATION:    DataSequenceInOrder = Yes
NEGOTIATION:    MaxOutstandingR2T = 1
NEGOTIATION:    MaxBurstLength = 262144
NEGOTIATION:    FirstBurstLength = 65536
DEBUG:  connect 0 login finish
COMMAND:        SCSI Request
COMMAND:        Inquiry LUN:0
COMMAND:        SCSI Request
COMMAND:        Inquiry LUN:0
COMMAND:        SCSI Request

เมื่อการติดตั้งเสร็จสิ้น & ฉันพยายามบูตเข้าสู่อิมเมจ:

COMMAND:        SCSI Request
COMMAND:        Write(10)  LBA:0x1c40800 LEN:0x8 LUN:0
COMMAND:        SCSI Request
COMMAND:        Write(10)  LBA:0x1c40800 LEN:0x8 LUN:0
COMMAND:        SCSI Request
COMMAND:        Write(10)  LBA:0x1c40800 LEN:0x8 LUN:0
COMMAND:        SCSI Request
COMMAND:        Write(10)  LBA:0x1c40800 LEN:0x8 LUN:0
COMMAND:        SCSI Request
COMMAND:        Write(10)  LBA:0x800 LEN:0x8 LUN:0
COMMAND:        SCSI Request
COMMAND:        Test Unit Ready LUN:0
COMMAND:        SCSI Request
COMMAND:        Test Unit Ready LUN:0
# Install ends here
# Client restarts, attempts to boot to the new install:
DEBUG:  create connect
INFO:   initiator 192.168.1.15:30733 connect.
NEGOTIATION:    SessionType = Normal
WARNING:        initiator name or target name is INVAILD iqn.2006-11.1
DEBUG:  connect 0 finish.

การปล่อยไปที่เชลล์ iPXE และพยายาม manual sanbootจะคายข้อมูลเพิ่มเติม - ข้อผิดพลาดนี้ :

(Error code 3c0d61)
This error originated from one of the following locations within the iPXE source code:
net/tcp/iscsi.c (line 1226)
This error indicates an unexpected status received from the iSCSI target.

Wireshark มีดังต่อไปนี้:

ลูกค้าส่งiSCSI LOGINคำสั่งไปยังโฮสต์ เนื้อหาเด่น:

Key/Value Pairs
    KeyValue: InitiatorName=iqn.2006-11.1
    KeyValue: TargetName=iqn.2006-11.1
    KeyValue: SessionType=Normal
    KeyValue: AuthMethod=CHAP,None

โฮสต์ส่งคืนiSCSI LOGINการตอบกลับเนื้อหาเด่น:

Status: Missing parameter (0x0207)

มีการกล่าวถึงรหัสข้อผิดพลาดนี้สั้น ๆในรายชื่อผู้รับจดหมายนี้แต่ฉันไม่เข้าใจพอที่จะเข้าใจถึงความสำคัญของรหัสนี้

ฉันไม่เข้าใจว่าจู่ๆ ชื่อเป้าหมายหรือชื่อผู้ริเริ่มอาจใช้ไม่ได้ได้อย่างไร หรือพารามิเตอร์ใดขาดหายไป การเชื่อมต่อใช้งานได้จริงเท่านั้นและไม่มีการร้องเรียนใด ๆ ระหว่างการติดตั้ง... ฉันสามารถทำซ้ำได้ - การเริ่มการติดตั้งอีกครั้งไม่ใช่ปัญหา และเสร็จสิ้นด้วยดี (อีกครั้ง) และหลังจากติดตั้งใหม่ ปัญหาเดิมเมื่อฉันพยายามบูต!

สิ่งหนึ่งที่ฉันสังเกตได้คือมีบางอย่างแปลก ๆ เกี่ยวกับรหัสผ่านเปล่าใน iSCSI หรือ PXE ระหว่างการติดตั้ง ubuntu เพื่อให้การเข้าสู่ระบบวอลุ่ม iSCSI เสร็จสมบูรณ์ ฉันต้องกด spacebar หนึ่งครั้ง - มันไม่ยอมรับรหัสผ่านความยาว NULL แม้ว่ารหัสผ่านจะเป็น NULL ในการกำหนดค่า

แต่มันเป็นไปไม่ได้ที่จะป้อน SPACE เป็นรหัสผ่านใน iPXE - พื้นที่ว่างเพียงแห่งเดียวที่ดูเหมือนจะถือเป็น NULL อย่างไรก็ตามการตั้งค่าinitiator_pwdเป็น NULL ไม่ได้ช่วยอะไร

ฉันติดอยู่ที่จุดนี้มาหลายชั่วโมงแล้ว ฉันจะไปจากที่นี่เพื่อแก้ไขปัญหาเพิ่มเติมได้ที่ไหน

แก้ไข: ลืมที่จะเพิ่ม:

การกำหนดค่า iPXE:

#!ipxe
set iscsi-target iscsi:192.168.1.10::::iqn.2006-11.1
set gateway 0.0.0.0
set initiator-iqn iqn.2007-11.1
set keep-san 1
sanboot ${iscsi-target}
boot

ใหม่ config.xml

<!-- configure the first target -->
<target name="iscsi" ip="192.168.1.10" port="3260" portal="1">
    <!-- the first iqn of this target configured for disk array -->
    <host name="iqn.2006-11.1" target_pwd="1" initiator_pwd="1"> # <-- Set passwords to avoid NULL problem, this comment was not part of the actual config
        <lun id="0" type="0" path="E:\pyTarget\ubuntu16.ima" capacity="81943040" />
    </host>
</target>

เชลล์ iPXE หลุดหลังจากสคริปต์ล้มเหลว:

1. dhcp
2. login
   username: iscsi
   password: 1
3. sanboot iscsi:192.168.1.10::::iqn.2006-11.1

การดักจับแพ็กเก็ตใหม่:

iSCSI (Login Command)
    Opcode: Login Command (0x03)
    1... .... = T: Transit to next login stage
    .0.. .... = C: Text is complete
    .... 00.. = CSG: Security negotiation (0x0)
    .... ..01 = NSG: Operational negotiation (0x1)
    VersionMax: 0x00
    VersionMin: 0x00
    TotalAHSLength: 0x00
    DataSegmentLength: 93 (0x0000005d)
    ISID: 40002723b2f3
    TSIH: 0x0000
    InitiatorTaskTag: 0x18ae0002
    CID: 0x0000
    CmdSN: 0x00000000
    ExpStatSN: 0x00000001
    Key/Value Pairs
        KeyValue: InitiatorName=iqn.2007-11.1
        KeyValue: TargetName=iqn.2006-11.1
        KeyValue: SessionType=Normal
        KeyValue: AuthMethod=CHAP,None
    Padding: 000000

iSCSI (Login Response)
    Opcode: Login Response (0x23)
    0... .... = T: Stay in current login stage
    .0.. .... = C: Text is complete
    .... 00.. = CSG: Security negotiation (0x0)
    VersionMax: 0x00
    VersionActive: 0x00
    TotalAHSLength: 0x00
    DataSegmentLength: 0 (0x00000000)
    ISID: 40002723b2f3
    TSIH: 0x0000
    InitiatorTaskTag: 0x18ae0002
    StatSN: 0x00000001
    ExpCmdSN: 0x00000000
    MaxCmdSN: 0x00000000
    Status: Missing parameter (0x0207)

sanboot iscsi:192.168.1.10::::iscsiส่งคืนStatus: Authentication failed (0x0201)ใน wireshark และการดำเนินการที่เกี่ยวข้องไม่ได้รับอนุญาต 410d61ในคอนโซลไคลเอ็นต์

คอนโซล pyTarget:

DEBUG:  create connect
DEBUG:  destroy connect 0
INFO:   initiator 192.168.1.15:1552 connect.
NEGOTIATION:    SessionType = Normal
NEGOTIATION:    TargetName = iscsi
WARNING:        InitiatorName %s do not exist. iqn.2007-11.1
DEBUG:  connect 0 finish.
answer

ข้อความแสดงข้อผิดพลาดล่าสุดพลิกสวิตช์ไฟ น่าอายที่ฉันมีชื่อย้อนหลัง:

ในเชลล์ iPXE:

set initiator-iqn iqn.2006-11.1
sanboot iscsi:192.168.1.10::::iscsi

ตอนนี้ฉันมีบูต...

เพื่อความชัดเจน การกำหนดค่า iPXE จะทำงานเมื่อมีลักษณะดังนี้:

#!ipxe
set iscsi-target iscsi:192.168.1.10::::iscsi
set gateway 0.0.0.0
set initiator-iqn iqn.2006-11.1
set keep-san 1
sanboot ${iscsi-target}
boot