Tình huống thực tế: Khi máy ảo “treo cứng” và bạn cần cứu dữ liệu gấp
Lỡ tay sửa nhầm file /etc/fstab hoặc cấu hình sai netplan khiến VM không thể khởi động? Thông thường, bạn phải loay hoay tìm file ISO cứu hộ, gắn vào máy ảo rồi đợi boot vào môi trường Live. Quy trình này thường ngốn ít nhất 15-20 phút quý báu.
Với hệ thống homelab chạy Proxmox VE của mình, việc vọc vạch lỗi hệ thống xảy ra như cơm bữa. Thay vì dùng console chậm chạp, mình chọn Network Block Device (NBD) để “phẫu thuật” ổ đĩa ảo ngay từ máy Host. Cách này cho phép bạn thao tác với file hệ thống của VM như một chiếc USB cắm ngoài, giúp tiết kiệm đến 80% thời gian xử lý sự cố.
Quick Start: Mount ổ đĩa qcow2 trong 3 bước
Dưới đây là quy trình tóm tắt để xử lý nhanh một file .qcow2 (định dạng chuẩn của KVM/QEMU) trên Ubuntu hoặc Debian.
# 1. Cài đặt công cụ và load module
sudo apt update && sudo apt install qemu-utils -y
sudo modprobe nbd max_part=8
# 2. Kết nối image vào thiết bị nbd0
sudo qemu-nbd --connect=/dev/nbd0 /var/lib/vz/images/101/vm-101-disk-0.qcow2
# 3. Mount phân vùng và bắt đầu sửa
# Kiểm tra phân vùng bằng lsblk trước khi mount
sudo mount /dev/nbd0p1 /mnt
Sau khi chỉnh sửa xong, bạn cần ngắt kết nối đúng trình tự để tránh hỏng cấu trúc file (corruption):
sudo umount /mnt
sudo qemu-nbd --disconnect /dev/nbd0
sudo rmmod nbd
Tại sao NBD lại là lựa chọn tối ưu?
NBD không chỉ đơn thuần là một giao thức mạng. Trong ảo hóa, qemu-nbd đóng vai trò như một trình biên dịch. Nó biến các định dạng phức tạp như qcow2, vmdk hay raw thành một thiết bị khối (block device) mà nhân Linux có thể đọc được ngay lập tức.
Nhiều bạn thắc mắc tại sao không dùng lệnh mount thông thường. Thực tế, file qcow2 chứa nhiều lớp metadata, bản snapshot và có thể được nén để tiết kiệm dung lượng. Lệnh mount tiêu chuẩn sẽ “bó tay” với các cấu trúc này, trong khi NBD có thể bóc tách từng phân vùng bên trong một cách mượt mà.
Cảnh báo quan trọng
Đừng bao giờ mount ổ đĩa bằng NBD khi máy ảo đang chạy. Việc hai hệ điều hành cùng ghi dữ liệu vào một ổ đĩa mà không có cơ chế điều phối sẽ khiến filesystem hỏng hoàn toàn. Hãy tắt hẳn VM (Power Off) trước khi thực hiện.
Xử lý các tình huống phức tạp
1. Làm việc với ổ đĩa VMware (.vmdk)
Nếu đồng nghiệp gửi cho bạn một file VMDK từ ESXi, bạn không cần cài VMware Workstation để mở nó. NBD hỗ trợ cực tốt định dạng này:
sudo qemu-nbd --connect=/dev/nbd1 /path/to/disk.vmdk
sudo fdisk -l /dev/nbd1
2. Truy cập phân vùng LVM bên trong VM
Các bản phân phối như CentOS hoặc Ubuntu Server thường dùng LVM. Khi kết nối NBD, bạn sẽ không thấy các phân vùng nbd0p1 xuất hiện ngay. Bạn cần thêm bước kích hoạt Volume Group:
sudo qemu-nbd --connect=/dev/nbd0 /path/to/image.qcow2
sudo vgscan
sudo vgchange -ay
# Giờ các phân vùng sẽ nằm trong /dev/mapper/
3. Chế độ an toàn (Read-only)
Khi cần trích xuất dữ liệu từ một bản backup cũ và bạn sợ lỡ tay xóa nhầm, hãy thêm flag -r. Đây là thói quen tốt của các SysAdmin chuyên nghiệp:
sudo qemu-nbd --readonly --connect=/dev/nbd0 file.qcow2
Mẹo xử lý khi gặp lỗi “Device busy”
Đôi khi bạn không thể disconnect vì một tiến trình nào đó vẫn đang “ám” thư mục mount. Đừng vội rút ngang. Hãy dùng lệnh lsof /mnt để tìm ID tiến trình đang truy cập, tắt nó đi, sau đó mới thực hiện disconnect.
Nếu thiết bị vẫn báo bận do phiên làm việc trước bị crash, hãy dùng lệnh dọn dẹp mạnh tay:
sudo qemu-nbd --disconnect /dev/nbd0
sudo rmmod nbd && sudo modprobe nbd max_part=8
Tổng kết
Làm chủ NBD giống như việc bạn có một chiếc chìa khóa vạn năng cho mọi loại ổ đĩa ảo. Dù bạn đang quản lý một cụm server lớn hay chỉ là homelab cá nhân, kỹ thuật này sẽ cứu nguy cho bạn trong những tình huống ngặt nghèo nhất. Hãy thử áp dụng ngay vào quy trình quản trị của mình để thấy sự khác biệt về tốc độ!

