KVM là từ viết tắt của Kernel-based Virtual Machine, đây là giải pháp công nghệ ảo hóa dựa trên mô-đun hạt nhân Linux. KVM là giải pháp phần mềm nguồn mở chạy trên máy Linux x86 với sự hỗ trợ của phần mở rộng ảo hóa phần cứng Intel VT hoặc AMD-V. Mô-đun hạt nhân KVM đã được đưa vào hạt nhân Linux kể từ phiên bản 2.6.20 và đã được chuyển sang các hệ điều hành khác như FreeBSD và Illumos dưới dạng các mô-đun hạt nhân có thể tải.
Công nghệ KVM sẽ biến máy Linux thành ảo hóa trình quản lý siêu máy ảo, được gọi là máy chủ. Trên máy chủ, bạn sẽ có thể tạo nhiều hệ thống bị cô lập được gọi là máy ảo (VM). Mỗi máy ảo có hệ thống riêng (có thể là Linux, Windows hoặc BSD), cũng có phần cứng ảo hóa riêng như bộ nhớ, CPU, card mạng, đĩa, đồ họa, v.v.
Trong hướng dẫn này, bạn sẽ tìm hiểu cách thiết lập công nghệ ảo hóa KVM/QEMU trên máy Manjaro/Archlinux. Ngoài ra, bạn sẽ học cách tạo máy ảo đầu tiên bằng ứng dụng GUI "virt-manager" - giao diện người dùng trên máy tính để quản lý máy ảo.
1. Thực hiện lệnh sau để kiểm tra kiến trúc hệ thống của bạn.
Bạn sẽ nhận được kết quả sau.
Như đã thấy, hiện tại chúng ta đang sử dụng hệ thống Linux với kiến trúc "x86_64" hoặc "64-bit" và phiên bản hạt nhân "5.4".
2. Tiếp theo, hãy kiểm tra hỗ trợ ảo hóa phần cứng bằng cách chạy lệnh sau.
Đối với bộ xử lý Intel, bạn sẽ thấy đầu ra tương tự như bên dưới.
Và đối với bộ xử lý AMD, bên dưới là đầu ra tương tự.
3. Tùy chọn, bạn có thể bật ảo hóa lồng nhau trên máy của mình bằng lệnh sau.
Sau đó, thực thi lệnh sau để xác minh ảo hóa lồng nhau.
Nếu bạn nhận được đầu ra như "Y" hoặc "1", điều đó có nghĩa là tính năng ảo hóa lồng nhau đã được bật. Nếu không, bạn sẽ thấy thông báo lỗi là "Không có tệp hoặc thư mục nào như vậy".
Đối với hệ thống manjaro, sẽ có xung đột gói giữa "iptables" và "ebtables". Gõ "y" để xóa gói iptables mặc định và thay thế bằng "ebtables" và "nftables".
Dưới đây là các gói thiết yếu mà bạn phải biết:
Bạn sẽ nhận được kết quả tương tự như bên dưới.
3. Sau đó, thực hiện lệnh sau để kiểm tra trạng thái dịch vụ libvirtd.
Và bạn sẽ thấy đầu ra tương tự như bên dưới. Như đã thấy, dịch vụ libvritd đang hoạt động và chạy.
1. Thực hiện lệnh sau để chỉnh sửa cấu hình libvirtd.
Bỏ chú thích tùy chọn "unix_sock_group" và nhập tên nhóm là "libvirt".
Sau đó, bỏ ghi chú cho tùy chọn "unix_sock_rw_perms" và giữ nguyên quyền là mặc định "0770".
Lưu cấu hình bằng cách nhấn nút Ctrl+x và nhập y, sau đó enter.
2. Tiếp theo, thêm người dùng của bạn vào nhóm "libvirt" bằng lệnh sau.
3. Sau đó, khởi động lại dịch vụ libvirtd để áp dụng cấu hình mới.
Bây giờ tất cả người dùng trong nhóm "libvirt" sẽ có thể tạo và cấu hình máy ảo.
1. Nhấp vào menu "Chỉnh sửa -> Chi tiết kết nối" trên ứng dụng virt-manager.
2. Trên tab "Tổng quan", bạn sẽ thấy virt-manager sẽ tự động kết nối với "qemu:///system".
3. Di chuyển đến các tab "Mạng ảo" và bạn sẽ thấy cấu hình mạng "mặc định".
4. Bây giờ hãy chuyển đến tab "Lưu trữ", và bạn sẽ thấy cấu hình lưu trữ nhóm "mặc định".
5. Tiếp theo, nhấp vào nút "+" để tạo bộ lưu trữ nhóm mới cho các tệp hình ảnh ISO. Tất cả các hệ điều hành tệp ISO sẽ có sẵn tại nhóm này.
Thực hiện theo cấu hình lưu trữ như sau:
Nhấp vào nút "Hoàn tất" để hoàn tất quy trình. Sau đó, bạn đã sẵn sàng tạo máy ảo mới.
2. Chọn "Local install media" để sử dụng ảnh ISO để cài đặt và nhấp vào nút "Forward" để tiếp tục.
3. Nhấp vào nút "Duyệt" để chọn tệp ISO.
Bây giờ hãy chọn bộ lưu trữ nhóm "ISO" và chọn tệp iso để cài đặt (ví dụ này là "Debian 10"), sau đó nhấp vào "Chọn khối lượng".
Bỏ chọn tùy chọn "Tự động phát hiện từ phương tiện/nguồn cài đặt", nhập hệ điều hành bạn muốn cài đặt (ví dụ này là "Debian 10"), sau đó nhấp vào nút "Chuyển tiếp" một lần nữa để tiếp tục.
4. Chọn dung lượng bộ nhớ và CPU cho máy ảo, sau đó nhấp vào "Chuyển tiếp".
5. Chọn dung lượng đĩa cho máy ảo và nhấp vào "Chuyển tiếp".
6. Kiểm tra lại cấu hình của bạn và nhấp vào nút "Hoàn tất" để cài đặt.
7. Bây giờ máy ảo đã hoạt động với ảo hóa QEMU/KVM và bạn có thể tiếp tục cài đặt hệ điều hành.
Công nghệ KVM sẽ biến máy Linux thành ảo hóa trình quản lý siêu máy ảo, được gọi là máy chủ. Trên máy chủ, bạn sẽ có thể tạo nhiều hệ thống bị cô lập được gọi là máy ảo (VM). Mỗi máy ảo có hệ thống riêng (có thể là Linux, Windows hoặc BSD), cũng có phần cứng ảo hóa riêng như bộ nhớ, CPU, card mạng, đĩa, đồ họa, v.v.
QEMU là gì?
QEMU hoặc Quick Emulator là trình giả lập hệ thống và trình ảo hóa nguồn mở để ảo hóa phần cứng. Nói chung, nó được sử dụng như một trình ảo hóa với mô-đun hạt nhân KVM để chạy máy ảo. Để đạt được hiệu suất tuyệt vời cho máy khách/máy ảo, nó sẽ tận dụng các tiện ích mở rộng ảo hóa phần cứng như Intel VT hoặc AMD-V. Công nghệ ảo hóa QEMU/KVM chủ yếu được sử dụng như một trình quản lý ảo trong trung tâm dữ liệu.Trong hướng dẫn này, bạn sẽ tìm hiểu cách thiết lập công nghệ ảo hóa KVM/QEMU trên máy Manjaro/Archlinux. Ngoài ra, bạn sẽ học cách tạo máy ảo đầu tiên bằng ứng dụng GUI "virt-manager" - giao diện người dùng trên máy tính để quản lý máy ảo.
Điều kiện tiên quyết
- Manjaro/Archlinux với kiến trúc x86 hoặc 64-bit.
- CPU/bộ xử lý có hỗ trợ ảo hóa (Intel VT hoặc AMD-V).
- Người dùng không phải root có quyền root sudo.
Kiểm tra kiến trúc hệ thống và hỗ trợ ảo hóa CPU
Trước tiên, hãy kiểm tra kiến trúc máy và hỗ trợ phần cứng của khả năng tăng tốc ảo hóa Intel VT cho CPU Intel và AMD-v cho CPU AMD.1. Thực hiện lệnh sau để kiểm tra kiến trúc hệ thống của bạn.
Mã:
uname -m
Mã:
Linux machine1 5.4.134-1 #1 SMP PREEMPT Tue Jul 06 08:10:03 UTC 2021 x86_64 GNU/Linux
2. Tiếp theo, hãy kiểm tra hỗ trợ ảo hóa phần cứng bằng cách chạy lệnh sau.
Mã:
sudo lscpu | grep Virtualization
Mã:
Virtualization: VT-x
Mã:
Virtualization: AMD-V
Mã:
sudo modprobe -r kvm_intel
sudo modprobe kvm_intel nested=1
Mã:
cat /sys/module/kvm_intel/parameters/nested
Cài đặt các gói QEMU và Virt-Manager
1. Để cài đặt các gói qemu và virt-manager, hãy chạy lệnh bên dưới.
Mã:
sudo pacman -S qemu virt-manager libvirt virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat ebtables libguestfs
Dưới đây là các gói thiết yếu mà bạn phải biết:
- qemu: Một trình giả lập máy và ảo hóa nguồn mở.
- virt-manager; Một ứng dụng GUI để quản lý máy ảo.
- libvirt: Một API để kiểm soát các công cụ ảo hóa như KVM, QEMU, v.v.
- dnsmasq: Bộ chuyển tiếp DNS nhẹ và máy chủ DHCP.
- bridge-utils: Tiện ích để cấu hình cầu Ethernet Linux.
- libguestfs: Bộ công cụ để sửa đổi ảnh đĩa máy ảo (VM).
Mã:
sudo systemctl enable --now libvirtd
Mã:
Đã tạo liên kết tượng trưng /etc/systemd/system/multi-user.target.wants/libvirtd.service → /usr/lib/systemd/system/libvirtd.service.
Đã tạo liên kết tượng trưng /etc/systemd/system/sockets.target.wants/virtlockd.socket → /usr/lib/systemd/system/virtlockd.socket.
Đã tạo liên kết tượng trưng /etc/systemd/system/sockets.target.wants/virtlogd.socket → /usr/lib/systemd/system/virtlogd.socket.
Đã tạo liên kết tượng trưng /etc/systemd/system/sockets.target.wants/libvirtd.socket → /usr/lib/systemd/system/libvirtd.socket.
Đã tạo liên kết tượng trưng /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket → /usr/lib/systemd/system/libvirtd-ro.socket.
Mã:
sudo systemctl status libvirtd
Mã:
? libvirtd.service - Daemon ảo hóa
Đã tải: đã tải (/usr/lib/systemd/system/libvirtd.service; đã tắt; cài đặt trước của nhà cung cấp: đã tắt)
Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ sáu 2021-07-23 10:33:25 UTC; 6 giây trước
Được kích hoạt bởi: ? libvirtd-ro.socket
? libvirtd.socket
? libvirtd-admin.socket
Tài liệu: man:libvirtd(8)
https://libvirt.org
PID chính: 16828 (libvirtd)
Nhiệm vụ: 19 (giới hạn: 32768)
Bộ nhớ: 16,4M
CPU: 226ms
CGroup: /system.slice/libvirtd.service
??16828 /usr/bin/libvirtd --timeout 120
Cho phép Người dùng không phải root sử dụng Ảo hóa KVM/QEMU
Theo mặc định, chỉ người dùng "root" mới có thể tạo và quản lý máy ảo. Để cho phép người dùng không phải root tạo và quản lý máy ảo, bạn nên làm theo cấu hình libvirtd bên dưới.1. Thực hiện lệnh sau để chỉnh sửa cấu hình libvirtd.
Mã:
sudo nano /etc/libvirt/libvirtd.conf
Mã:
# Đặt quyền sở hữu nhóm socket miền UNIX. Có thể sử dụng tùy chọn này để
# cho phép một nhóm người dùng 'đáng tin cậy' truy cập vào các khả năng quản lý
# mà không cần trở thành root.
#
# Thiết lập này không bắt buộc hoặc không được tôn trọng nếu sử dụng socket systemd
# activation.
#
# Theo mặc định, tùy chọn này bị giới hạn ở 'root'.
unix_sock_group = "libvirt"
Mã:
# Đặt quyền socket UNIX cho socket R/W. Tùy chọn này được sử dụng
# để quản lý đầy đủ các VM
#
# Thiết lập này không bắt buộc hoặc không được tôn trọng nếu sử dụng socket systemd
# activation.
#
# Mặc định chỉ cho phép root. Nếu PolicyKit được bật trên socket,
# mặc định sẽ thay đổi để cho phép mọi người (ví dụ: 0777)
#
# Nếu không sử dụng PolicyKit và thiết lập quyền sở hữu nhóm để truy cập
# kiểm soát, thì bạn cũng có thể muốn nới lỏng điều này.
unix_sock_rw_perms = "0770"
2. Tiếp theo, thêm người dùng của bạn vào nhóm "libvirt" bằng lệnh sau.
Mã:
sudo usermod -a -G libvirt username
Mã:
sudo systemctl restart libvirtd
Xác minh cài đặt QEMU/KVM bằng virt-manager
Bây giờ hãy mở ứng dụng "virt-manager" từ menu ứng dụng của bạn.1. Nhấp vào menu "Chỉnh sửa -> Chi tiết kết nối" trên ứng dụng virt-manager.
2. Trên tab "Tổng quan", bạn sẽ thấy virt-manager sẽ tự động kết nối với "qemu:///system".
3. Di chuyển đến các tab "Mạng ảo" và bạn sẽ thấy cấu hình mạng "mặc định".
- Giao diện: virbr0
- Tự động khởi động khi khởi động: có
- Địa chỉ IP: 192.168.122.0/24
- Phạm vi địa chỉ IP DHCP: 192.168.122.2 - 192.168.122.254
- Loại mạng: NAT
4. Bây giờ hãy chuyển đến tab "Lưu trữ", và bạn sẽ thấy cấu hình lưu trữ nhóm "mặc định".
- Loại: Thư mục hệ thống tập tin
- Kích thước: Tùy thuộc vào đĩa của bạn
- Vị trí: /var/lib/libvirt/images
- Tự động khởi động khi khởi động: có
5. Tiếp theo, nhấp vào nút "+" để tạo bộ lưu trữ nhóm mới cho các tệp hình ảnh ISO. Tất cả các hệ điều hành tệp ISO sẽ có sẵn tại nhóm này.
Thực hiện theo cấu hình lưu trữ như sau:
- Tên: ISO
- Loại: dir: Thư mục hệ thống tệp
- Đường dẫn đích: /path/directory/to/your/iso/
Nhấp vào nút "Hoàn tất" để hoàn tất quy trình. Sau đó, bạn đã sẵn sàng tạo máy ảo mới.
Tạo máy ảo mới bằng virt-manager
1. Trên ứng dụng virt-manager, nhấp vào nút "+" để tạo máy ảo mới.2. Chọn "Local install media" để sử dụng ảnh ISO để cài đặt và nhấp vào nút "Forward" để tiếp tục.
3. Nhấp vào nút "Duyệt" để chọn tệp ISO.
Bây giờ hãy chọn bộ lưu trữ nhóm "ISO" và chọn tệp iso để cài đặt (ví dụ này là "Debian 10"), sau đó nhấp vào "Chọn khối lượng".
Bỏ chọn tùy chọn "Tự động phát hiện từ phương tiện/nguồn cài đặt", nhập hệ điều hành bạn muốn cài đặt (ví dụ này là "Debian 10"), sau đó nhấp vào nút "Chuyển tiếp" một lần nữa để tiếp tục.
4. Chọn dung lượng bộ nhớ và CPU cho máy ảo, sau đó nhấp vào "Chuyển tiếp".
5. Chọn dung lượng đĩa cho máy ảo và nhấp vào "Chuyển tiếp".
6. Kiểm tra lại cấu hình của bạn và nhấp vào nút "Hoàn tất" để cài đặt.
7. Bây giờ máy ảo đã hoạt động với ảo hóa QEMU/KVM và bạn có thể tiếp tục cài đặt hệ điều hành.