KVM 管理與使用說明

Centos7 上安裝KVM

步驟如下:

1. CPU支持虛擬化

現在的CPU基本都支持虛擬化

2. 虛擬機設置內存3G,增加一個50G的虛擬機磁盤,處理器2核,虛擬化引擎兩個虛擬化相關的選項打上勾(我這裏全打)

# 確認一下內存

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           2.8G        108M        2.5G        8.6M        198M        2.5G
Swap:          1.0G          0B        1.0G

# CPU
[root@localhost ~]# grep "processor" /proc/cpuinfo
processor	: 0
processor	: 1

3.關閉iptables或firewalld

// iptables關閉
systemctl status iptables // 查看狀態
systemctl stop iptables // 關閉
systemctl list-unit-files|grep iptables // 查看是否是開機啓動
systemctl disable iptables // 關閉開機啓動

// firewalld關閉
firewall-cmd --state // 查看狀態
systemctl stop firewalld // 關閉
systemctl start firewalld // 開啓

4.關閉selinux

5.格式化新磁盤,掛載到/kvm_data

fdisk -l // 查看新磁盤信息

mkfs.ext4 /dev/sdb // 格式化磁盤

blkid /dev/sdb // 檢查格式化後的磁盤
/dev/sdb: UUID="0cffd9c7-626c-4522-a749-75d343b5915c" TYPE="ext4"

// 創建目錄並掛載
[root@localhost ~]# mkdir /kvm_data
[root@localhost ~]# mount /dev/sdb /kvm_data/

// 開機啓動掛載磁盤
echo '/dev/sdb        /kvm_data         ext4    defaults        0 0' >> /etc/fstab

// 檢查
tail -1 /etc/fstab
/dev/sdb        /kvm_data         ext4    defaults        0 0

7.檢查cpu參數是否支持虛擬化

grep -Ei 'vmx|svm' /proc/cpuinfo

// vmx 是因特爾的CPU
// svm 是 AMD的CPU
// 有表示支持虛擬化

8.安裝kvm

yum install -y virt-* libvirt bridge-utils qemu-img

配置網卡

橋接網卡配置

1. 配置網卡,增加橋接網卡

cp ifcfg-ens33 ifcfg-br0 // ifcfg-br0 爲橋接網卡
cp ifcfg-ens33 ifcfg-ens33.bak // 備份配置文件

2. 設置一個br0網卡,TYPE爲Bridge,IP地址設置爲ens33的ip

// ifcfg-br0
TYPE=Bridge // 橋接網卡
BOOTPROTO=none
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=10.0.0.210
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5

3. ens33配置文件裏把IP地址去掉,增加BRIDGE=br0

// ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0 // 增加 表示橋接到哪裏去

4. 啓動libvirtd服務

// 啓動服務
systemctl start libvirtd

// 檢查狀態
systemctl status libvirtd

// 或查看進程
ps aux|grep libvirt


5. brctl show 可以看到兩個網卡br0和virbr0

[root@localhost network-scripts]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.000c29e02ab6	no		ens33
virbr0		8000.5254000d904e	yes		virbr0-nic
// 查看橋接網卡的

創建虛擬機安裝centos7

1. 上傳一個centos7 ISO文件

2. 安裝虛擬機
virt-install \
--name=xxxxx01 \ // 定義虛擬機的名字
--memory=512,maxmemory=1024 \ // 定義內存大小 最大1024 支持熱調整
--vcpus=1,maxvcpus=2 \ // 指定CPU1核,最大2核
--os-tyep=linux \ // 操作系統類型是Linux
--os-variant=rhel7 \ // 具體版本 rhel7 表示centos7
--location=/tmp/Centxx.iso \ // 指定ISO文件路徑
--disk path=/kvm_data/xxx.img,size=10 \ // 虛擬機安裝路徑
--bridge=br0 \ // 定義橋接網卡是哪個
--graphics=none \ // 定義是否開啓圖形
--console=pty,target_type=serial \ // 定義終端及相關的屬性
--extra-args="console=tty0 console=ttyS0"

virt-install --name=kvm_03_10 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1708.iso --disk path=/kvm_data/kvm_03_10_20181216.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"

// 語言設置
// [!] 感嘆號表示需要設置
1) [!] Language settings
68)  Chinese
1)  Simplified Chinese

// 選擇時區
2) [!] Time settings
1)  Set timezone
2)  Asia
64)  Shanghai

// 安裝位置
5) [!] Installation Destination
[x] 1) : 10 GiB (vda)
[x] 2) Use All Space
[x] 1) Standard Partition

// 設置root密碼
8) [!] Root password

表示安裝結束了 直接按回車返回退出 或者  直接Ctrl + ] 退出終端 進行操作

虛擬機管理

// 安裝完虛擬機需要重啓,要退出虛擬機使用快捷鍵ctrl + ]
ps aux|grep kvm // 查看kvm進程

virsh list // 查看虛擬機列表,只能看到運行的虛擬機

virsh list --all // 查看虛擬機列表,只能看運行的虛擬機

virsh console 虛擬機名稱 // 進入指定虛擬機

virsh shutdown 虛擬機名稱 // 關閉虛擬機

virsh start 虛擬機名稱 // 開啓虛擬機

virsh destroy 虛擬機名稱 // 強制停止 虛擬機

virsh undefine 虛擬機名稱 // 徹底銷燬虛擬機,會刪除虛擬機配置文件

ls /etc/libvirt/qemu/ // 可以查看虛擬機配置文件

virsh autostart 虛擬機名稱 // 宿主機開機該虛擬機也開機

virsh autostart --disable 虛擬機名稱 // 禁止開機啓動

virsh suspend 虛擬機名稱 // 掛起

virsh resume 虛擬機名稱 // 恢復

dhclient eth0 //自動獲取IP地址

克隆虛擬機

virsh shutdown 虛擬機名稱 //關閉虛擬機

// 克隆虛擬機
virt-clone --original 虛擬機名稱 --name 虛擬機名稱02 --file /kvm_data/虛擬機名稱02.img

--original // 指定克隆源虛擬機
--name // 指定克隆後的虛擬機名字
--file // 指定目標虛擬機的虛擬機磁盤文件
如果 xxx01 虛擬機開機狀態,則提示先關閉或暫停虛擬機

快照管理

virsh snapshot-create kvm_01_10 // 創建快照
// raw格式的虛擬磁盤不支持做快照,qcow2支持

[root@kvm_test_210 ~]# qemu-img info /kvm_data/kvm_01_10.img // 查看kvm_01_10.img信息,同時會檢查看到快照列表
image: /kvm_data/kvm_01_10.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 1.4G // 實際使用量
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1544963687             238M 2018-12-16 20:34:47   00:46:22.217
Format specific information:
    compat: 1.1
    lazy refcounts: true
[root@kvm_test_210 ~]# df -h
```
/dev/sdb                  50G  2.7G   44G    6% /kvm_data
```
[root@kvm_test_210 ~]# du -sh /kvm_data/*
1.5G	/kvm_data/kvm_01_10.img
1.3G	/kvm_data/kvm_03_10_20181216.img
16K	/kvm_data/lost+found
[root@kvm_test_210 ~]# ll -h /kvm_data/*
-rw------- 1 qemu qemu 1.5G 12月 16 20:37 /kvm_data/kvm_01_10.img
-rw------- 1 root root  11G 12月 16 19:46 /kvm_data/kvm_03_10_20181216.img

/kvm_data/lost+found:
總用量 0

virsh snapshot-list kvm_01_10 // 列出所有快照

virsh snapshot-current kvm_01_10 // 查看當前快照版本

ls /var/lib/libvirt/qemu/snapshot/kvm_01_10 // 查看所有快照配置文件

virsh snapshot-revert kvm_01_10 1544963687 // 恢復指定快照

virsh snapshot-delete kvm_01_10 1544963687 // 刪除快照

磁盤格式

虛擬磁盤常用格式raw、qcow2

[root@kvm_test_210 ~]# qemu-img create -f raw /kvm_data/kvm_01_10_2.img 2G // 創建2G的raw格式磁盤
Formatting '/kvm_data/kvm_01_10_2.img', fmt=raw size=2147483648

[root@kvm_test_210 ~]# qemu-img info /kvm_data/kvm_01_10_2.img //查看虛擬磁盤格式
image: /kvm_data/kvm_01_10_2.img
file format: raw
virtual size: 2.0G (2147483648 bytes)
disk size: 0

把raw格式的磁盤轉換爲qcow2格式

qemu-img convert -O qcow2 /kvm_data/kvm_01_10_2.img /kvm_data/kvm_01_10_2.qcow2

// -O 指定目標格式
// /kvm_data/kvm_01_10_2.img 源文件
// /kvm_data/kvm_01_10_2.qcow2 目標文件

// 轉換後用ll -h查看磁盤文件的大小,可以看到qcow2文件比較小,raw文件大小和指定空間大小一樣是2G
[root@kvm_test_210 ~]# ll -h /kvm_data/*
-rw-r--r-- 1 root root 2.0G 12月 16 21:01 /kvm_data/kvm_01_10_2.img
-rw-r--r-- 1 root root 193K 12月 16 21:06 /kvm_data/kvm_01_10_2.qcow2
[root@kvm_test_210 ~]# du -sh /kvm_data/*
0    	/kvm_data/kvm_01_10_2.img
196K	/kvm_data/kvm_01_10_2.qcow2

// raw格式的磁盤性能比qcow2要好,但是raw格式的磁盤無法做快照

給 kvm_01_10 轉換爲raw格式的磁盤

virsh shutdown kvm_01_10

qemu-img convert -O raw /kvm_data/kvm_01_10.img /kvm_data/kvm_01_10_3.raw

virsh edit kvm_01_10 //更改格式和文件路徑
<driver name='qemu' type='raw'/>
<source file='/kvm_data/kvm_01_10_3.raw'/>

// ll /kvm_data/kvm_01_10_3.raw 查看屬主屬組 是root
-rw-r--r-- 1 root root  10G 12月 16 21:14 /kvm_data/kvm_01_10_3.raw

virsh start kvm_01_10

// 啓動後改變成qemu 證明換完了文件
-rw-r--r-- 1 qemu qemu 10737418240 12月 16 21:22 kvm_01_10_3.raw

磁盤擴容(raw)

// 磁盤擴容 - raw格式
qemu-img resize /kvm_data/kvm_01_10_3.raw +2G // 加2G

[root@kvm_test_210 ~]# qemu-img info /kvm_data/kvm_01_10_3.raw
image: /kvm_data/kvm_01_10_3.raw
file format: raw
virtual size: 12G (12884901888 bytes) //12G
disk size: 1.2G

// 只有重啓後才能生效,命令如下
virsh destroy kvm_01_10 || virsh shutdown kvm_01_10(推薦)

virsh start kvm_01_10

virsh console kvm_01_10

fdisk -l // 查看磁盤情況,並分新的分區
// 除了對已有磁盤擴容外,還可以額外增加磁盤
// fdisk /dev/vda; p n p  默認剩餘空間

// 增加硬盤的方式
[root@kvm_test_210 ~]# qemu-img create -f raw /kvm_data/kvm_01_10_2.raw 5G
Formatting '/kvm_data/kvm_01_10_2.raw', fmt=raw size=5368709120

virsh edit kvm_01_10 // 增加<disk>...</disk>, 注意更改source、target、slot
```
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/kvm_data/kvm_01_10_2.raw'/>
      <target dev='vdb' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </disk>
```

virsh destroy kvm_01_10

virsh start kvm_01_10

磁盤擴容(qcow2)

qemu-img resize /kvm_data/kvm_01_10.img +2G
// 若提示qemu-img:Can't resize an image which has snapshots,需要刪除快照

qemu-img info /kvm_data/kvm_01_10.img

virsh destroy kvm_01_10

virsh start kvm_01_10

virsh console kvm_01_10

fdisk -l // 查看磁盤情況,並分新的分區
// 除了對已有磁盤擴容外,還可以額外增加磁盤

qemu-img create -f qcow2 /kvm_data/kvm_01_10_2.img 5G

virsh edit kvm_01_10 //增加<disk>...</disk>, 注意更改source、target、slot

virsh destroy kvm_01_10

virsh start kvm_01_10

調整cpu內存和網卡

[root@kvm_test_210 ~]# virsh dominfo kvm_01_10 // 查看配置
Id:             4
名稱:       kvm_01_10
UUID:           f1bede97-3068-4f6c-9bd0-ac055890a0c9
OS 類型:    hvm
狀態:       running
CPU:          1
CPU 時間:   31.0s
最大內存: 1048576 KiB
使用的內存: 524288 KiB
持久:       是
自動啓動: 禁用
管理的保存: 否
安全性模式: none
安全性 DOI: 0

// 第一種方法:可以通過修改配置文件參數來調整內存、CPU
virsh edit kvm_01_10 // 更改如下部分內容
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static' current='1'>2</vcpu>

// 有啓動需要關閉
virsh shutdown kvm_01_10

virsh start kvm_01_10

// 第二種方式:動態調整 注意不能大於最大內存和最大CPU數
virsh setmem kvm_01_10 800m // 動態調整內存

virsh dumpxml kvm_01_10 > /etc/libvirt/qemu/kvm_01_10.xml // 需要把配置寫入到配置文件裏
// 需要重啓才能加載配置文件 不然讀取的是當前緩存文件

virsh setvcpus kvm_01_10 2 // 動態調整CPU數量 不能減小

[root@kvm_test_210 ~]# virsh domiflist kvm_01_10 // 查看網卡
接口     類型     源        型號      MAC
-------------------------------------------------------
vnet0      bridge     br0        virtio      52:54:00:77:31:1f

virsh attach-interface kvm_01_10 --type bridge --source virbr0
// 增加一塊新的網卡,並設置爲nat網絡模式(virbr0類似vmware的vmnet8),
// 這裏如果寫--source br0, 則網絡模式爲橋接

virsh dumpxml kvm_01_10 >/etc/libvirt/qemu/kvm_01_10.xml
// 需要把配置寫入到配置文件裏

遷移虛擬機

該方式要確保虛擬機是關機狀態

virsh shutdown kvm_01_10

virsh dumpxml kvm_01_10 >/etc/libvirt/qemu/kvm_01_3.xml
// 如果是遠程機器,需要把該配置文件拷貝到遠程機器上

virsh domblklist kvm_01_10 // 查看虛擬機磁盤所在目錄

rsync -av /kvm_data/kvm_01_10.img /kvm_data/kvm_01_3.img
// 如果是遷移到遠程,則需要把磁盤文件拷貝到遠程機器上

vi /etc/libvirt/qemu/kvm_01_3.xml // 因爲是遷移到本機
// 配置文件用的是kvm_01_10的配置,不改會有衝突,
// 所以需要修改配置文件,如果是遠程機器不用修改

# 修改
domname: <name>kvm_01_3</name>
uuid(隨便改一下數字,位數不要變)
# 修改磁盤路徑
virsh define /etc/libvirt/qemu/kvm_01_3.xml // 定義新虛擬機

virsh list --all // 會發現新遷移的kvm_01_3虛擬機


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章