Files
vtl-appliance/docs/LIBRARY_FIX_REPORT.md
Othman H. Suseno 01080498af feat: Major VTL System Upgrade (Auth, Monitoring, CLI, Installer)
- Web UI:
  - Added secure Authentication system (Login, 2 Roles: Admin/Viewer)
  - Added System Monitoring Dashboard (Health, Services, Power Mgmt)
  - Added User Management Interface (Create, Delete, Enable/Disable)
  - Added Device Mapping view in iSCSI tab (lsscsi output)
- Backend:
  - Implemented secure session management (auth.php)
  - Added power management APIs (restart/shutdown appliance)
  - Added device mapping API
- CLI:
  - Created global 'vtl' management tool
  - Added scripts for reliable startup (vtllibrary fix)
- Installer:
  - Updated install.sh with new dependencies (tgt, sudoers, permissions)
  - Included all new components in build-installer.sh
- Docs:
  - Consolidated documentation into docs/ folder
2025-12-09 18:15:36 +00:00

7.8 KiB

🔍 MHVTL Library Detection Issue - Root Cause Analysis & Fix

📋 Problem Summary

Issue: Library (changer/robot) tidak terdeteksi di lsscsi -g, hanya tape drives yang muncul.

Symptom:

$ lsscsi -g
[0:0:0:0]    disk    QEMU     QEMU HARDDISK    2.5+  /dev/sda   /dev/sg0 
[2:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.5+  /dev/sr0   /dev/sg1 
[3:0:1:0]    tape    IBM      ULT3580-TD8      0107  -          /dev/sg2 
[3:0:2:0]    tape    HP       Ultrium 6-SCSI   0107  -          /dev/sg3 
[3:0:3:0]    tape    HP       Ultrium 6-SCSI   0107  -          /dev/sg4 
[3:0:4:0]    tape    HP       Ultrium 6-SCSI   0107  -          /dev/sg5

Missing: mediumx device (library/changer) yang seharusnya ada di /dev/sg6


🔎 Root Cause Analysis

1. vtllibrary Process Tidak Berjalan

Meskipun script start-mhvtl.sh mencoba menjalankan vtllibrary, processnya gagal start:

$ ps aux | grep vtllibrary
# No output - process not running!

Log menunjukkan:

Starting vtllibrary for library 10...
mhvtl started: 4 drives, 0 libraries  # <-- 0 libraries!

2. Masalah #1: Drive ID Tidak Sesuai Konvensi MHVTL

Konfigurasi Awal (SALAH):

/etc/mhvtl/device.conf:

Library: 10 CHANNEL: 00 TARGET: 00 LUN: 00
Drive: 00 CHANNEL: 00 TARGET: 01 LUN: 00  # ❌ SALAH!
Drive: 01 CHANNEL: 00 TARGET: 02 LUN: 00  # ❌ SALAH!
Drive: 02 CHANNEL: 00 TARGET: 03 LUN: 00  # ❌ SALAH!
Drive: 03 CHANNEL: 00 TARGET: 04 LUN: 00  # ❌ SALAH!

/etc/mhvtl/library_contents.10:

Drive 1: 1  # Mapping drive slot 1 ke drive ID 1
Drive 2: 2  # Tapi drive ID 1,2,3,4 tidak ada di device.conf!
Drive 3: 3
Drive 4: 4

Konvensi MHVTL:

  • Drive ID harus mengikuti format: Library_ID + Slot_Number
  • Untuk Library 10:
    • Slot 1 → Drive ID 11 (10 + 1)
    • Slot 2 → Drive ID 12 (10 + 2)
    • Slot 3 → Drive ID 13 (10 + 3)
    • Slot 4 → Drive ID 14 (10 + 4)

Error yang Terjadi:

$ /usr/bin/vtllibrary 10
error: Can not find entry for '0' in config file

vtllibrary mencari drive dengan ID yang dimapping di library_contents.10, tapi tidak menemukan drive dengan ID tersebut di device.conf.

3. Masalah #2: Syntax Error di start-mhvtl.sh

Kode Awal (SALAH):

/usr/bin/vtllibrary $library > /dev/null 2>&1 &

Seharusnya:

/usr/bin/vtllibrary -q $library > /dev/null 2>&1 &

vtllibrary memerlukan parameter -q untuk queue number:

Usage: /usr/bin/vtllibrary [OPTIONS] -q <Q-number>

Solutions Applied

Fix #1: Update Drive IDs di device.conf

File: /etc/mhvtl/device.conf

Changes:

 Library: 10 CHANNEL: 00 TARGET: 00 LUN: 00
-Drive: 00 CHANNEL: 00 TARGET: 01 LUN: 00
-Drive: 01 CHANNEL: 00 TARGET: 02 LUN: 00
-Drive: 02 CHANNEL: 00 TARGET: 03 LUN: 00
-Drive: 03 CHANNEL: 00 TARGET: 04 LUN: 00
+Drive: 11 CHANNEL: 00 TARGET: 01 LUN: 00
+Drive: 12 CHANNEL: 00 TARGET: 02 LUN: 00
+Drive: 13 CHANNEL: 00 TARGET: 03 LUN: 00
+Drive: 14 CHANNEL: 00 TARGET: 04 LUN: 00

Fix #2: Update Drive Mapping di library_contents.10

File: /etc/mhvtl/library_contents.10

Changes:

 VERSION: 2

-Drive 1: 1
-Drive 2: 2
-Drive 3: 3
-Drive 4: 4
+Drive 1: 11
+Drive 2: 12
+Drive 3: 13
+Drive 4: 14

 Picker 1:

Fix #3: Update start-mhvtl.sh Script

File: /builder/adastra-vtl/scripts/start-mhvtl.sh

Changes:

 for library in $LIBRARY_NUMS; do
     if ! pgrep -f "vtllibrary.*$library" > /dev/null; then
         echo "Starting vtllibrary for library $library..."
-        /usr/bin/vtllibrary $library > /dev/null 2>&1 &
+        /usr/bin/vtllibrary -q $library > /dev/null 2>&1 &
     else
         echo "vtllibrary for library $library is already running"
     fi
 done

🎯 Verification

After Fix:

$ lsscsi -g
[0:0:0:0]    disk    QEMU     QEMU HARDDISK    2.5+  /dev/sda   /dev/sg0 
[2:0:0:0]    cd/dvd  QEMU     QEMU DVD-ROM     2.5+  /dev/sr0   /dev/sg1 
[3:0:0:0]    mediumx ADASTRA  HEPHAESTUS-V     0107  -          /dev/sg6  ✅ LIBRARY DETECTED!
[3:0:1:0]    tape    IBM      ULT3580-TD8      0107  -          /dev/sg2 
[3:0:2:0]    tape    HP       Ultrium 6-SCSI   0107  -          /dev/sg3 
[3:0:3:0]    tape    HP       Ultrium 6-SCSI   0107  -          /dev/sg4 
[3:0:4:0]    tape    HP       Ultrium 6-SCSI   0107  -          /dev/sg5
$ ps aux | grep -E "(vtltape|vtllibrary)" | grep -v grep
root   65804  0.0  0.0  5368  3888 ?  Ss  17:10  0:00 /usr/bin/vtltape -q 11
root   65808  0.0  0.0  5368  3760 ?  Ss  17:10  0:00 /usr/bin/vtltape -q 12
root   65812  0.0  0.0  5368  3760 ?  Ss  17:10  0:00 /usr/bin/vtltape -q 13
root   65816  0.0  0.0  5368  3888 ?  Ss  17:10  0:00 /usr/bin/vtltape -q 14
root   66102  0.0  0.0  3932  2776 ?  Ss  17:11  0:00 /usr/bin/vtllibrary -q 10
$ /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: QEMU     Model: QEMU HARDDISK    Rev: 2.5+
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: QEMU     Model: QEMU DVD-ROM     Rev: 2.5+
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: ADASTRA  Model: HEPHAESTUS-V     Rev: 0107
  Type:   Medium Changer                   ANSI  SCSI revision: 05  ✅
Host: scsi3 Channel: 00 Id: 01 Lun: 00
  Vendor: IBM      Model: ULT3580-TD8      Rev: 0107
  Type:   Sequential-Access                ANSI  SCSI revision: 05
Host: scsi3 Channel: 00 Id: 02 Lun: 00
  Vendor: HP       Model: Ultrium 6-SCSI   Rev: 0107
  Type:   Sequential-Access                ANSI  SCSI revision: 05
Host: scsi3 Channel: 00 Id: 03 Lun: 00
  Vendor: HP       Model: Ultrium 6-SCSI   Rev: 0107
  Type:   Sequential-Access                ANSI  SCSI revision: 05
Host: scsi3 Channel: 00 Id: 04 Lun: 00
  Vendor: HP       Model: Ultrium 6-SCSI   Rev: 0107
  Type:   Sequential-Access                ANSI  SCSI revision: 05

📝 Key Learnings

MHVTL Drive ID Convention

Rule: Drive ID = Library ID (tens digit) + Slot Number (ones digit)

Examples:

Library ID Slot Drive ID Format
10 1 11 10 + 1
10 2 12 10 + 2
10 3 13 10 + 3
10 4 14 10 + 4
30 1 31 30 + 1
30 2 32 30 + 2

vtllibrary Command Syntax

Correct:

/usr/bin/vtllibrary -q <library_id>

Wrong:

/usr/bin/vtllibrary <library_id>  # Missing -q parameter!

Configuration File Relationship

device.conf          library_contents.10
─────────────        ───────────────────
Library: 10     ←──→ VERSION: 2
Drive: 11       ←──→ Drive 1: 11
Drive: 12       ←──→ Drive 2: 12
Drive: 13       ←──→ Drive 3: 13
Drive: 14       ←──→ Drive 4: 14

Both files must reference the same drive IDs for vtllibrary to work correctly.


🚀 Quick Fix Script

A script has been created to automatically fix this issue:

Location: /builder/adastra-vtl/scripts/fix-mhvtl-config.sh

Usage:

sudo bash /builder/adastra-vtl/scripts/fix-mhvtl-config.sh

This script will:

  1. Stop mhvtl service
  2. Backup current configuration
  3. Update drive IDs in device.conf (00→11, 01→12, 02→13, 03→14)
  4. Update drive mappings in library_contents.10
  5. Restart mhvtl service
  6. Verify library is detected

📚 References

  • MHVTL Documentation
  • MHVTL iSCSI Binding Guide: /builder/adastra-vtl/MHVTL_ISCSI_BINDING_GUIDE.md
  • Device Configuration: /etc/mhvtl/device.conf
  • Library Contents: /etc/mhvtl/library_contents.10

Status: RESOLVED
Date: December 9, 2025
Tested On: Ubuntu 24.04.3 LTS, Kernel 6.8.0-88
MHVTL Version: 1.7.2 (commit: 8ef9703)