1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Ảo hóa với KVM trên Ubuntu 11.10 pptx

37 513 4
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ảo hóa với KVM trên Ubuntu 11.10
Trường học University of Information Technology
Chuyên ngành Computer Science
Thể loại Hướng dẫn
Năm xuất bản 2011
Thành phố Ho Chi Minh City
Định dạng
Số trang 37
Dung lượng 632,06 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cài đặt KVM và vmbuilder Trước khi tiến hành, bạn cần xác định xem CPU của mình có hỗ trợ ảo hóa phần cứng hay không: egrep 'vmx|svm' --color=always /proc/cpuinfo Nếu màn hình hiển thị

Trang 1

Ảo hóa với KVM trên Ubuntu 11.10

Công nghệ ảo hóa trong Linux với KVM (Kernel-based Virtual Machine) hẳn không còn xa lạ với các nhà quản trị mạng cũng như nhiều người dùng Tuy nhiên sự phát triển của những hệ điều hành có nhân Linux hết sức nhanh chóng, kéo theo sự thay đổi trong cách sử dụng KVM khiến không ít người e ngại nâng cấp cho hệ thống của mình Chuyên mục Linux trên QuanTriMang sẽ

cố gắng cập nhật đầy đủ các hướng dẫn tối ưu nhất để bạn đọc có thể dễ dàng thao tác, kịp thời, nhanh chóng Bài hướng dẫn sau đây sẽ trình bày cách sử dụng KVM trên hệ thống Ubuntu 11.10

1 Một số lưu ý

Trước hết bạn cần đảm bảo rằng phần cứng của mình hỗ trợ công nghệ ảo hóa, tức

là CPU thuộc dòng Intel VT hoặc AMD-V

Phần minh họa sau chúng tôi sử dụng hostname server1.example.com, địa chỉ IP của KVM host là 192.168.0.100

Toàn bộ các lệnh dưới đây cần được chạy dưới quyền root, vì vậy bạn hãy trở

thành root trước khi bắt đầu thực hiện:

Trang 2

Sudo su

2 Cài đặt KVM và vmbuilder

Trước khi tiến hành, bạn cần xác định xem CPU của mình có hỗ trợ ảo hóa phần cứng hay không:

egrep '(vmx|svm)' color=always /proc/cpuinfo

Nếu màn hình hiển thị thông tin dạng như sau:

root@server1:~# egrep '(vmx|svm)'

color=always /proc/cpuinfo

flags : fpu vme de pse tsc msr pae mce cx8 ap

ic sep mtrr pge mca cmov pat pse36 clflush

mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp

lm 3dnowext 3dnow rep_good nopl extd_apicid

pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv

flags : fpu vme de pse tsc msr pae mce cx8 ap

ic sep mtrr pge mca cmov pat pse36 clflush

mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp

lm 3dnowext 3dnow rep_good nopl extd_apicid

pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch lbrv

root@server1:~#

Trang 3

Như vậy là CPU của bạn có hỗ trợ, ngược lại nếu không hiển thị gì thì bạn hãy dừng lại ở đây

Để cài đặt KVM và vmbuilder (một script để khởi tạo hệ thống máy ảo Ubuntu cơ

bản) chúng ta chạy:

apt-get install ubuntu-virt-server python-vm-builder kvm-pxe

Sau đó cần thêm vào user như là đăng nhập hiện tại (root) cho nhóm libvirtd:

adduser `id -un` libvirtd

adduser `id -un` kvm

Bạn cần đăng xuất và đăng nhập lại để các thành viên trong nhóm mới có hiệu lực:

Kiểm tra xem KVM đã cài đặt thành công hay chưa, chạy lệnh:

virsh -c qemu:///system list

Nếu màn hình hiển thị các thông tin như dưới đây chứng tỏ bạn đã thành công:

root@server1:~# virsh -c qemu:///system list

Id Name State

-

root@server1:~#

Ngược lại, nếu có lỗi nào đó hãy thực hiện thêm lần nữa

Tiếp theo chúng ta cần thiết lập một cầu nối cho mạng trên máy chủ (network bridge) để có thể truy cập máy ảo từ xa bằng các host khác nhau như hệ thống vật

lý trong mạng Để làm điều này, chỉ cần cài đặt gói bridge-utils

apt-get install bridge-utils

…và cấu hình một bridge Mở /etc/network/interfaces:

vi /etc/network/interfaces

Trước khi sửa đổi tập tin sẽ trông như sau:

Trang 4

# This file describes the network interfaces available

iface lo inet loopback

# The primary network interface

Bạn tiến hành sửa lại như dưới đây:

# This file describes the network interfaces available

Trang 5

auto lo

iface lo inet loopback

# The primary network interface

Trang 6

Và chạy:

ifconfig

Network bridge (br0) sẽ hiển thị như sau:

root@server1:~# ifconfig

br0 Link encap:Ethernet HWaddr 00:1e:90:f3:f0:02

inet addr:192.168.0.100 Bcast:192.168.0.255 Mask:255.255.255.0

inet6 addr: fe80::21e:90ff:fef3:f002/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:17 errors:0 dropped:0 overruns:0 frame:0

TX packets:17 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:1196 (1.1 KB) TX bytes:1966 (1.9 KB)

eth0 Link encap:Ethernet HWaddr 00:1e:90:f3:f0:02

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

Trang 7

RX packets:35100 errors:0 dropped:0 overruns:

Interrupt:41 Base address:0x6000

lo Link encap:Local Loopback

inet addr:127.0.0.1 Mask:255.0.0.0

inet6 addr: ::1/128 Scope:Host

UP LOOPBACK RUNNING MTU:16436 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0

RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

Trang 8

virbr0 Link encap:Ethernet HWaddr 46:b4:d1:49:75:eb

inet addr:192.168.122.1 Bcast:192.168.122.25

5 Mask:255.255.255.0

UP BROADCAST MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

Bây giờ chúng ta có thể tạo ra máy ảo đầu tiên - image-based VM (nếu bạn muốn

có thật nhiều lượng traffic và các thao tác đọc – ghi cho máy ảo, hãy sử dụng một

LVM-based VM như mục 6 sau đây sẽ giới thiệu Image-based VM gây nặng cho

đĩa cứng IO)

Trang 9

Ở đây tôi muốn tạo máy ảo của mình trong thư mục /var/lib/libvirt/images/ (không thể tạo trong /root bởi user libvirt-qemu không có quyền đọc trong thư thư mục

already exists (trừ khi bạn chạy vmbuilder với đối số dest=DESTDIR):

root@server1:/var/lib/libvirt/images/vm1# vmbuilder kvm ubuntu -c vm2.cfg

2009-05-07 16:32:44,185 INFO Cleaning up

ubuntu-kvm already exists

root@server1:/var/lib/libvirt/images/vm1#

Chúng tôi sử dụng công cụ vmbuilder để tạo các máy ảo (tìm hiểu thêm vmbuilder

tại đây) Vmbuilder sử dụng một template để tạo máy ảo – template này nằm

trong thư mục /etc/vmbuilder/libvirt/ Đầu tiên ta tạo một bản sao:

Trang 10

-

/var 20000

Như vậy phân vùng root (/) được xác định với kích thước 8000MB, một phân

vùng swap 4000MB, và một phân vùng /var với 20000MB Dòng - có tác dụng

làm cho các phân vùng bên dưới nó (ở đây là /var) là một ảnh đĩa riêng biệt Tức

là tạo ra hai ảnh đĩa, một cho root và swa, một cho /var Tất nhiên, bạn được tự do

định nghĩa bất cứ phân vùng nào mình thích (miễn là bao gồm cả root và swap)

Tôi muốn cài đặt openssh-server trong VM Để đảm bảo rằng mỗi VM có một

OpenSSH key duy nhất, chúng ta không thể cài đặt openssh-server khi tạo VM Vì

vậy giải pháp là tạo một script có tên boot.sh để thực thi khi khởi động VM lần

đầu tiên Nó sẽ cài đặt openssh-server (với một key duy nhất) và có hiệu lực với

user (ở đây sử dụng username mặc định là administrator với mật khẩu mặc định quantrimang) để thay đổi mật khẩu khi đăng nhập lần đầu tiên

Trang 11

Lưu ý thay đổi username administrator với tên đăng nhập mặc định của bạn (Xem

thêm tại đây) Hoặc bạn cũng có thể định nghĩa một script "first login" tại đây

Bây giờ hãy nhìn vào:

vmbuilder kvm ubuntu –help

để tìm hiểu thêm về các tùy chọn có sẵn

Tiếp theo, tạo VM đầu tiên, vm1, chúng ta vào thư mục VM…

Hầu hết các tùy chọn là tự nó giải thích part quy định cụ thể các tập tin với chi

tiết các phân vùng, có liên quan tới thư mục đang hoạt động (đó là lý do tại sao

chúng ta cần đi tới thư mục VM trước khi chạy vmbuilder) templates quy định

cụ thể thư mục lưu giữ tập tin template (liên quan tới thư mục đang hoạt động), và

firstboot quy định script cho lần khởi động đầu tiên libvirt=qemu:///system

sẽ “nói” cho KVM để thêm VM này vào danh sách máy ảo có sẵn addpkg cho

phép bạn chỉ định các gói Ubuntu muốn cài đặt trong quá trình khởi tạo VM (đây

là lý do tại sao không nên thêm openssh-server vào danh sách và sử dụng script để

Trang 12

thay thế) bridge thiết lập một bridge network; như bridge br0 mà chúng ta đã

tạo trong mục 2 Bây giờ là lúc xác định bridge

Trong dòng mirror bạn có thể chỉ định một kho lưu trữ chính thức của Ubuntu,

chẳng hạn http://de.archive.ubuntu.com/ubuntu Nếu bỏ qua mirror, Ubuntu sẽ

sử dụng kho mặc định (http://archive.ubuntu.com/ubuntu)

Quá trình xây dựng có thể mất vài phút Sau đó bạn sẽ tìm thấy tập tin cấu hình

XML cho VM trong /etc/libvirt/qemu/ (=> /etc/libvirt/qemu/vm1.xml):

Các ảnh đĩa được đặt trong ubuntu-kvm/ - thư mục con của thư mục VM:

Trang 13

(Lưu ý rằng bạn không thể tạo một thư mục mới cho VM

(/var/lib/libvirt/images/vm2) nếu truyền đối số -d DESTDIR cho lệnh vmbuilder

– nó cho phép bạn tạo một VM mới trong thư mục đã tạo VM khác Trong trường

hợp đó không cần tạo mới tập tin vmbuilder.partition và boot.sh, cũng không cần

chỉnh sửa template, nhưng có thể dễ dàng sử dụng các tập tin đã tồn tại:

Trang 14

templates=mytemplates user=administrator

name=Administrator pass=howtoforge addpkg=vimnox -addpkg=unattended-upgrades addpkg=acpid

-firstboot=/var/lib/libvirt/images/vm1/boot.sh mem=256 hostname=vm2 bridge=br0 -d vm2-kvm

)

5 Quản trị máy ảo

Các máy cảo có thể được quản trị thông qua virsh, là một "virtual shell" Để kết

nối tới virtual shell ta chạy:

virsh connect qemu:///system

virtual shell sẽ trông như sau:

root@server1:~# virsh connect qemu:///system

Welcome to virsh, the virtualization interactive

Trang 15

attach-device attach attach-device from an XML file

attach-disk attach disk device

attach-interface attach network attach-interface

autostart autostart a domain

blkiotune Get or set blkio parameters

console connect to the guest console

cpu-baseline compute baseline CPU

Trang 16

detach-disk detach disk device

detach-interface detach network detach-interface

domid convert a domain nam

domname convert a domain id

or UUID to domain name

domuuid convert a domain nam

Trang 17

dumpxml domain information i

n XML

edit edit XML configurati

on for a domain

inject-nmi Inject NMI to the guest

managedsave managed save of a domain state

managedsave-remove Remove managed save of a domain

maxvcpus connection vcpu maximum

memtune Get or set memory parameters

migrate migrate domain to another host

migrate-setmaxdowntime set maximum tolerable downtime

reboot reboot a domain

restore restore a domain fro

m a saved state in a file

Trang 18

resume resume a domain

save save a domain state

to a file

schedinfo show/set scheduler parameters

screenshot take a screenshot of

a current domain console and store it into a file

setmaxmem change maximum memor

suspend suspend a domain

ttyconsole tty console

undefine undefine an inactive domain

Trang 19

update-device update update-device from an XML file

vcpucount domain vcpu counts

vcpuinfo detailed domain vcpu information

vcpupin control domain vcpu affinity

version show version

vncdisplay vnc display

Domain Monitoring (help keyword 'monitor'):

domblkinfo domain block device size information

domblkstat get device block sta

ts for a domain

domifstat get network interfac

e stats for a domain

dominfo domain information

dommemstat get memory statistic

s for a domain

domstate domain state

Trang 20

list list domains

Host and Hypervisor (help keyword 'host'):

capabilities capabilities

connect (re)connect to hypervisor

freecell NUMA free memory

hostname print the hypervisor hostname

nodeinfo node information

qemu-monitor-command Qemu Monitor Command

sysinfo print the hypervisor sysinfo

uri print the hypervisor canonical URI

Interface (help keyword 'interface'):

iface-begin create a snapshot of current interfaces settings, which can be later commited (iface-commit) or restored (iface-rollback)

Trang 23

Networking (help keyword 'network'):

net-autostart autostart a network

net-info network information

net-list list networks

net-name convert a network UUID to network name

Trang 24

nodedev-create nodedev-create a device defined by an XM

L file on the node

Trang 25

nodedev-reattach nodedev-reattach node device to its devi

ce driver

nodedev-reset reset node device

Secret (help keyword 'secret'):

secret-get-value Output a secret secret-get-value

secret-list list secrets

secret-set-value set a secret value

secret-undefine undefine a secret

Snapshot (help keyword 'snapshot'):

snapshot-create Create a snapshot

snapshot-current Get the snapshot-current snapshot

Trang 26

snapshot-revert Revert a domain to a snapshot

Storage Pool (help keyword 'pool'):

find-storage-pool-sources-as find potential storage pool sources

find-storage-pool-sources discover potential storage pool find-storage-pool-sources

pool-autostart autostart a pool

pool-build build a pool

Trang 27

pool-delete delete a pool

pool-destroy destroy a pool

pool-info storage pool pool-information

pool-list list pools

Trang 28

Storage Volume (help keyword 'volume'):

vol-clone clone a volume

Trang 29

vol-name returns the volume vol-name for

a given volume key or path

vol-path returns the volume vol-path for

a given volume name or key

vol-pool returns the storage vol-pool for

a given volume key or path

vol-upload vol-upload a file into a volume

vol-wipe wipe a vol

Virsh itself (help keyword 'virsh'):

Trang 30

cd change the current directory

echo echo arguments

exit quit this interactiv

e terminal

help print help

pwd print the current directory

quit quit this interactiv

Để hiển thị toàn bộ máy ảo đang và không hoạt động:

virsh # list all

Trang 31

Trước khi khởi động máy ảo mới lần đầu tiên, bạn cần định nghĩa nó từ tập tin xml

trong thư mục /etc/libvirt/qemu/:

define /etc/libvirt/qemu/vm1.xml

Lưu ý rằng bất cứ khi nào chỉnh sửa tập tin xml của máy ảo trong

/etc/libvirt/qemu/ bạn đều phải chạy lại lệnh define

Bây giờ chúng ta đã có thể khởi động VM:

start vm1

Sau một vài khoảnh khắc, bạn có thể kết nối tới VM với SSH client như PuTTY;

đăng nhập với username và password mặc định Lần đăng nhập đầu tiên bạn sẽ được yêu cầu thay đổi password

Trang 32

resume vm1

Trên đây là những lệnh quan trọng nhất bạn cần ghi nhớ Thoát khỏi virtual shell:

Quit

6 Tạo một LVM-Based VM

LVM-Based VM có một số ưu điểm hơn các image-based VM Chúng không gây

nặng ổ cứng IO và dễ dàng sao lưu bằng cách sử dụng LVM snapshots

Để có thể sử dụng LVM-based VM, bạn cần một nhóm volume có không gian hợp

lý và chưa được phân bố cho bất kỳ volume vật lý nào Ở đây chúng tôi dùng /dev/vg0 với kích thước khoảng 465GB

Trang 33

Total PE 119109

Alloc PE / Size 24079 / 94.06 GiB

Free PE / Size 95030 / 371.21 GiB

VG UUID NQOLhN-wBWi-pUdD-el7p-TADJ-fJGd-3ALJbf

root@server1:~#

… có chứa khối vật lý /dev/vg0/root với kích thước khoảng 100GB và

/dev/vg0/swap_1 kích thước 1GB – phần còn lại không được phân bố và có thể sử

dụng cho các máy ảo:

Trang 34

LV Write Access read/write

Bây giờ chúng ta tạo máy ảo vm5 như một LVM-based VM Chúng ta có thể dùng

lại lệnh vmbuilder Vmbuilder biết rõ tùy chọn raw cho phép ghi máy ảo tới một

thiết bị block (ví dụ /dev/vg0/vm5) – và không có lỗi nào xảy ra Tuy nhiên bạn

không thể khở động máy ảo trên, do đó cần tạo một vm5 như image-based VM

đầu tiên và sau đó chuyển đổi sang LVM-based VM

mkdir -p

/var/lib/libvirt/images/vm5/mytemplates/libvirt

cp /etc/vmbuilder/libvirt/*

/var/lib/libvirt/images/vm5/mytemplates/libvirt/

Hãy chắn rằng bạn đã tạo toàn bộ phân vùng trong một file ảnh, vì vậy không cần

sử dụng - trong tập tin vmbuilder.partition:

Ngày đăng: 18/02/2014, 09:20

HÌNH ẢNH LIÊN QUAN

Sử dụng lệnh qemu-img để chuyển đổi hình ảnh sang LVM-based VM. Trước tiên hãy đi tới thư mục ubuntu-kvm/ của VM… - Tài liệu Ảo hóa với KVM trên Ubuntu 11.10 pptx
d ụng lệnh qemu-img để chuyển đổi hình ảnh sang LVM-based VM. Trước tiên hãy đi tới thư mục ubuntu-kvm/ của VM… (Trang 35)
Tiếp theo chúng ta cần thay đổi cấu hình của VM: virsh edit vm5 - Tài liệu Ảo hóa với KVM trên Ubuntu 11.10 pptx
i ếp theo chúng ta cần thay đổi cấu hình của VM: virsh edit vm5 (Trang 36)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w