# Force Unlock VM Instructions

**Date**: 2025-12-09  
**Issue**: `qm unlock 100` is timing out

---

## Problem

The `qm unlock` command is timing out, which indicates:
- A stuck process is holding the lock
- The lock file is corrupted or in an invalid state
- Another operation is blocking the unlock

---

## Solution: Force Unlock

### Option 1: Use the Script (Recommended)

**On Proxmox Node (root@ml110-01)**:

```bash
# Copy the script to the Proxmox node
# Or run commands manually (see Option 2)

# Run the script
bash force-unlock-vm-proxmox.sh 100
```

### Option 2: Manual Commands

**On Proxmox Node (root@ml110-01)**:

```bash
# 1. Check for stuck processes
ps aux | grep -E 'qm|qemu' | grep 100

# 2. Check lock file
ls -la /var/lock/qemu-server/lock-100.conf
cat /var/lock/qemu-server/lock-100.conf 2>/dev/null

# 3. Kill stuck processes (if found)
pkill -9 -f 'qm.*100'
pkill -9 -f 'qemu.*100'

# 4. Wait a moment
sleep 2

# 5. Force remove lock file
rm -f /var/lock/qemu-server/lock-100.conf

# 6. Verify lock is gone
ls -la /var/lock/qemu-server/lock-100.conf
# Should show: No such file or directory

# 7. Check VM status
qm status 100

# 8. Try unlock again (should work now)
qm unlock 100
```

---

## If Lock Persists

### Check for Other Issues

```bash
# Check if VM is in a transitional state
qm status 100

# Check VM configuration
qm config 100

# Check for other locks
ls -la /var/lock/qemu-server/lock-*.conf

# Check system resources
df -h
free -h
```

### Nuclear Option: Restart Proxmox Services

**⚠️ WARNING: This will affect all VMs on the node**

```bash
# Only if absolutely necessary
systemctl restart pve-cluster
systemctl restart pvedaemon
```

---

## After Successful Unlock

1. **Monitor VM Status**:
   ```bash
   qm status 100
   ```

2. **Check Provider Logs** (from Kubernetes):
   ```bash
   kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox --tail=50 -f
   ```

3. **Watch VM Resource**:
   ```bash
   kubectl get proxmoxvm basic-vm-001 -w
   ```

4. **Expected Outcome**:
   - Provider will retry within 1 minute
   - VM configuration will complete
   - VM will boot successfully

---

## Prevention

To prevent this issue in the future:

1. **Ensure proper VM shutdown** before operations
2. **Wait for operations to complete** before starting new ones
3. **Monitor for stuck processes** regularly
4. **Implement lock timeout handling** in provider code (already added)

---

**Last Updated**: 2025-12-09  
**Status**: ⚠️ **MANUAL FORCE UNLOCK REQUIRED**

