- 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
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:
- Stop mhvtl service
- Backup current configuration
- Update drive IDs in device.conf (00→11, 01→12, 02→13, 03→14)
- Update drive mappings in library_contents.10
- Restart mhvtl service
- 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)