Files
backup_to_external_m.2/LIVE_USB_MIGRATION_GUIDE.md
root 26f6994e17 feat: complete LVM backup system with external M.2 boot support
MAJOR MILESTONE: Transform backup system into comprehensive LVM migration solution

🎯 LVM Migration & Boot System Complete:
- Complete external M.2 LVM migration capability
- One-button migration from non-LVM to LVM system
- Automatic GRUB repair and boot configuration
- External boot validation and recovery tools

🔧 New Migration Tools Added:
- fix_grub_lvm_boot.sh: Complete GRUB repair for external LVM boot
- automated_clonezilla_backup.sh: Automated backup with Clonezilla integration
- validate_lvm_migration.sh: Comprehensive migration validation
- troubleshoot_migration.sh: Advanced diagnostic and repair tools
- emergency_install.sh: Package installation for live systems
- bootstrap_usb_tools.sh: USB preparation with all dependencies

💾 Backup System Enhancements:
- create_alpine_backup_usb.sh: Alpine Linux live system preparation
- create_clonezilla_backup.sh: Professional backup solution integration
- plug_and_play_backup.sh: Simple automated backup workflow
- lvm_snapshot_backup.sh: LVM snapshot-based incremental backups
- simple_auto_backup.sh: Streamlined backup automation

📋 Documentation & Guides:
- LIVE_USB_MIGRATION_GUIDE.md: Complete migration walkthrough
- DRIVE_SELECTION_REFERENCE.md: Safe drive selection procedures
- Comprehensive troubleshooting and validation procedures
- Step-by-step migration instructions with safety checks

🛡️ Safety & Validation Features:
- Interactive drive selection with confirmation
- Comprehensive pre-migration checks
- Automatic backup validation
- GRUB boot repair with fallback options
- Hardware compatibility verification

🧪 Testing & Debugging:
- Complete GRUB configuration analysis
- LVM volume validation and repair
- Boot sequence troubleshooting
- Hardware connection diagnostics

 Production Ready Status:
- All migration tools tested and validated
- External M.2 boot functionality confirmed
- GRUB configuration properly generates LVM entries
- Kernel files correctly deployed to external boot partition
- EFI bootloader properly configured as 'ubuntu-external'

This completes the transformation from simple backup scripts to a comprehensive
LVM migration and backup system capable of full system migration to external M.2
with proper boot configuration and recovery capabilities.
2025-09-25 20:17:57 +02:00

515 lines
13 KiB
Markdown

# LVM Migration Guide: Live USB to LVM System
## Overview
This guide provides comprehensive instructions for migrating your current non-LVM system to an LVM-based system on an external M.2 SSD. **This migration MUST be performed from a live USB system** to avoid file system conflicts and ensure data integrity.
## Why Migrate to LVM?
**Benefits of LVM System:**
- **Instant Snapshots**: Create consistent backups without downtime
- **Flexible Storage**: Resize volumes dynamically without repartitioning
- **Advanced Backups**: Snapshot-based backups with rollback capability
- **Space Efficiency**: Snapshots only store changes, not full copies
- **System Recovery**: Easy rollback to previous states
## Prerequisites
### Hardware Requirements
- **Live USB System**: Boot from any Linux live USB (Ubuntu, Debian, etc.)
- **Internal Drive**: Your current system (will remain unchanged)
- **External M.2 SSD**: Target drive for LVM system (will be formatted)
- **Sufficient Space**: External drive should be ≥ size of used space on internal drive
### Software Requirements
- Live USB system with LVM tools (will be installed automatically)
- Network connection for package installation
- Root/sudo access on live system
## Before You Begin
### 1. Create Recovery Environment
```bash
# Prepare live USB with migration tools
# Download latest Ubuntu/Debian live ISO
# Flash to USB drive using dd or balenaEtcher
```
### 2. Backup Important Data
⚠️ **CRITICAL**: While the internal drive remains unchanged, create an additional backup of critical data before proceeding.
### 3. Document Current System
```bash
# Boot your current system and document the configuration
lsblk -f > system_layout.txt
df -h > disk_usage.txt
cat /etc/fstab > fstab_backup.txt
```
## Migration Process
### Step 1: Boot from Live USB System
1. **Shutdown your system** completely
2. **Insert live USB** and connect external M.2 SSD
3. **Configure BIOS/UEFI**:
- Set USB as first boot device
- Ensure both internal and external drives are detected
4. **Boot live system**:
- Select "Try Ubuntu" or "Live System" (not "Install")
- Wait for desktop to load completely
5. **Open terminal** and gain root access:
```bash
sudo -i
```
### Step 2: Prepare Live System
```bash
# Download and prepare the migration tools
cd /tmp
git clone <your-repo> backup_tools
cd backup_tools
# Or if you have the tools on external drive already:
mkdir -p /mnt/temp
mount /dev/sda1 /mnt/temp # Adjust device as needed
cp -r /mnt/temp/migration_tools/* /tmp/
umount /mnt/temp
# Prepare the live system
./prepare_live_system.sh
```
**This script will:**
- ✅ Verify you're running from live system
- 📦 Install required packages (lvm2, cryptsetup, rsync, etc.)
- 🔧 Load kernel modules for LVM
- 💽 Detect available drives
- 📁 Create migration workspace
### Step 3: Run Migration Script
```bash
# Execute the migration (this will take 30-90 minutes)
./migrate_to_lvm.sh
```
**The migration process includes:**
1. **Drive Detection** (Automatic):
```
Detecting drives...
Available drives:
1. /dev/nvme0n1 - 477GB Samsung SSD 980 (Internal)
2. /dev/sda - 477GB Samsung T7 (External USB)
Selected drives:
Internal (source): /dev/nvme0n1
External (target): /dev/sda
```
2. **System Analysis**:
- Automatically detects partition layout
- Identifies filesystem types
- Handles encrypted partitions
- Calculates optimal LVM sizes
3. **Confirmation Prompts**:
```
⚠️ WARNING: This will DESTROY all data on /dev/sda!
Migration Summary:
Source: /dev/nvme0n1 (non-LVM system)
Target: /dev/sda (will become LVM system)
Root size: 70G
Home size: 350G
Swap size: 16G
Boot size: 2G
Do you want to continue? [y/N]
```
4. **LVM Layout Creation**:
- Creates GPT partition table
- EFI boot partition (512MB)
- LVM physical volume (remaining space)
- Creates volume group and logical volumes
5. **Data Migration**:
- Mounts source filesystems (handles encryption)
- Copies all system data with rsync
- Preserves permissions, links, and attributes
- Updates system configuration files
6. **System Configuration**:
- Updates /etc/fstab for LVM volumes
- Configures initramfs for LVM support
- Installs and configures GRUB bootloader
- Creates LVM snapshot backup tools
### Step 4: Validation and Testing
```bash
# Validate the migration
./validate_lvm_migration.sh
```
**Validation checks:**
- ✅ LVM volumes created correctly
- ✅ Filesystems are healthy
- ✅ Boot configuration is valid
- ✅ GRUB installation successful
- ✅ System files copied completely
- ✅ LVM snapshot capability working
### Step 5: First Boot Test
1. **Cleanup and shutdown**:
```bash
# Clean up and prepare for reboot
sync
umount -a
shutdown -h now
```
2. **Configure BIOS/UEFI**:
- Boot into BIOS/UEFI settings
- Change boot order: External M.2 SSD as first boot device
- Save and exit
3. **Test boot from external M.2**:
- System should boot normally from external drive
- Login and verify everything works
- Check that all your files and settings are present
4. **Verify LVM system**:
```bash
# Check LVM status
sudo lvs
sudo vgs
sudo pvs
# Check filesystem mounts
df -h
cat /proc/mounts | grep mapper
```
## System Configuration Details
### LVM Layout Created
```
Physical Volume: /dev/sda2
Volume Group: system-vg
Logical Volumes:
├── root (70G) - ext4 - mounted at /
├── home (350G) - ext4 - mounted at /home
├── boot (2G) - ext4 - mounted at /boot
└── swap (16G) - swap - swap space
Additional:
├── /dev/sda1 (512M) - vfat - EFI boot partition - mounted at /boot/efi
└── Free space (~38G) - available for snapshots and volume expansion
```
### Migration Advantages
**Flexibility:**
- Resize any volume without repartitioning
- Add new drives to volume group
- Move logical volumes between physical drives
**Backup & Recovery:**
- Create instant snapshots of any volume
- Rollback changes using snapshots
- Consistent backups without downtime
**Space Management:**
- Thin provisioning support
- Automatic space allocation
- Easy expansion and shrinking
## Using LVM Snapshots
### Basic Snapshot Operations
```bash
# Create snapshots for backup
sudo ./lvm_snapshot_backup.sh backup
# Snapshots are mounted at:
/mnt/backup/root # Snapshot of root filesystem
/mnt/backup/home # Snapshot of home filesystem
/mnt/backup/boot # Snapshot of boot filesystem
# Perform backup to external storage
rsync -avH /mnt/backup/ /path/to/external/backup/
# Clean up snapshots
sudo ./lvm_snapshot_backup.sh remove
```
### Advanced LVM Operations
```bash
# Extend a logical volume (add 10GB to home)
sudo lvextend -L +10G /dev/system-vg/home
sudo resize2fs /dev/system-vg/home
# Create additional logical volume
sudo lvcreate -L 20G -n data system-vg
sudo mkfs.ext4 /dev/system-vg/data
sudo mkdir /data
sudo mount /dev/system-vg/data /data
# Snapshot before system changes
sudo lvcreate -L 5G -s -n root-before-update /dev/system-vg/root
# Rollback if needed
sudo umount /
sudo lvconvert --merge /dev/system-vg/root-before-update
# Reboot to activate rollback
```
## Troubleshooting Guide
### Migration Issues
**Migration Script Fails**
```bash
# Check logs for detailed error information
tail -f /var/log/lvm-migration.log
# Common issues and solutions:
```
| Issue | Cause | Solution |
|-------|-------|----------|
| "Drive not found" | Drive not connected/detected | Check connections, try different USB port |
| "Insufficient space" | Target drive too small | Use larger drive or reduce partition sizes |
| "LVM tools not found" | Missing packages | Run `prepare_live_system.sh` first |
| "Permission denied" | Not running as root | Use `sudo` or `sudo -i` |
| "Mount failed" | Filesystem corruption | Check drive with `fsck` |
**Encrypted Partition Issues**
```bash
# If encrypted partition unlock fails:
sudo cryptsetup luksOpen /dev/nvme0n1p3 temp-unlock
# Enter correct password
sudo cryptsetup close temp-unlock
```
**Drive Detection Problems**
```bash
# Manually check drives
lsblk -dpno NAME,SIZE,MODEL
sudo fdisk -l
# If drives not detected:
sudo partprobe # Re-read partition tables
sudo udevadm settle # Wait for device detection
```
### Boot Issues After Migration
**System Won't Boot from External Drive**
1. **Check BIOS/UEFI Settings**:
- Verify external M.2 is detected in BIOS
- Set correct boot priority
- Enable UEFI boot mode
- Disable Secure Boot if necessary
2. **Repair GRUB from Live USB**:
```bash
# Boot from live USB and mount LVM system
sudo vgchange -ay system-vg
sudo mount /dev/system-vg/root /mnt
sudo mount /dev/system-vg/boot /mnt/boot
sudo mount /dev/sda1 /mnt/boot/efi
# Reinstall GRUB
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian
update-grub
exit
# Cleanup and reboot
sudo umount /mnt/dev /mnt/proc /mnt/sys
sudo umount /mnt/boot/efi /mnt/boot /mnt
sudo reboot
```
**Emergency Recovery**
If external system is completely broken:
1. Change BIOS boot order back to internal drive
2. Boot from original system (unchanged)
3. Re-attempt migration or continue with original system
### LVM Issues
**Volume Group Not Found**
```bash
# Activate volume group manually
sudo vgchange -ay system-vg
# Scan for volume groups
sudo vgscan
sudo pvscan
```
**Snapshot Issues**
```bash
# Remove stuck snapshots
sudo umount /mnt/backup/root /mnt/backup/home 2>/dev/null || true
sudo lvremove -f system-vg/root-snapshot
sudo lvremove -f system-vg/home-snapshot
# Check volume group free space
sudo vgs system-vg
```
**File System Corruption**
```bash
# Check and repair LVM volumes
sudo fsck /dev/system-vg/root
sudo fsck /dev/system-vg/home
sudo fsck /dev/system-vg/boot
```
## Recovery Procedures
### Complete Rollback to Original System
If you decide to abandon LVM migration:
1. **Boot from internal drive**:
- Change BIOS boot order to internal drive
- Boot normally from original system
2. **Reformat external drive** (optional):
```bash
# Wipe LVM configuration
sudo dd if=/dev/zero of=/dev/sda bs=1M count=100
# Or use backup tools to restore external drive
```
3. **Continue with original system**:
- Everything remains as before migration
- Use existing backup tools for regular backups
### Retry Migration
If you want to attempt migration again:
1. **Boot from live USB**
2. **Run migration script again**:
```bash
./migrate_to_lvm.sh
```
- Script will destroy existing LVM setup and recreate
- Source system (internal) remains unchanged
### Disaster Recovery
**If both systems fail:**
1. **Boot from live USB**
2. **Mount internal drive** for data recovery:
```bash
mkdir -p /mnt/recovery
# Mount root partition
sudo mount /dev/nvme0n1p1 /mnt/recovery
# If home is encrypted:
sudo cryptsetup open /dev/nvme0n1p3 recovery-home
sudo mkdir -p /mnt/recovery/home
sudo mount /dev/mapper/recovery-home /mnt/recovery/home
# Copy important data to external storage
rsync -avH /mnt/recovery/home/username/ /path/to/safe/backup/
```
3. **Fresh OS installation** if needed:
- Install fresh OS on any drive
- Restore personal data from backup
## Performance Optimization
### LVM Performance Tuning
```bash
# Enable read-ahead for better performance
sudo blockdev --setra 2048 /dev/system-vg/root
sudo blockdev --setra 2048 /dev/system-vg/home
# Add to /etc/fstab for persistent read-ahead:
# /dev/system-vg/root / ext4 defaults,noatime 0 1
# /dev/system-vg/home /home ext4 defaults,noatime 0 2
```
### Snapshot Management
```bash
# Monitor snapshot usage
sudo lvs -a -o lv_name,lv_size,data_percent system-vg
# Remove old snapshots regularly
sudo lvremove system-vg/old-snapshot-name
# Set up automatic snapshot cleanup (cron job)
echo '0 2 * * * root /usr/local/bin/lvm-snapshot-backup.sh remove' >> /etc/crontab
```
## Best Practices
### Regular Maintenance
1. **Monitor disk space**:
```bash
sudo vgs system-vg # Check volume group free space
df -h # Check filesystem usage
```
2. **Regular snapshots**:
```bash
# Before system updates
sudo lvcreate -L 5G -s -n pre-update-$(date +%Y%m%d) /dev/system-vg/root
# Before major changes
sudo ./lvm_snapshot_backup.sh backup
```
3. **Backup strategy**:
- Daily: LVM snapshots to external storage
- Weekly: Full system backup using existing tools
- Monthly: Verify backup integrity
### Security Considerations
- **Encryption**: Home data is no longer encrypted in LVM setup
- Consider full disk encryption if security is critical
- Use file-level encryption for sensitive data
- **Access Control**: Secure LVM management commands
```bash
# Restrict LVM command access
sudo chmod 750 /usr/local/bin/lvm-*
```
## Summary
The migration successfully transforms your system from traditional partitions to a flexible LVM-based setup, providing:
**Instant snapshots** for consistent backups
**Dynamic volume resizing** without downtime
**Advanced backup strategies** with rollback capability
**Space efficiency** with thin provisioning
**System recovery** options with snapshots
Your original system remains intact as a fallback, making this a low-risk enhancement to your backup and storage capabilities.