Triển khai KVM ‘thần tốc’ bằng virt-install: Quên GUI đi, CLI mới là chân ái

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

Khi GUI không còn là lựa chọn: Câu chuyện lúc 2 giờ sáng

Chuông điện thoại reo dồn dập vào lúc 2 giờ sáng. Một con server staging quan trọng vừa “bay màu” do lỗi cấu hình. Team dev cần một môi trường tương đương ngay lập tức để test bản fix trước khi khách hàng thức dậy. Ngặt nỗi, server vật lý dự phòng chỉ chạy Ubuntu Server bản Minimal. Không desktop environment, không X11 forwarding, và đương nhiên không có bóng dáng của virt-manager.

Nếu bạn định loay hoay cài VNC hay cố đẩy giao diện đồ họa qua SSH, hãy dừng lại. Cách đó chỉ làm tốn thời gian quý báu. Lúc này, virt-install chính là cứu cánh duy nhất. Công cụ này không chỉ mạnh mẽ mà còn cực kỳ ổn định cho các tác vụ tự động hóa.

Trong hệ thống homelab của mình, dù đang quản lý hơn 10 VM trên Proxmox, mình vẫn ưu tiên dùng virt-install cho các node Linux thuần túy. Cảm giác gõ lệnh và kiểm soát chính xác từng MB RAM hay chu kỳ CPU luôn mang lại sự an tâm tuyệt đối mà các công cụ click chuột khó lòng bì kịp.

Tại sao bạn nên dùng virt-install thay vì virt-manager?

virt-install là công cụ dòng lệnh thuộc gói virt-inst, hoạt động trực tiếp với thư viện libvirt. Thay vì điền form qua nhiều bước wizard, bạn chỉ cần một dòng lệnh để định nghĩa toàn bộ thông số máy ảo.

Điểm ăn tiền nhất chính là khả năng lặp lại. Với một script Bash đơn giản, bạn có thể deploy đồng loạt 20 VM có cấu hình giống hệt nhau chỉ trong vài phút. Đây là kỹ năng bắt buộc nếu bạn muốn tiến xa trong mảng DevOps hoặc quản trị hệ thống Linux chuyên nghiệp.

Chuẩn bị môi trường thực chiến

Trước khi bắt đầu, hãy đảm bảo hệ thống đã cài đặt đủ các gói cần thiết. Bạn sẽ cần virtinst cùng với các daemon của KVM.

sudo apt update
sudo apt install virt-inst libosinfo-bin -y

Mẹo nhỏ cho bạn: Hãy chạy lệnh osinfo-query os để tìm đúng định danh hệ điều hành. Việc khai báo chính xác tham số --os-variant giúp KVM tự động chọn driver virtio. Driver này có thể giúp hiệu suất đọc ghi đĩa (Disk I/O) tăng tới 30% so với driver IDE thông thường.

Thực hành: Tạo VM Ubuntu Server trong 1 nốt nhạc

Giả sử bạn cần dựng một máy ảo Ubuntu 22.04 với 2 vCPU, 2GB RAM và 20GB ổ cứng. Thay vì mở giao diện, hãy dùng lệnh sau:

virt-install \
--name ubuntu-server-01 \
--vcpus 2 \
--memory 2048 \
--disk path=/var/lib/libvirt/images/ubuntu-01.qcow2,size=20 \
--os-variant ubuntu22.04 \
--location /var/lib/libvirt/images/ubuntu-22.04-live-server-amd64.iso \
--network bridge=br0 \
--graphics none \
--extra-args 'console=ttyS0,115200n8 serial'

Bóc tách các tham số quan trọng:

  • –name: Tên máy ảo. Hãy đặt tên ngắn gọn, tránh dấu cách để dễ quản lý bằng virsh về sau.
  • –memory: Bạn có thể dùng --memory 2048,maxmemory=4096. Tùy chọn này cho phép nâng cấp RAM nóng (hot-plug) mà không cần tắt máy ảo.
  • –disk: File image định dạng qcow2 là lựa chọn tối ưu vì nó hỗ trợ snapshot và chỉ chiếm dung lượng thực tế đang dùng.
  • –location: Trỏ đến file ISO. Lưu ý: libvirt chạy dưới user riêng, nên hãy để ISO trong /var/lib/libvirt/images/ để tránh lỗi Permission Denied.
  • –graphics none & –extra-args: Đây là kỹ thuật đẩy toàn bộ màn hình cài đặt ra console hiện tại. Bạn sẽ thực hiện việc cài đặt OS ngay trong cửa sổ SSH đang mở.

Nâng cấp lên level Pro với Cloud-init

Việc ngồi chờ cài đặt thủ công từng bước qua ISO thực sự rất mất thời gian. Để thực sự làm chủ quy trình, bạn nên sử dụng Cloud Image kết hợp với Cloud-init.

Thay vì cài từ đầu, bạn tải file .qcow2 đã được build sẵn từ nhà phát hành (như Ubuntu Cloud Images). Kết hợp với file cấu hình user-data, máy ảo sẽ tự động nhận SSH key và cấu hình mạng ngay khi khởi động. Thời gian triển khai lúc này rút ngắn từ 15 phút xuống còn chưa đầy 40 giây.

virt-install \
--name fast-vm-01 \
--memory 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/fast-vm.qcow2,backing_store=/var/lib/libvirt/images/ubuntu-22.04-cloud.img \
--import \
--network bridge=br0 \
--cloud-init user-data=/path/to/config.yaml \
--noautoconsole

Tham số backing_store giúp tạo một bản sao dạng “linked clone”. Nó cực kỳ tiết kiệm ổ cứng vì nhiều VM có thể dùng chung một file gốc (base image).

Những lỗi “nhớ đời” cần tránh

Làm việc với dòng lệnh rất dễ gặp lỗi nếu bạn thiếu cẩn thận. Dưới đây là 3 lỗi phổ biến nhất:

  1. Quyền hạn file: libvirt thường chạy dưới user libvirt-qemu. Nếu file ISO nằm trong thư mục /home/user/, lệnh sẽ lỗi ngay. Hãy dùng chmod hoặc di chuyển file vào đúng thư mục chuẩn.
  2. Trùng lặp tài nguyên: Nếu bạn xóa VM bằng virsh destroy mà quên virsh undefine, cấu hình cũ vẫn tồn tại. virt-install sẽ báo lỗi tên máy ảo đã được sử dụng.
  3. Thiếu hụt RAM thực tế: Đừng cấp phát RAM vượt quá dung lượng trống của máy host (kiểm tra bằng free -m). Nếu không, máy ảo sẽ bị treo ngay bước khởi tạo.

Tổng kết

Sử dụng virt-install không chỉ để “làm màu” cho giống hacker. Đây là công cụ cốt lõi giúp bạn tự động hóa hạ tầng và xử lý sự cố nhanh chóng trong môi trường production.

Ban đầu, các tham số có thể làm bạn thấy rối. Tuy nhiên, khi đã quen tay, bạn sẽ thấy việc click chuột trên GUI thật chậm chạp và thiếu chuyên nghiệp. Nếu gặp bất kỳ lỗi nào trong quá trình thực hiện, hãy để lại comment phía dưới để mình cùng thảo luận nhé!

Share: