1. Tại sao chúng ta cần phải thêm hoặc xóa một network interface trong một máy ảo?
Có nhiều lý do để thêm hoặc xóa một network interface trong một máy ảo, ví dụ như:
- Tăng khả năng kết nối: Thêm một network interface cho phép máy ảo kết nối với một mạng khác hoặc nhiều mạng khác hơn. Điều này cung cấp khả năng kết nối và truy cập vào tài nguyên khác nhau từ máy chủ ảo.
- Tách biệt các kết nối: Xóa một network interface có thể giúp tách biệt các kết nối giữa máy ảo và mạng. Ví dụ, nếu một máy ảo không còn được sử dụng, bạn có thể xóa interface để giảm số lượng liên kết giữa máy chủ và mạng.
- Cải thiện hiệu suất: Thêm hoặc xóa một network interface có thể giúp cải thiện hiệu suất máy ảo. Ví dụ, nếu một interface bị ràng buộc với một mạng đông đúc, bạn có thể thêm một interface mới để giảm tải trọng.
- Đáp ứng các yêu cầu đặc biệt: Nếu một ứng dụng hoặc dịch vụ đặc biệt yêu cầu kết nối mạng hoặc cấu hình đặc biệt, bạn có thể thêm hoặc xóa interface để đáp ứng yêu cầu đó.
Tóm lại, việc thêm hoặc xóa một network interface trong một máy ảo là cần thiết để đáp ứng các yêu cầu kết nối, tăng cường hiệu suất và cải thiện bảo mật.
2. Thêm network interface bằng cách chỉnh sử thông tin file xml.
Để thêm một Network Interface cho một máy ảo trong KVM, bạn có thể làm theo các bước sau:
- Tắt máy ảo đó.
- Mở terminal trên host machine và dùng lệnh
virsh edit <vm_name>
để mở file cấu hình XML của máy ảo đó. - Tìm đến đoạn cấu hình của Network Interface đã có trong file XML bằng cách tìm từ khóa
<interface type='network'>
. - Sao chép đoạn cấu hình đó và dán ngay phía dưới để tạo một Network Interface mới.
- Đổi tên của interface mới bằng cách sửa thuộc tính
name
. - (Tùy chọn) Đổi cổng của interface mới bằng cách sửa giá trị của
port
. - (Tùy chọn) Thay đổi tên của network bằng cách sửa giá trị của
network
. - Lưu lại file cấu hình và thoát.
- Khởi động lại máy ảo đó.
Sau khi khởi động lại máy ảo, interface mới sẽ được hiển thị và bạn có thể cấu hình cho nó như một interface bình thường.
Ví dụ thêm 2 interface vào máy ảo bằng cách chỉnh sửa file xml, nếu file cấu hình XML của máy ảo trước khi thêm hai interface là như sau:
<domain type='kvm'>
...
<devices>
...
<interface type='network'>
<mac address='52:54:00:01:02:03'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
...
</devices>
...
</domain>
Vậy sau khi thêm hai interface, file cấu hình XML sẽ có dạng như sau:
<domain type='kvm'>
...
<devices>
...
<interface type='network'>
<mac address='52:54:00:01:02:03'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='network'>
<mac address='52:54:00:01:02:04'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</interface>
<interface type='network'>
<mac address='52:54:00:01:02:05'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</interface>
...
</devices>
...
</domain>
Sau khi khởi động lại máy ảo, các interface mới sẽ được hiển thị.
Để xóa card mạng bạn hãy vào lại cấu hình xml, xóa phần config liên quan đến card mạng cần xóa và khởi động lại máy ảo. Máy ảo sau khi khởi động lại sẽ bị mất card mạng mà bạn đã xóa trong config.
Note: Có một số lưu ý khi chỉnh sửa file xml như sau.
Địa chỉ của card mạng ảo trong KVM có thể được hệ thống tự động gán bằng cách sử dụng chế độ mặc định cho thuộc tính address type
. Khi sử dụng chế độ mặc định, KVM sẽ tự động gán địa chỉ PCI (Peripheral Component Interconnect) mới cho card mạng ảo.
Ví dụ, để sử dụng chế độ mặc định cho thuộc tính address type
trong file cấu hình XML của máy ảo KVM, bạn có thể không khai báo giá trị address type
hoặc để giá trị là ‘unspecified’:
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
<address type='unspecified'/>
</interface>
Ở ví dụ trên, chế độ mặc định cho address type
được sử dụng, do đó KVM sẽ tự động tạo ra một địa chỉ PCI mới cho card mạng của máy ảo. Nếu bạn muốn chỉ định một địa chỉ PCI cụ thể cho card mạng ảo, bạn có thể thay đổi giá trị của thuộc tính address type
để phù hợp với địa chỉ PCI mà bạn muốn sử dụng.
Có thể để hệ thống tự động gán địa chỉ MAC (MAC address) cho card mạng của máy ảo KVM bằng cách sử dụng chế độ mặc định. Khi sử dụng chế độ mặc định, KVM sẽ tự động tạo ra một địa chỉ MAC mới cho card mạng của máy ảo. Cách này giúp bạn tránh được việc xung đột địa chỉ MAC và giúp quản lý địa chỉ MAC trở nên đơn giản hơn.
Để sử dụng chế độ mặc định cho địa chỉ MAC trong KVM, bạn có thể không khai báo giá trị mac address
trong file cấu hình XML của máy ảo. Ví dụ:
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
</interface>
Ở ví dụ trên, không khai báo giá trị mac address
, do đó khi máy ảo KVM khởi động, hệ thống sẽ tự động tạo ra một địa chỉ MAC mới cho card mạng của máy ảo. Lưu ý rằng khi sử dụng chế độ mặc định, bạn không thể biết trước địa chỉ MAC được tạo ra cho card mạng của máy ảo.
2. Thêm card mạng bằng lệnh.
– Thêm card mạng.
Có thể sử dụng lệnh virsh attach-interface
để thêm một card mạng mới cho một máy ảo đang chạy. Lệnh này sẽ tự động cập nhật cấu hình XML của máy ảo để thêm card mạng mới.
Ví dụ, để thêm một card mạng mới cho máy ảo có tên là vm1
, sử dụng lệnh sau:
virsh attach-interface --domain vm1 --type network --source bridged-network --model virtio --config --live
Trong đó:
--domain vm1
chỉ định tên của máy ảo cần thêm card mạng mới.--type network
chỉ định loại của card mạng, trong trường hợp này là một card mạng kết nối đến mạng ảo.--source bridged-network
chỉ định tên của mạng ảo cần kết nối đến.--model virtio
chỉ định kiểu của card mạng.--config --live
chỉ định rằng cấu hình máy ảo cần được cập nhật cả trong thời gian chạy và sau khi khởi động lại.
Sau khi thêm card mạng mới bằng lệnh virsh attach-interface
, bạn có thể kiểm tra lại bằng cách sử dụng lệnh virsh dumpxml
để xem lại cấu hình XML của máy ảo.
– Xóa card mạng.
Để xóa một card mạng từ một máy ảo đang chạy, bạn có thể sử dụng lệnh virsh detach-interface
, chúng ta sẽ có 2 bước.
Bước 1: Xác định mac address của card mạng muốn xóa.
Bạn có thể sử dụng lệnh virsh domiflist <domain>
để liệt kê tất cả các card mạng của một máy ảo, bao gồm địa chỉ MAC của chúng.
Ví dụ, để liệt kê tất cả các card mạng của máy ảo có tên là vm1
, sử dụng lệnh sau:
virsh domiflist vm1
Đầu ra sẽ như vậy:
$ virsh domiflist vm1
Interface Type Source Model MAC
--------------------------------------------------------------------
vnet8 bridge bridged-network virtio 52:54:00:75:af:dd
vnet10 bridge bridged-network virtio 52:54:00:bd:bd:29
Lệnh này sẽ hiển thị danh sách tất cả các card mạng của máy ảo vm1
, bao gồm cả địa chỉ MAC của chúng.
Nếu bạn chỉ muốn lấy danh sách các địa chỉ MAC của các card mạng, bạn có thể sử dụng một số công cụ xử lý văn bản như grep
để lọc ra thông tin cần thiết. Ví dụ, để lấy danh sách các địa chỉ MAC của các card mạng của vm1
, bạn có thể sử dụng lệnh sau:
virsh domiflist vm1 | grep -oE "([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}"
Lệnh này sẽ lọc ra các địa chỉ MAC của các card mạng của máy ảo vm1
và hiển thị chúng dưới dạng danh sách.
Đầu tiên chúng ta phải lấy mac address của card mạng cần xóa đã. Bạn có thể sử dụng lệnh virsh domiflist <domain>
để liệt kê tất cả các card mạng của một máy ảo, bao gồm địa chỉ MAC của chúng.
Bước 2: Xóa card mạng.
Ví dụ, để xóa card mạng có mac address “52:54:00:bd:bd:29” của máy ảo có tên là vm1
, sử dụng lệnh sau:
virsh detach-interface --domain vm1 --type network --mac 52:54:00:bd:bd:29 --config --live
Trong đó:
--domain vm1
chỉ định tên của máy ảo cần xóa card mạng.--type network
chỉ định loại của card mạng, trong trường hợp này là một card mạng kết nối đến mạng ảo.--mac 52:54:00:82:3b:05
chỉ định địa chỉ MAC của card mạng cần xóa.--config --live
chỉ định rằng cấu hình máy ảo cần được cập nhật cả trong thời gian chạy và sau khi khởi động lại.
Lưu ý rằng, việc xóa card mạng từ một máy ảo đang chạy có thể gây ra sự cố với kết nối mạng của máy ảo đó. Trước khi thực hiện việc xóa card mạng, hãy đảm bảo rằng bạn đã sao lưu đầy đủ dữ liệu và đã thông báo cho người quản trị mạng của bạn.