Di chuyển Linux Server lên KVM: Hướng dẫn dùng virt-p2v thay thế VMware Converter

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

Nỗi ám ảnh khi di chuyển máy chủ vật lý đời cũ

Cách đây nửa năm, mình nhận một dự án nâng cấp hệ thống cho doanh nghiệp nội địa. Dàn server Dell PowerEdge R710 của họ đã chạy ròng rã 8 năm với CentOS 6 và Ubuntu 14.04. Đèn báo lỗi cam (amber light) đã nháy, ổ cứng kêu lạch cạch báo hiệu ngày tàn sắp đến. Nhiệm vụ của mình: Đưa toàn bộ đống “đồ cổ” này lên cụm KVM mới để tận dụng tài nguyên và dễ dàng backup.

Dân chuyên VMware chắc chắn không lạ gì VMware vCenter Converter. Nhưng khi chuyển sang hệ sinh thái KVM mã nguồn mở hoặc Proxmox, tìm một công cụ tương đương không hề dễ. Mình từng thử dd qua SSH hoặc dùng Clonezilla. Kết quả? Máy ảo thường xuyên treo ở màn hình boot do thiếu driver VirtIO hoặc lỗi GRUB.

Sau nhiều đêm “thức trắng”, mình tìm thấy virt-p2v. Công cụ này kết hợp với virt-v2v tạo thành bộ đôi di chuyển server Linux lên KVM mượt mà nhất. Thực tế, mình đã chuyển thành công 5 server vật lý sang Proxmox chỉ trong một đêm mà không tốn đồng bản quyền nào.

So sánh các phương pháp P2V phổ biến

Trước khi bắt tay vào làm, hãy nhìn qua các lựa chọn bạn thường cân nhắc:

  • Dùng lệnh dd/rsync: Đây là cách thủ công nhất. Bạn copy dữ liệu thô từ ổ vật lý sang file image. Tuy nhiên, tỉ lệ lỗi bootloader cực cao vì nó không tự cài được driver VirtIO.
  • Clonezilla: Tốt để sao lưu ảnh đĩa. Nhưng khi restore lên máy ảo, bạn phải tự tay cấu hình lại kernel để nhận diện ổ cứng ảo hóa. Rất mất thời gian.
  • virt-p2v / virt-v2v: Giải pháp chuyên dụng từ Red Hat. Nó tự động quét phần cứng, chuyển đổi định dạng đĩa sang qcow2 và re-install driver ngay trong quá trình convert.

Cơ chế hoạt động của virt-p2v

Quy trình này vận hành dựa trên hai thành phần:

  1. Conversion Server: Một máy Linux mạnh mẽ đã cài virt-v2v. Đây là nơi tiếp nhận dữ liệu và thực hiện “phẫu thuật” file hệ thống.
  2. Source Machine (Client): Máy chủ vật lý mục tiêu. Bạn sẽ boot máy này bằng USB chứa môi trường Live của virt-p2v.

Dữ liệu truyền qua SSH từ máy vật lý sang Conversion Server. Tại đây, virt-v2v sẽ tiêm các driver cần thiết vào initrd/initramfs để OS có thể khởi động trên môi trường ảo hóa.

Chuẩn bị trước khi triển khai

1. Thiết lập Conversion Server

Sử dụng một máy Ubuntu hoặc Debian có dung lượng đĩa trống lớn hơn dung lượng máy nguồn khoảng 20%. Cài đặt các gói cần thiết:

sudo apt update
sudo apt install virt-v2v libguestfs-tools -y

Đảm bảo server này có thể SSH tới bằng quyền root hoặc user có quyền sudo không cần mật khẩu để quá trình truyền dữ liệu không bị ngắt quãng.

2. Tạo đĩa Boot virt-p2v

Tải file ISO của virt-p2v từ repo của Red Hat hoặc cộng đồng. Nếu muốn tự build theo ý thích, hãy dùng công cụ virt-p2v-make-disk. Sau đó, dùng Rufus để tạo USB Boot và cắm vào máy chủ vật lý.

Các bước thực hiện chi tiết

Bước 1: Khởi động máy vật lý vào môi trường virt-p2v

Boot máy từ USB. Giao diện virt-p2v hiện ra khá đơn giản. Hãy thiết lập IP tĩnh để đảm bảo kết nối mạng ổn định nhất, tránh dùng DHCP nếu mạng nội bộ chập chờn.

Bước 2: Kết nối đến Conversion Server

Trong giao diện, bạn điền thông tin:

  • Hostname: IP của máy Conversion Server.
  • User/Password: Thông tin đăng nhập SSH.

Bấm Test Connection. Nếu hiện thông báo thành công, bạn đã đi được nửa chặng đường.

Bước 3: Cấu hình máy ảo mục tiêu

Lúc này, bạn cần chọn các thông số cho máy ảo tương lai:

  • Target Properties: Đặt tên VM, chọn số nhân CPU và dung lượng RAM.
  • Disks: Chọn ổ đĩa cần chuyển (thường là /dev/sda).
  • Output format: Luôn ưu tiên qcow2 để tận dụng tính năng Snapshot của KVM.

Bước 4: Bắt đầu chuyển đổi

Nhấn Start Conversion. Tốc độ chuyển đổi phụ thuộc vào băng thông LAN. Với hạ tầng 1Gbps, mình thường đạt tốc độ khoảng 60-80MB/s. Một ổ cứng 100GB sẽ mất khoảng 25-30 phút.

Theo dõi tiến trình chi tiết trên Conversion Server bằng lệnh:

tail -f /var/log/virt-v2v.log

Kinh nghiệm xử lý lỗi thực tế

Trong quá trình làm, mình đúc kết được vài lưu ý quan trọng:

1. Driver VirtIO bị thiếu

Với các bản Linux quá cũ như CentOS 5, virt-v2v đôi khi không tìm thấy kernel phù hợp. Hãy cập nhật kernel lên bản mới nhất trên máy nguồn trước khi bắt đầu P2V.

2. Cấu hình SSH

Nếu kết nối thất bại, hãy kiểm tra /etc/ssh/sshd_config. Bạn cần đảm bảo PermitRootLogin yes được bật tạm thời. Đừng quên tắt nó đi sau khi xong việc để đảm bảo bảo mật.

3. Máy chạy chuẩn UEFI

Nếu máy vật lý dùng UEFI, khi tạo VM trên KVM, bạn phải chọn firmware là OVMF. Nếu để BIOS mặc định, máy ảo chắc chắn sẽ báo lỗi “No bootable device”.

Kiểm tra sau khi di chuyển

Sau khi hoàn tất, bạn sẽ có file .qcow2 và file XML. Import vào KVM cực nhanh bằng lệnh:

virsh define /path/to/vm.xml
virsh start my_new_vm

Lưu ý: Tên card mạng có thể thay đổi (ví dụ từ eth0 thành enp0s3). Bạn cần vào /etc/netplan/ hoặc /etc/network/interfaces để chỉnh lại cấu hình IP cho đúng.

Tổng kết

Sử dụng virt-p2v là cách chuyên nghiệp nhất để “hóa kiếp” các server vật lý cũ sang môi trường ảo hóa KVM. Dù giao diện có phần cổ điển, nhưng độ tin cậy của nó vượt xa các phương pháp copy thô thông thường. Nếu bạn đang có kế hoạch dọn dẹp phòng server, hãy thử ngay bộ công cụ này. Chúc các bạn có một kỳ di chuyển hệ thống suôn sẻ!

Share: